La mejor respuesta
La formación previa en aprendizaje profundo no es más que , entrenando las máquinas, antes de que comiencen a realizar una tarea en particular.
Por ejemplo:
- Si desea entrenar una red neuronal para realizar una tarea, tome la clasificación en un conjunto de datos de imágenes. Empiece a entrenar inicializando los pesos al azar. Tan pronto como comienzas con el entrenamiento, los pesos se cambian o varían para realizar las tareas con menos errores (optimizados). Una vez que esté satisfecho con los resultados del entrenamiento, guarde los pesos de su red, de modo que la red neuronal entrenada pueda realizar una tarea similar la próxima vez con una buena optimización y mejores resultados.
- La próxima vez comience desde entrenando con pesos inicializados aleatoriamente, puede usar los pesos que guardó de la red anterior como los valores de peso iniciales para su nuevo experimento. Inicializar las ponderaciones de esta manera se denomina utilizar una red previamente entrenada ……………………….
La primera red es su red previamente entrenada. El segundo es la red que está ajustando.
La idea básica detrás del preentrenamiento es que, la inicialización aleatoria de entradas está bien … aleatoria, los valores de los pesos no tienen nada que ver con el tarea que está intentando resolver.
Los valores del entrenamiento anterior deben ser mejores que los del entrenamiento anterior, los valores deben inicializarse correctamente para la tarea, también podríamos establecerlos en los valores óptimos.
Por lo tanto, el entrenamiento previo le da a la red una ventaja. Como si hubiera visto los datos antes.
Respuesta
En primer lugar, voy a asumir que estamos en el planeta Mercurio, donde una semana equivale aproximadamente a 58 semanas. Suponiendo que pasa alrededor de 8 horas al día aprendiendo durante 5 días a la semana, tiene 2320 horas, suficientes para tener una comprensión suficientemente buena del aprendizaje profundo para hacerse pasar por un ingeniero de investigación y un investigador de nivel principiante.
En primer lugar, hágase un favor y consiga el libro Deep Learning de Goodfellow et al. Es un libro extremadamente SÓLIDO sobre aprendizaje profundo que no rehuye ninguna de las matemáticas, sin ser demasiado pedante. Por ejemplo, tiene una excelente manera de explicar lo que sucede cuando optimiza la divergencia KL de la otra manera, lo que las pérdidas L1 y L2 realmente le hacen a sus pesos (en términos de vectores propios de la función de pérdida), la intuición detrás de los LSTM, etc. Comience con la primera sección del libro. Tardará aproximadamente 2 semanas en digerir completamente ese material (YMMV). Si ha pasado esta semana sin aburrirse o empantanarse por la complejidad matemática, ahora está listo para pasar al aprendizaje automático.
En este punto, debemos dejar de leer y comenzar a codificar . Pero para comprender realmente las cosas, no descargue Tensorflow, comience con la implementación de cosas básicas (regresión logística, SVM, kNN, PCA, GMM) en el buen y antiguo Python. Mucha gente simplemente se apresura a usar bibliotecas de alto nivel sin entender cómo codificar bloques básicos desde cero, y aprenderá mucho si lo hace. Por ejemplo, aprender que necesita estandarizar sus datos antes de aplicar PCA, cómo hacer que softmax sea numéricamente estable, por qué no debería reutilizar su función softmax para implementar log-softmax y así sucesivamente. Para comenzar con la implementación de estos, diríjase a CS231n y finalice la primera Asignación, construyéndola para implementar SVM y GMM. Esto tomaría aproximadamente 4 semanas (suponiendo que comience sin conocimiento de numpy o python) para implementar y depurar. Ahora ya sabe cómo implementar algoritmos básicos de aprendizaje automático desde cero.
Ahora puede seguir adelante y leer las excelentes notas en el sitio web de CS231n (hasta el módulo 1). Tómese su tiempo para digerir las complejidades de optimizar las funciones no convexas y, sí, IMPLEMENTE todo lo que lea. Desde métodos basados en el impulso hasta backprop básico, la implementación es la clave si realmente quieres aprender la mecánica. Por ejemplo, si implementa backprop por su cuenta, se dará cuenta de cómo necesita mantener una tonelada de datos para el pase hacia atrás y este conocimiento podría ser muy útil si encuentra errores de memoria en algún momento de su ingeniería de DL. carrera. Esto tomará otras 4 semanas.
Han sido 10 semanas de una loca DL ahora. Ahora está sólido en sus habilidades matemáticas básicas y puede implementar redes de avance y algoritmos básicos de aprendizaje automático en Python sin procesar. Felicidades por eso. Avancemos un poco de aquí en adelante. Solo se volverá más difícil (y por lo tanto más divertido).
Es hora de sacar nuestro libro de aprendizaje profundo y empezar desde donde lo dejamos. Lea los capítulos 6, 7 y 8. El capítulo 6 es fácil y ya lo dominamos. El capítulo 7 es donde comienza a ponerse difícil, pero el libro hace un excelente trabajo al convertir conceptos matemáticos pesados en texto fácil de entender.Para complementar su aprendizaje, mire esta increíble conferencia: Clase 11 de aprendizaje profundo: redes de memoria, transferencia y aprendizaje con margen máximo .
Este Tomará otras 4 semanas, pero una vez hecho esto, estamos listos para graduarnos a CNN y RNN. Seguiremos la misma filosofía nuevamente: leemos las notas de cs231n, implementamos y entrenamos dat net, y luego leemos el libro para comprender los detalles más finos. Esta fase tomará y debería tomar más tiempo porque implementar backprop en las CNN (con todas las campanas y silbidos como la normalización de lotes) no es tan fácil. Lo mismo ocurre con los LSTM (observe la norma de ese gradiente y recorte si se vuelve demasiado grande, o trunque a secuencias más cortas si se vuelve demasiado pequeño). Consejo profesional : para entrenar LSTM, recomiendo consultar el conjunto de datos de PennTree Bank y entrenar un modelo de lenguaje para obtener una perplejidad de alrededor de 110. Si puedes hacer ese noventa, felicidades, lo estás haciendo bien. Para entrenar a una CNN, simplemente haga la tarea 2 de CS231n.
Uf. Esa última fase de capacitación de CNN / RNN y luego leer el material asociado del libro, nos retrasó unas 6 semanas y ahora solo tenemos 38 semanas en nuestra búsqueda para convertirnos en los mejores.
Finalmente, tiempo a pip install tensorflow.
No ni siquiera pienses en otra cosa. No, no estamos haciendo pytorch (es de naturaleza dinámica, por lo que no es genial si quieres familiarizarte con el software de autodiff, pero genial por lo demás) o theano (no lo suficientemente grande). O bibliotecas de alto nivel como keras (hermoso, pero hace que todo parezca demasiado fácil). Dirígete a los documentos y lee el tutorial de MNIST (para expertos, porque eso es lo que somos ahora). Todo va a ser muy extraño al principio, la idea de un gráfico de cálculo, sesiones y el hecho de que hay una «compilación» y una «ejecución» separadas incluso dentro de Python. Pero una vez que domine las cosas, comenzará a darse cuenta de lo bien que ha sido diseñado y lo fácil que es extenderlo; por ejemplo, escribir su propia LSTM es tan fácil como extender una clase básica de LSTM. Como un conjunto de ejercicios de preparación, lea el código de los tutoriales ( Tutoriales | TensorFlow ) y siga cada tutorial con mucho cuidado, comprendiendo lo que hace cada línea. y por qué. Aprenderá a organizar su código de tensorflow. Consejo profesional : siempre me gusta tener abstracciones separadas para entrenar, probar y predecir. Y una función build()
separada que crea el gráfico de cálculo completo, comenzando por los marcadores de posición, hasta definir la función de pérdida y el train\_op que optimiza esa función de pérdida.
Enchufe desvergonzado – Recientemente codifiqué un modelo para la comprensión de la máquina (una tarea que me ha gustado mucho). Para ver cómo ensamblar el código de su modelo, consulte MurtyShikhar / Question-Answering . Para probar tus habilidades con tensorflow, traduce tu código CNN y LSTM a tensorflow para lograr la misma (quizás mejor) precisión / perplejidad.
Aprender tensorflow tomó alrededor de 8 semanas de hackeo loco, lectura de tutoriales y frustración por dem errores de compilación de tensorflow, pero espero que el viaje haya sido gratificante. Ahora tiene el poder de la modificación automática y un arsenal de funciones realmente genial para conectar literalmente CUALQUIER modelo de aprendizaje profundo. Antes de pasar a algunas cosas de investigación, ¿por qué no probar un proyecto divertido en tensorflow? Elija cualquier artículo interesante sobre un problema bien definido (traducción automática / subtítulos de imágenes / comprensión / respuesta a preguntas / respuesta visual a preguntas / transferencia de estilo) e implemente el modelo de vanguardia en Tensorflow. No pruebes GAN todavía, porque no somos tan geniales (todavía). Te tomará alrededor de 5 semanas terminar tu proyecto y obtener resultados competitivos, dejando alrededor de 5 semanas solo para leer sobre la investigación actual.
Me doy cuenta de que 5 semanas son realmente un período corto para cubrir la amplitud de DL investigación, entonces, ¿por qué no reducir nuestro alcance? Elija un problema o técnica, ya sean modelos generativos, modelos seq2seq o aprendizaje por refuerzo. No sé nada sobre el aprendizaje por refuerzo (aunque estoy tratando de aprender), así que me centraré en los otros dos.
Para los modelos generativos, comience con este increíble tutorial de nuestro señor y salvador – NIPS 2016 – Generative Adversarial Networks – Ian Goodfellow , y continúe lentamente, haciendo pausas y buscando en Google cuando sea necesario. Encontrarás MUY útiles las habilidades matemáticas de las primeras semanas aquí. Luego le insto a que lea el artículo original de GAN y seguimientos como DCGAN , SeqGANs, y el más nuevo y genial WGAN .
Para Seq2Seq, mire esta increíble conferencia de un científico de Google Brain – Sequence to Sequence Deep Learning (Quoc Le, Google) y luego verifique el tutorial ICML 2017 de Oriol Vinyals – seq2seq icml tutorial .
El FIN.
Eso tomó algo de tiempo y esfuerzo. Es el final de la semana 58 y ahora tiene una amplia comprensión del aprendizaje profundo, junto con algunas habilidades sólidas de matemáticas e ingeniería. Es hora de aventurarse más (¿entiendes el juego de palabras?) En la investigación de Deep Learning, o tal vez crear una aplicación genial. Dejo esa decisión en tus manos, semental ingeniero de DL.