¿Cuál es la mejor manera de aprender el aprendizaje automático sin tomar ningún curso en línea?
¿Cuál es la mejor manera de empezar a aprender machine learning y deep learning sin tomar ningún curso online? apareció originalmente en Quora: the place to gain and share knowledge, empowering people to learn from others and better understand the world.
Respuesta de Eric Jang, Ingeniero de investigación en Google Brain, en Quora:
Permíteme empezar diciendo que no hay una única «mejor manera» de aprender machine learning, y que debes encontrar un sistema que te funcione bien. Algunas personas prefieren la estructura de los cursos, a otros les gusta leer libros a su propio ritmo, y algunos quieren sumergirse directamente en el código.
Empecé con el curso de Coursera de Aprendizaje Automático de Andrew Ng en 2012, sin saber casi nada de álgebra lineal y nada sobre estadística o aprendizaje automático. Tenga en cuenta que, aunque la clase cubría las redes neuronales, no era un curso sobre Deep Learning. Me gustó mucho cómo el curso formuló el «aprendizaje automático» como nada más que la optimización numérica.
Si los cursos online son demasiado lentos para ti, el mejor recurso consolidado es probablemente el libro Deep Learning de Goodfellow, Bengio y Courville. Tiene unos cuantos capítulos dedicados a los fundamentos (algo así como lo que se cubre en la clase de Ng) y luego salta a las DNNs prácticas.
No se requiere una base estadística/matemática rigurosa para hacer un trabajo útil de Aprendizaje Profundo, pero realmente ayuda a formular hipótesis sobre por qué los modelos están/no están funcionando, y qué podría ayudar. El libro de texto de Aprendizaje Automático Probabilístico de Murphy es una gran base para el ML matemáticamente riguroso (¡y también tiene grandes diagramas!)
Después de terminar el libro de DL, puedes «especializarte» en uno de los subcampos/subcampos del Aprendizaje Profundo, implementando algunos de los trabajos por ti mismo. Algunos temas de ejemplo:
- Aprendizaje Profundo Bayesiano (combinando redes neuronales con modelos gráficos)
- Aprendizaje Profundo por Refuerzo (AlphaGo, IA de Atari, Robótica)
- Modelos Generativos (GANs, PixelCNN, VAEs)
- Métodos Adversariales (GANs, Actor-Crítico)
- Teoría del Aprendizaje Profundo
- Visión por ordenador
- NLP/Habla (traducción, subtitulado, modelos seq2seq)
- Razonamiento simbólico (e.g. solución de pruebas)
- Redes neuronales recurrentes (p. ej. LSTMs, memoria externa, atención)
- Aplicaciones (resolución de problemas de dominios específicos como la clasificación del cáncer, el plegado de proteínas, la lectura de labios a partir de un vídeo)
- Aprendizaje meta/aprendizaje (Gradientes Sintéticos, Pathnet)
El campo del Aprendizaje Profundo se ha expandido dramáticamente en los últimos años, hasta el punto de que no es realista comprender todos los subcampos del Aprendizaje Profundo en un corto período de tiempo. Recomiendo profundizar en un subcampo en particular, y luego será más fácil aprender los otros subcampos una vez que hayas dominado un área. Estos campos ya no tienen tanto en común, además del hecho de que todos utilizan el poder expresivo del aprendizaje profundo para aprender tareas de principio a fin, y son de un sabor generalmente experimental (en lugar de Ciencias de la Computación teórica).
Hoy en día, los artículos más interesantes sobre Aprendizaje Profundo vienen con alguna implementación disponible públicamente en TensorFlow, Pytorch, Torch, Keras, o Theano, por lo que una forma de construir una intuición rápidamente es ver si se puede mejorar un modelo existente (por ejemplo, hacer una mejor ResNet).
Probablemente no deberías implementar tu propio paquete de redes neuronales en Python desde cero. Es mucho trabajo conseguir que los pequeños detalles sean correctos (por ejemplo, ver este comentario sobre cómo se implementa la operación softmax en TensorFlow).
Los marcos de aprendizaje profundo son complejos y toman un poco de tiempo para aprender, y la forma más rápida de dominar un marco de DL es implementar una arquitectura de red neuronal desafiante que ejercite características oscuras del marco o ideas a caballo entre múltiples subcampos de DL. Algunas recomendaciones sobre arquitecturas difíciles/conductos de entrenamiento:
- Redes Progresivas
- DenseNet
- Gradientes Sintéticos
- Máquinas Neurales de Turing
- Embed-to-Control
- Traducción Neural Automática
Finalmente, muchos investigadores de aprendizaje automático están en Twitter y la comunidad de aprendizaje automático de Reddit es una buena manera de obtener las últimas noticias sobre redes neuronales. El campo es muy competitivo y se mueve muy rápido, por lo que ayuda a mantenerse actualizado.
Esta pregunta apareció originalmente en Quora. el lugar para obtener y compartir conocimientos, capacitando a las personas para aprender de los demás y entender mejor el mundo. Puedes seguir Quora en Twitter, Facebook y Google+. Más preguntas:
- Aprendizaje automático: ¿Qué tan difícil es para un científico motivado construir un sistema de comercio automatizado desde casa?
- Programación informática: ¿Cómo se detecta a un programador principiante?
- Aprendizaje: ¿Cómo puedo pensar más rápido y mejor?
Quora: el lugar para obtener y compartir conocimientos, capacitando a las personas para aprender de los demás y entender mejor el mundo.