¿Cómo puede un joven de 16 años comenzar a aprender sobre el aprendizaje automático?

Ok, en el nivel abstracto, las áreas de interés son: sistemas expertos, algoritmos genéticos, redes neuronales

Sistemas expertos: son la forma más simple (y más común) de aprendizaje automático. Si ha visto el programa “Animales” que trata de adivinar en qué animal está pensando, o una clave de identificación de árbol, ha visto un Sistema experto. Es un árbol de preguntas n-ario en el que cada pregunta tiene una respuesta definitiva, y si responde todas las preguntas, entonces tiene una respuesta definitiva o algo nuevo que debe indicarle a la computadora que distinga de la respuesta. No puede haber zonas grises. Para que un sistema experto sea autodidacta, debe tener un medio de prueba en cada nivel y crear una nueva prueba. Como cada prueba concluirá que algún elemento atómico está en un conjunto o no en un conjunto, una nueva prueba es simplemente para un elemento atómico no probado que puede estar presente o ausente en todos los niveles superiores, pero está presente de manera característica en este caso. Si lo desea, cada nivel debe ser linealmente separable y así es como la computadora puede determinar la prueba.

Algoritmos genéticos: establezca el algoritmo inicial, la heurística que se utilizará para modificar ese algoritmo y la métrica mediante la cual se puede medir un algoritmo para determinar la distancia desde el objetivo. Copiar algoritmo, aplicar heurística, calcular métrica, lavar, enjuagar, repetir. Una vez que un algoritmo no logra acercarse lo suficiente, desaparece. Un ejemplo de un algoritmo genético muy simple es el programa AK Bugs de Dewdney para Scientific American. Recomiendo buscar eso. Existen programas más complejos, pero debe comenzar por comprender los fundamentos. Después de eso, todas las formas complejas son solo variantes de un tema. Cuando llegas al final, cualquier Algoritmo Genético individual puede estar más cerca de la meta o más lejos. Es linealmente separable. Estás a un lado de la línea o al otro.

Redes neuronales: una “neurona” tiene cierto número de conexiones. Esto puede ser variable, pero la mayoría de las veces es constante. Cada conexión tiene un peso, que definitivamente variará con el tiempo. Cualquier conexión que tenga una entrada producirá una salida que es igual al valor de entrada (generalmente, pero no siempre, solo 1 o 0) multiplicado por el peso. Estos valores se conectan a una función (que puede ser fija o variable, dependiendo del tipo de red). La salida de esta función se compara con un umbral (que, de nuevo, puede ser fijo o variable, según el tipo de red). Si se alcanza o se supera el umbral, se activan todas las salidas para esa neurona.

Las redes neuronales solo pueden resolver problemas linealmente separables. Interesante con qué frecuencia esto aparece. No importa cuán autoorganizada o sofisticada sea la red, no importa cuán alto poder de polinomio tenga en la función, en última instancia, cada neurona en un estado específico producirá una salida para combinaciones específicas de entrada. Eso significa que puede producir una tabla de verdad. Si puede producir una tabla de verdad, puede producir una expresión booleana. Por lo tanto, toda la red neuronal en un estado específico ES una expresión booleana gigantesca. Que puede simplificar y programar en su Sistema Experto.

Los tres tipos son, por lo tanto, funcionalmente idénticos cuando están en un estado específico. La parte clave de eso es el “estado específico”. Cualquiera de estos puede autoaprendirse y autoconfigurarse. Pueden hacerlo cada vez que los cuestione. Dado que ese es el caso, si construye uno y luego aplica ingeniería inversa a los otros dos para que coincidan, no se garantiza que coincidan por mucho tiempo.

Los tres convergen a diferentes velocidades, pero también en diferentes cosas. Los sistemas expertos convergen entre los más lentos, a un ritmo de una característica identificable de manera única por algún grupo de ejemplos lo suficientemente grande como para que surja una característica identificable de manera única. No puede hacer frente a las anomalías estadísticas, por lo que la única forma de hacerlo confiable es tener un conjunto suficientemente grande de datos de muestra para trabajar. Suponiendo un conjunto suficiente de datos, la convergencia en la notación O es probablemente algo así como O (n ^ 2).

