Puede comenzar con la siguiente imagen de alto nivel del campo.
Problema que estamos tratando de resolver : dados algunos datos, el objetivo del aprendizaje automático es encontrar patrones en los datos. Hay varios entornos, como el aprendizaje supervisado, el aprendizaje no supervisado, el aprendizaje de refuerzo, etc. Pero el más común es el aprendizaje supervisado; así que nos centraremos solo en eso en el panorama general. Aquí, se le dan datos etiquetados [llamados “datos de entrenamiento”], y desea inferir etiquetas en nuevos datos [llamados “datos de prueba”]. Por ejemplo, considere los autos sin conductor. Los datos etiquetados incluirían la imagen de la carretera por delante en una instancia particular como se ve desde el automóvil, y la etiqueta correspondiente sería el ángulo de dirección [supongamos que la velocidad se controla manualmente, por simplicidad]. El objetivo del automóvil autónomo es que, dada una nueva imagen de la carretera, el sistema debería poder determinar el ángulo de dirección óptimo.
Cómo resolver : La mayor parte del aprendizaje automático supervisado se puede ver utilizando el siguiente marco: se le dan puntos de datos de capacitación [matemática] (x_1, y_1), \ ldots, (x_n, y_n) [/ matemática], donde [matemática] x_i [/ math] son los datos [por ejemplo, imagen de la carretera en el ejemplo anterior], y [math] y_i [/ math] es la etiqueta correspondiente. Desea encontrar una función [math] f [/ math] que se ajuste bien a los datos, es decir, dado [math] x_i [/ math], genera algo lo suficientemente cercano a [math] y_i [/ math]. Ahora, ¿de dónde sacas esta función [matemáticas] f [/ matemáticas]? Una forma, que es la más común en ML, es definir una clase de funciones [math] \ mathcal {F} [/ math], y buscar en esta clase la función que mejor se ajuste a los datos. Por ejemplo, si desea predecir el precio de un apartamento en función de características como el número de habitaciones, el número de baños, el área cubierta, etc., puede suponer razonablemente que el precio es una combinación lineal de todas estas características, en cuyo caso, la clase de función [math] \ mathcal {F} [/ math] se define como la clase de todas las funciones lineales. Para los autos sin conductor, la clase de función [math] \ mathcal {F} [/ math] que necesita será mucho más compleja.
Cómo evaluar : Tenga en cuenta que simplemente ajustar los datos de entrenamiento no es suficiente. Los datos son ruidosos, por ejemplo, todos los apartamentos con la misma cantidad de habitaciones, la misma cantidad de baños y la misma área cubierta no tienen el mismo precio. Del mismo modo, si etiqueta los datos de los automóviles autónomos, puede esperar cierta aleatoriedad debido al conductor humano. Lo que necesita es que su marco de trabajo pueda extraer el patrón e ignorar el ruido aleatorio. En otras palabras, debería funcionar bien en datos invisibles . Por lo tanto, la forma de evaluar los modelos es guardar una parte de los datos de entrenamiento [llamado “conjunto de validación”] y predecir sobre estos datos para medir qué tan bueno es su modelo.
Ahora, independientemente de lo que estudies en el aprendizaje automático, debes tratar de relacionar los temas con el panorama general anterior. Por ejemplo, en la regresión lineal, la clase de función es lineal y el método de evaluación es la pérdida cuadrada, en SVM lineal, la clase de función es lineal y el método de evaluación es la pérdida de bisagra, y así sucesivamente. Primero entienda estos algoritmos a alto nivel. Luego, entra en los detalles técnicos. Verá que encontrar la mejor función [matemática] f [/ matemática] en la clase de función [matemática] \ matemática {F} [/ matemática] a menudo resulta en un problema de optimización, para lo cual utiliza el descenso de gradiente estocástico.
Ahora, con ese panorama general, puede comenzar con los requisitos previos de la siguiente manera. Para tener una base matemática básica, debe tener algún conocimiento de los siguientes conceptos matemáticos:
– Probabilidades y estadísticas
– Álgebra lineal
– Optimización
– Cálculo multivariable
– Análisis funcional (no esencial)
– Lógica de primer orden (no esencial)
Puede encontrar material razonable sobre la mayoría de estos buscando “notas de conferencia ” en Google. Por lo general, encontrará buenas notas de clase compiladas por un profesor que enseña ese curso. Los primeros resultados deberían darle un buen conjunto para elegir.
Hojea estos. No es necesario que los revise con mucho detalle. Puede volver a estudiar matemáticas cuando sea necesario mientras aprende ML.
Luego, para obtener una descripción general rápida de ML, puede seguir la hoja de ruta a continuación (he escrito sobre muchos de estos temas en varias respuestas sobre Quora; he vinculado los más relevantes para una referencia rápida).
Día 1:
- Configuraciones más comunes: configuración supervisada, configuración no supervisada, configuración semi-supervisada, aprendizaje de refuerzo.
- Problemas más comunes: Clasificación (binaria y multiclase), Regresión, Agrupación.
- Preprocesamiento de datos: normalización de datos.
- Conceptos de conjuntos de hipótesis, error empírico, error verdadero, complejidad de conjuntos de hipótesis, regularización, compensación de sesgo-varianza, funciones de pérdida, validación cruzada.
Dia 2:
- Conceptos básicos de optimización:
- Terminología y conceptos básicos: optimización convexa, lagrangiana, problemas primarios-duales, gradientes y subgraduados, [math] \ ell_1 [/ math] y [math] \ ell_2 [/ math] funciones objetivo regularizadas.
- Algoritmos: descenso de gradiente por lotes y descenso de gradiente estocástico, descenso de gradiente coordinado.
- Implementación: escriba código para el descenso de gradiente estocástico para una función objetivo simple, ajuste el tamaño del paso y obtenga una intuición del algoritmo.
Día 3:
- Regresión logística
- Máquinas de vectores de soporte: intuición geométrica, formulaciones primarias-duales, noción de vectores de soporte, truco del núcleo, comprensión de hiperparámetros, búsqueda en cuadrícula.
- Herramienta en línea para SVM: juegue con esta herramienta SVM en línea (desplácese hacia abajo hasta “Interfaz gráfica”) para tener una idea del algoritmo.
Día 4:
- Regresión de cresta
- algoritmo k-means y Expectation-Maximization.
- Agrupación jerárquica de arriba hacia abajo y de abajo hacia arriba.
Dia 5:
- Terminología básica: Prioridades, posteriores, probabilidad, estimación de máxima probabilidad e inferencia máxima a posteriori.
- Modelos de mezcla gaussiana
- Asignación de Dirichlet latente: El modelo generativo y la idea básica de la estimación de parámetros.
Día 6:
- Terminología básica: redes bayesianas, redes de Markov / campos aleatorios de Markov.
- Algoritmos de inferencia: eliminación de variables, propagación de creencias.
- Ejemplos simples: Modelos ocultos de Markov. Modelo ising.
Días 7–8:
- Terminología básica: neurona, función de activación, capa oculta.
- Redes neuronales convolucionales: capa convolucional, capa de agrupación, retropropagación.
- Redes neuronales basadas en memoria: redes neuronales recurrentes, memoria a corto y largo plazo.
- Tutoriales: estoy familiarizado con este tutorial de la antorcha (querrá consultar el directorio [math] \ texttt {1_supervised} [/ math]). Puede haber otros tutoriales en otros marcos de aprendizaje profundo.
Día 9:
- Árboles de decisión
- Sistemas de recomendación
- Procesos de decisión de Markov
- Bandidos multi-armados
Día 10: (día de presupuesto)
- Puede usar el último día para ponerse al día con lo que queda de días anteriores, o aprender más sobre cualquier tema que le parezca más interesante / útil para su trabajo futuro.
Una vez que haya pasado por lo anterior, querrá comenzar con un curso en línea estándar o un texto de aprendizaje automático. El curso de Andrew Ng sobre Coursera es un buen punto de partida. Una versión avanzada del curso está disponible en The Open Academy (Machine Learning | The Open Academy). Los libros populares con los que tengo experiencia son los siguientes:
- Reconocimiento de patrones y aprendizaje automático: Christopher Bishop
- Aprendizaje automático: una perspectiva probabilística: Kevin P. Murphy
Si bien el libro de Murphy es más actual y más elaborado, creo que Bishop es más accesible para los principiantes. Puedes elegir uno de ellos según tu nivel.
En este punto, debe tener un conocimiento práctico del aprendizaje automático. Más allá de esto, si está interesado en un tema en particular, busque recursos en línea específicos sobre el tema, lea documentos seminales en el subcampo, intente encontrar algunos problemas más simples e impleméntelos.
Es importante implementar algunos algoritmos básicos cuando comience a hacer ML, como el descenso de gradiente, AdaBoost, árboles de decisión, etc. [además de lo que haya implementado en la descripción general de 10 días]. También debe tener cierta experiencia con el preprocesamiento de datos, la normalización, etc. Una vez que haya implementado algunos algoritmos desde cero, para otros algoritmos, debe usar las implementaciones estándar (como LibSVM, Weka, ScikitLearn, etc.) en algunos problemas de juguetes, y obtener una buena comprensión de diferentes algoritmos.
Para el aprendizaje profundo, aquí hay un tutorial del laboratorio de Yoshua Bengio que se escribió en los primeros días del aprendizaje profundo: Tutoriales de aprendizaje profundo. Esto explica las ideas centrales en el aprendizaje profundo, sin entrar en muchos detalles.
Debido a que el aprendizaje profundo es un campo que es más empírico que teórico, es importante codificar y experimentar con modelos. Aquí hay un tutorial en TensorFlow que brinda implementaciones de muchas tareas diferentes de aprendizaje profundo: aymericdamien / TensorFlow-examples. Intente ejecutar los algoritmos y juegue con el código para comprender mejor los conceptos subyacentes.
Finalmente, puede consultar el libro Deep Learning, que explica el aprendizaje profundo de una manera mucho más sistemática y detallada. Para los últimos algoritmos que no están en el libro, deberá consultar los documentos originales.