Entiendo la necesidad de tomar cursos con la esperanza de enfocar el aprendizaje. Para alguien que no tiene idea de lo que son NN, RNN, etc., diría que uno debería ir al curso. Sin embargo, no caigas en la trampa de sentirte “bien” al acumular cursos y engañarte a ti mismo para pensar que finalmente serás un maestro en aprendizaje profundo a partir de conferencias y videos.
El aprendizaje profundo no es física cuántica. Es un área donde su capacidad para codificar e implementar su idea con cualquier marco de bajo nivel (flujo de tensor, antorcha, etc.) es tan importante, si no más, que su comprensión de la teoría.
La mayoría de los cursos por ahí le enseñan los conceptos básicos de DL, luego proceden a decirle esta “receta”. “Está bien, toma este código de modelo Covnet y ejecuta estos datos ya procesados para entrenar. No se preocupe, todavía puede jugar con la tasa de aprendizaje ”. Pasan por alto tantos detalles porque, la mayoría de los cursos no pueden cubrir todos los aspectos de bajo nivel en su tiempo asignado. Sin embargo, si desea hacer un DL serio, debe conocer la implementación de bajo nivel, en cada paso. Desde la arquitectura de red, activación, regularización, optimizador hasta las funciones de pérdida. Además de tareas auxiliares como preposesión de datos (imagen, texto) etc.
- ¿Cuántos años puede sobrevivir un ingeniero de software de rendimiento promedio en la industria de TI? ¿Qué hacen muchas personas después de ese período?
- ¿Hay alguna forma de programar un documento de Google Drive para actualizar un documento de unidad existente y no romper el enlace?
- ¿Qué softwares usan los diseñadores industriales / arquitectos de interiores hoy en día?
- ¿Cuáles son algunos principios fundamentales de diseño y arquitectura de software cuando se construye un servidor / cliente de juegos MMO?
- ¿Hay algún software que genere BTC gratis?
Es divertido leer quora respuestas o documentos sobre normas de lote, seq2seq, máquinas neuronales de Turing, GAN. ¿Pero puedes codificarlos? Desde cero, y combinar varios componentes? Porque para un profesional que se inclina profundamente, necesita poder iterar rápidamente sobre sus ideas.
Te puedo garantizar que ningún curso por ahí te enseñará el punto anterior. Esa experiencia proviene de practicar la implementación, y solo esto puede convertirlo en un experto en DL.
El mejor curso sobre DL que puedas tomar es asegurarte de que tienes una comprensión básica de ML y redes neuronales (cs231, Cs224d, la clase de Andrew). Luego salte sobre github y comience los documentos de implementación en su lenguaje favorito de bajo nivel (flujo de tensor, antorcha, theano, etc.).
Comience con cosas de bajo nivel, construya un NN y RNN básicos en puro numpy, implemente la pérdida de varios optimizadores, etc. y obtenga una idea de cómo se juntan todas las piezas.
Luego elige algunas implementaciones en papel más simples, como Alexnet, el seq2seq original, etc. Verá que alguien ya lo ha implementado en el paquete ML de su elección. Estudie su código, vea cómo convertir el documento en código de trabajo y codifique el suyo. También puedes consultar gitxiv. com para implementaciones en papel de aprendizaje más profundo. Luego, trabajará en arquitecturas más nuevas y complejas, como seq2seq con atención suave o dura, redes de memoria, máquinas de torneado neural, GAN, etc.
El campo de investigación de DL en su estado actual (y futuro previsible) es un área de investigación caótica muy empírica y grande. Tienes cierta intuición, prueba muchas ideas, combina diferentes arquitecturas, modelos, etc. y observa qué funciona. Esto requiere que uno pueda iterar rápidamente y determinar si algo funciona o no, y este “algo” requerirá que lo construya desde cero la mayor parte del tiempo.
Por supuesto, si solo desea rascar la superficie de DL y usarla para la implementación / aplicación básica (por ejemplo, competencia relacionada con la imagen de kaggle). Entonces es sencillo tomar estos cursos y aprender cuándo usar las diferentes “recetas”.