No se garantiza que los algoritmos genéticos converjan en un tiempo finito, pero probablemente lo harán. De algún lote de N mutaciones, M de ellas podría estar más lejos de la meta. Si M = N, no estás progresando. Para un número suficientemente grande de mutaciones y un número suficientemente grande de iteraciones, las probabilidades de M = N son infinitesimales (excepto cuando el problema no es linealmente separable), pero puede suceder. En promedio, esperaría que la convergencia en la notación O sea algo más cercano a O (n log (n)).

Las redes neuronales están garantizadas para converger, en algo. No se garantiza que converjan en lo que desea, a menos que use un conjunto de entrenamiento y propagación inversa. Una vez más, hay una condición: lo que desea debe ser expresable por la red, debe ser separable linealmente. La rapidez con la que convergerá depende de cuántas cosas pueda ajustar y del algoritmo utilizado para realizar el ajuste. Sin embargo, si lo hace bien, las redes neuronales convergerán muy rápido. Siguiendo con la gran O, me sorprendería mucho si encontraras un problema para el que la convergencia no fuera O (n).

En todos los casos, n es el número de divisiones lineales en las que se debe dividir el espacio del problema para caracterizar de manera única absolutamente cada clase de casos que desea distinguir.

En el caso de las redes neuronales, incluso si está utilizando el método de conjunto de entrenamiento, no sabe qué utilizará la red como divisiones lineales. Su conjunto de datos DEBE estar completamente al azar, de modo que no haya correlaciones extrañas que puedan (y lo harán) confundir. No puede parecer simplemente “lo suficientemente aleatorio” para ti, tiene que ser aleatorio. Surgirán variables reales, los parámetros que no importan disminuirán en importancia. La n en la notación Big O, sin embargo, aquí se refiere a toda esa información. La red no tiene una prueba a priori para lo que importa, por lo que n es la suma de todos los parámetros sobre los que toma una decisión.

(Técnicamente hablando, n es siempre el número de parámetros que estos deciden, pero con los dos primeros, está dando algún tipo de regla explícita sobre cómo decidir. Con Neural Networks, es decidir la regla en función de la entrada y, para redes capacitadas: cómo se compara la producción con lo que se espera).

Hay otro punto a considerar. Los sistemas expertos son inherentemente secuenciales. Es la naturaleza de cómo se calculan las nuevas reglas. Tanto los algoritmos genéticos como las redes neuronales son paralelizables en un grado muy alto.

Puede ejecutar tantos GA como desee en diferentes procesadores, no interactúan, evolucionan o mueren.

Con NN, solo tiene una red, pero el estado de una neurona determinada depende solo de sus entradas. Mientras haya operaciones de barrera adecuadas para evitar que se ejecute una neurona antes de que se genere la entrada, nada le impide ejecutar todas las neuronas que no tienen dependencias no resueltas simultáneamente. Tampoco nada le impide paralelizar las funciones, ya sea como una sola instrucción de múltiples datos (la forma más común de cálculo paralelo) o en el nivel del operador matemático, aunque los compiladores no admiten esta última con mucha frecuencia.

Nada de esto requiere muchas matemáticas. El objetivo del aprendizaje automático es hacer que la computadora descubra todo eso. Si puede sumar, restar, multiplicar y dividir, sabrá todo lo que es absolutamente necesario. Podría decirse que, dado que se trata de dividir los espacios problemáticos en dos, puede salirse con solo saber “Sí” y “No”, sin saber nada más. El Álgebra Lineal es útil para algunas optimizaciones, pero nada le impide descubrir un montón de otros que no usan Álgebra Lineal en absoluto.

