ATA Aquí está mi opinión al respecto.
Yo diría, comience con los conceptos básicos del aprendizaje automático y luego amplíe desde allí. Siempre me califico en una escala 2D. (efectivo, peligroso).
Ser eficaz significa esencialmente tener un mayor nivel de conocimiento en su campo y tener suficientes habilidades para resolver un problema. Eso se traduciría en la capacidad de dominar el curso básico de aprendizaje automático Andrew Ng con algún curso práctico de aprendizaje automático de nivel universitario, competente en python, utilizando Scikits-learn, etc. para resolver algunos problemas. Luego aprenda el modelo de programación de reducción de mapas y haga algunos datos básicos y utilice esas tecnologías.
En algún momento, experimentará un límite en lo que puede hacer con las herramientas existentes que tiene.
Aquí es donde quieres profundizar. Para profundizar, aquí están los cursos que recomendaría:
1) Álgebra Lineal
2) Análisis de sistemas probabilísticos y probabilidad aplicada
3) Cursos avanzados de aprendizaje automático (muchos por ahí, pero el mejor que encontré es Aprendizaje automático 2013, Biblioteca de videos de aprendizaje automático, Introducción al aprendizaje automático)
4) Luego profundice en la Escuela de Ingeniería de Stanford, Coursera, Coursera)
Lo anterior es el plan de estudios que seguí que me hizo apreciar este campo. Es realmente fascinante. Si comprende bien las estadísticas, el álgebra lineal y la optimización, comenzará a descomponer las soluciones “estándar” existentes en otros bloques de construcción y apreciará por qué estas cosas son estándar, pero al mismo tiempo, cómo puede modificarlas si alguna suposición en su conjunto de datos no mantener pero se supone un algoritmo particular (por ejemplo, ¿qué pasa si el ruido en su conjunto de datos no es gaussiano y desea resolver un problema de regresión)
- ¿Cómo detectar el idioma de un texto escrito en inglés? ¿Hay una API disponible donde podamos dar el texto como entrada?
- ¿Cuáles son algunas optativas de matemáticas avanzadas útiles para un estudiante universitario en CS (junior) que se inclina hacia el aprendizaje automático para la escuela de posgrado?
- ¿Hay conjuntos de datos abiertos que contengan textos y calificaciones de los usuarios para ellos?
- En TensorFlow, ¿qué es una capa 'densa' y una 'abandonada'?
- ¿Cómo representa doc2vec el vector de características de un documento? ¿Alguien puede explicar matemáticamente cómo se realiza el proceso?
Con respecto a los sistemas distribuidos, diría que simplemente comience a usar una biblioteca de big data existente. Así es como empecé. Comience a usar hadoop o chispa.
Los cursos que recomendaría para sistemas distribuidos son:
1) Página en lintool.github.io (implemente este libro de principio a fin)
2) Algoritmos distribuidos, http://www.ict.kth.se/courses/ID2203
3) Página en stanford.edu
Tuve la suerte de trabajar en un grupo de investigación en mi trabajo anterior (Intel), donde intentaban escalar los algoritmos de aprendizaje automático en sistemas distribuidos y definitivamente, tener personas que entiendan las computadoras desde el silicio es una gran ventaja, pero fue aquí cuando comencé a leer el código fuente de estas tecnologías y luego entendí los detalles del nivel del sistema.
Me he dado cuenta de que no importa si es aprendizaje automático o sistemas distribuidos, siempre es cuando abres el capó, te das cuenta de que la belleza está oculta dentro de la API (ya sea scikit learn o spark). Si admira una biblioteca, comience a contribuir en ella o comience algo.
Todo este proceso, lo califico como “peligroso”.
Tener habilidades en estas dos dimensiones es muy valioso en la industria. Ante un problema, prototipo rápidamente (siendo efectivo) y luego tenga las habilidades para escalar la solución e implementarla en producción …
Espero que ayude y buena suerte.