Esta idea de que el aprendizaje automático es complicado es, bueno, poco precisa. Cuando llega el momento, todo tiene que reducirse a las siete instrucciones escritas por Alan Turing como necesarias y suficientes para todos los problemas computables. Una de esas siete instrucciones es la instrucción de prueba. Si se cumple esta condición, vaya aquí en el programa. Si no es así, siga recto. Cada programa, cada microprocesador, cada procesador de vectores, jamás construido, es incapaz de tomar una decisión más compleja que esa. Eso está garantizado.

¿Qué hay de las matemáticas? La lista de Turing solo tenía tres instrucciones matemáticas: invertir el signo de un valor, restar un valor de otro. hacer que un valor sea igual a otro. Entonces, esencialmente cada operación matemática que realiza en una computadora es una copia o una resta. Cualquier cosa que sepa más allá de eso hará que las cosas sean más fáciles de administrar y más rápidas de ejecutar, pero fundamentalmente nunca podrá hacer más.

Por lo tanto, la complejidad es en gran medida una ilusión causada por no beber suficiente té. Olvídalo. Concéntrate primero en la lógica, hazlo bien. La optimización temprana es un error grave. Una vez que la lógica es correcta, modifíquela como lo desee.

Recomendaría el curso de Andrew Ng, Machine Learning – Stanford University como iniciación. Puede explorar sus intereses desde allí, tal vez, tomar los cursos de especialización, Machine Learning | Coursera. Mientras tanto, puede comenzar a investigar este hilo: ¿Cómo aprendo el aprendizaje automático?

Para empezar, debe tener conocimiento sobre álgebra lineal, probabilidad y estadística, y cálculo. Si lo desea, puedo ayudarlo con las matemáticas como tutor en línea.

Y para que lo sepas, ML es más acerca de las matemáticas, el pensamiento, los algoritmos. La codificación es importante para que pueda experimentar e implementar esos algoritmos, pero eso en sí mismo no es lo que hace ML.

¡Todo lo mejor!

Estoy en la misma situación, y he estado estudiando a través de cursos en Coursera y Edx. Microsoft realiza algunos cursos excelentes, desde los básicos hasta los muy avanzados, y los recomiendo encarecidamente. Todos son gratuitos.

More Interesting

Yoshua Bengio: ¿cuáles son las preguntas abiertas más importantes en el aprendizaje profundo?

¿Cómo puede alguien usar el verano para hacer un gran progreso en su conocimiento en los campos de redes neuronales artificiales y aprendizaje profundo?

¿Por qué las redes neuronales profundas no pueden extraer la estacionalidad de las series de tiempo?

¿Cómo podemos estimar múltiples parámetros de un clasificador?

¿Por qué usamos k-means clustering? ¿Qué usos tiene en un escenario del mundo real?

¿Alguna de las bibliotecas actuales de aprendizaje profundo permite restricciones de monotonicidad?

¿Qué tipo de trabajo, como ingeniero de software, me apoyaría más para convertirme en Ingeniero / Investigador de Aprendizaje Automático más adelante en mi carrera?

Cómo aprender y construir un chatbot inteligente basado en inteligencia artificial como Google Allo desde cero, con un mayor enfoque en el modelo de dominio cerrado basado en la recuperación y el aprendizaje de ML y NLP

¿Cuál es la mejor manera de predecir una clase +/- en un escenario de aprendizaje automático donde tengo k características trinarias y un conjunto de datos del orden de cientos o miles?

¿Cuáles son los ejemplos de redes neuronales profundas extremas (más de 150 capas)?

¿Se puede usar la detección de características / descripción de características para la clasificación de imágenes con redes neuronales artificiales?

Muchas empresas hablan de 'big data' y 'aprendizaje profundo', y siempre ponen estas etiquetas en sus productos. ¿Cuál es el verdadero significado detrás de esto?

Estoy atrapado en la regresión. ¿Qué debo aprender después de esto?

¿Cómo deberías comenzar una carrera en Machine Learning?

Cómo construir una aplicación web con capacidades de aprendizaje automático