¿Cuál es la forma más sistemática de entender los algoritmos de Aprendizaje Profundo?

La forma en que las personas asimilan los conceptos varía de persona a persona. Por lo tanto, describiré los métodos que utilizo para aprender sistemas complejos.

  1. Obtener curiosidad
  2. Aprende el resumen (amplitud)
  3. Aprende los detalles (profundidad)
  4. Implementar

Voy a profundizar un poco.

Obtener curiosidad :

Seré honesto aquí, nunca uso los horarios de estudio ni sigo un patrón bien planeado al aprender cosas complejas. Simplemente dejo que la curiosidad actúe como combustible, así que eso significa que si comienzo a leer un libro como este [1], no seguiré el orden de los temas del libro, pero me moveré de un tema a otro de una manera bastante aleatoria. Así que salto de forma espontánea de un tema a otro en función de los niveles de curiosidad. Así ataco lo que más aumenta primero mis niveles de curiosidad.

Esto es importante porque el cerebro asimilará las cosas más rápido si tienes curiosidad por ellas. Así que la curiosidad me ayuda a identificar qué temas me interesan más, al final del día es como disparar bolas de pintura al azar en una pared, después de tales acciones aleatorias, la pared estará completamente cubierta con pintura. Por supuesto, algunas áreas tendrán capas de pintura más gruesas, lo que significa las áreas en las que tengo más interés, como la visión por computadora (CV), porque dispare más bolas de pintura sobre esa región.

Para ser curioso, necesita pasión, así que empiece el aprendizaje automático (ML) por la pasión y no solo por el dinero.

Aprende el resumen:

Después de ser curioso, tu mente tendrá preguntas, ¿cómo funciona esto? ¿Por qué las cosas se hacen de esta manera y no de esa manera? Siempre que estas preguntas crucen tu mente, puedes escribirlas y buscar respuestas, comenzando con la que más te guste. Obtenga la visión general de todo el campo también.

Hacerlo significa que identificará las áreas adicionales en las que su mente está más interesada. Por lo tanto, después de responder a sus preguntas y obtener el resumen del campo, es hora de profundizar. Continúe haciendo preguntas asegurándose de ser cada vez más específico en cada nivel. De hecho, automáticamente comenzará a hacer las preguntas correctas a medida que vaya adquiriendo más y más conocimiento.

Aprende los detalles:

Si encuentra que las redes neuronales convolucionales (convNet) son más interesantes, es hora de profundizar. Este enfoque es como el recorrido recursivo del árbol, atacando primero a los sujetos más interesantes, haciendo un seguimiento hacia atrás y luego atacando a los otros. Comprenda los motivos principales detrás de un algoritmo específico que hace preguntas como ¿por qué usar filtros convolucionales? y ¿Cómo funciona la propagación hacia atrás en una estructura tan compleja? Busque respuestas a sus preguntas leyendo libros, revistas o haciendo preguntas aquí en Quora.

Al profundizar, asegúrese de reutilizar los conceptos básicos que aprendió en la primera etapa. Trate de explicar una red neuronal convolucional desde los primeros principios. Reconstruya las explicaciones sobre sistemas complejos utilizando conceptos básicos y principios de sus propias intuiciones y entendimientos, si no puede volver a leer los principios y principios básicos. Es por eso que responder preguntas, como en Quora, lo ayuda a desarrollar confianza en su conocimiento. También te ayuda a sentirte cómodo con los conceptos básicos y específicos de ML.

Implementar:

Una vez que esté familiarizado con los conceptos básicos y específicos de los algoritmos ML, su comprensión se volverá permanente una vez que se siente e implemente esos algoritmos desde cero. Use lenguajes de programación de bajo nivel como C / C ++ para implementar cosas desde cero. Hacerlo crea mucha confianza en tus habilidades para aprender sistemas complejos. Personalmente he creado bibliotecas de visión artificial (CV) y de ML desde cero, es muy divertido.

Hacerlo también ayuda mucho en el aprendizaje de la programación. Entonces, si sus habilidades de programación están oxidadas, este enfoque traerá algunos desafíos nuevos, lo que lo llevará a los límites. Entonces, no se acostumbre a usar algoritmos ML como cajas negras, intente implementar algunos importantes desde cero. También puede encontrar pasantías para profundizar su conocimiento en ML.

Conclusión :

Encuentro que el enfoque anterior es bastante efectivo, pero tal vez sea solo yo. Depende de si está siendo supervisado o lo está haciendo solo. Siempre asegúrese de aprender del primer director, entienda los conceptos lo más profundamente posible antes de pasar a algoritmos más específicos. Los elementos básicos son los bloques de construcción, por lo que comprenderlos abre más posibilidades.

También asegúrate de mantenerte motivado, es por eso que necesitas implementar las cosas por ti mismo. Ver cosas en acción es un buen motivador, especialmente si usted es quien las construyó.

Espero que esto ayude.

Notas al pie

[1] Aprendizaje Profundo

Me encanta la última línea que el OP agregó en el comentario: “incluso si entiendo algunos algoritmos, no me siento cómodo con ellos”. Eso resume mucho sobre el aumento del interés académico en el aprendizaje profundo que la mayoría de nosotros pasamos, y no es nada natural.

Para ser honesto, el tejido fundamental que mantiene unido todo el aprendizaje profundo todavía falta en gran medida en el panorama de la investigación, y la investigación del aprendizaje profundo está pasando por un “momento” masivo [Un vistazo a las tendencias en el aprendizaje automático – Andrej Karpathy – Medio], lo que hace que todo el proceso de tener una comprensión básica de la literatura sea un poco desalentador para las personas que recién comienzan.

Habiendo dicho eso, nunca temas, es solo una cuestión de tiempo y esfuerzo constantes, y pronto estarás hablando sobre redes neuronales y el descenso del gradiente como el resto de nosotros, los maníacos profundos. Intentaré esbozar una guía de estudio aproximada para comprender el aprendizaje profundo que podría ser útil. Sin embargo, tenga en cuenta que hay un componente de laboratorio sólido, por lo que si desea residir en el área de la teoría rigurosamente cómoda, no tendrá mucho que aprender aquí.

Dado que tienes un fondo en estadística, álgebra lineal y cálculo, deberías poder entender la mayor parte de la notación que usan los papeles en estos días. Una cosa fundamental que muchas personas pasan por alto en su estudio inicial es el cálculo matricial . Asegúrate de que te sientas cómodo con el cálculo y el álgebra con matrices, porque confía en mí, la vida será más fácil si no tienes que expandir cada matriz en sus partes y piezas para comprender pruebas bastante básicas.

Asegúrese de tener ordenada la teoría de la probabilidad: las distribuciones, el Teorema de Bayes, la probabilidad condicional, entre otras cosas, son clave para evitar leer artículos. Aquí, lo que la mayoría de la gente no comprende es cómo relacionar estas ideas en la teoría de la probabilidad con un experimento real. Por ejemplo, dado un conjunto de datos, debe sentirse cómodo con las nociones físicas de lo que son p (x | y) yp (y | x) y similares; cómo asumir diferentes distribuciones anteriores en sus datos puede afectar su modelo, el tipo de la información que proporcionan las distribuciones marginales, y qué puede averiguar a partir de sus datos simplemente teniendo una estimación de las distribuciones en cada dimensión de la característica.

Para desarrollar este tipo de comprensión, es esencial pasar por modelos generativos mientras se estudia la probabilidad y tener una idea de cómo son útiles en el aprendizaje automático. Las personas a menudo omiten conceptos clave en los modelos generativos porque los modelos discriminativos parecen ser lo más atractivo y, por supuesto, es más fácil (al menos para mí). Pero tiene que conocer sus modelos de mezcla y sus expectativas: maximización para comprender qué tan importantes son las suposiciones para su tarea de modelado.

Cuando termines con eso, no tendrás problemas para visualizar qué son las variables latentes, y los codificadores automáticos parecerán un pedazo de pastel. En este punto, intente leer el documento original de LDA (Blei et al 2003) y obtenga el conjunto de datos de clasificación de correo no deseado que está presente de manera ubicua en casi todos los MOOC de ML, e intente codificarlo y ejecutarlo. Si terminas todo el proceso sin agitar las manos, puedes continuar con el siguiente paso.

Cuando llegue a estudiar los perceptrones, el gradiente y gradualmente en las redes neuronales, lea los artículos seminales sobre las técnicas que han persistido en el área, como el abandono escolar (Shrivastava et al 2014), Adam (Kingma y Ba, 2014). Normalización de lotes (Ioffe y Szegedy 2015). Para aprender sobre redes neuronales, creo que el curso de Stanford tiene un gran material estructurado y debería ser suficiente, siempre que lea los documentos de esta lista simultáneamente: terryum / awesome-deep-learning-papers (no todos los artículos son necesarios, solo lea los de clasificación) , optimización, CNNs y métodos generativos, y visualización).

Cuando estudies CNN y backpropagation, asegúrate de que te sientas cómodo con las matrices de Toeplitz y cómo se relacionan con las CNN, cómo funciona el “truco” de la CNN (mover los filtros vertical y horizontalmente durante la backprop) y cómo crear modelos que realmente aprendan , y por qué no aprenden cuando no aprenden. Es muy fácil dejarse engañar y creer que has entendido las CNN; casi todo el mundo lo cree así, pero aquí es vital asegurarte de saber cómo usarlas, al menos.

Luego puede comenzar a observar las GAN y cómo capacitarlas, entre otros modelos generativos y no supervisados ​​(RBM, DBN, etc.). Para esto sugeriría el libro de Bengio como la guía definitiva. Una cosa clave a tener en cuenta es completar las matemáticas rigurosas primero (comprender por qué y cuándo funciona SGD, cuáles son las otras técnicas en optimización convexa, teoría de probabilidades y clasificadores de márgenes), para que realmente pueda aportar nuevas ideas. saltarse las partes duras le garantizará que nunca volverá a ellas. Ir directamente a través de CS 231n le dará una idea de las CNN como una herramienta, algo que no puede intentar mejorar.

Después de este punto se trata principalmente de lo que quieres de tu conocimiento. Si está utilizando el aprendizaje profundo como herramienta para una tarea aplicada, debería ser suficiente. Si desea contribuir al aprendizaje profundo, es apenas el comienzo. Después de esto, solo se trata de leer artículos y entender cómo se relacionan los diferentes algoritmos entre sí. ¡Esperamos que algún día usted pueda agregar a esta lista con su propio trabajo!

PD: es fácil perderse en el mar de la literatura interminable en este campo naciente, pero sepa que es la misma manera para todos, y tener un esfuerzo constante e informado a su propio ritmo es la única manera de entenderlo. de eso ¡Espero que esto ayude!

Antes de comenzar con el aprendizaje profundo, debes aprender los conceptos básicos de ML. Vea, por ejemplo, los siguientes enlaces:

  • La respuesta de Prasoon Goyal a ¿Cómo aprendo el aprendizaje automático en 10 días?
  • La respuesta de Prasoon Goyal a ¿Cómo aprendo el aprendizaje automático?

Luego, una vez que tenga alguna idea de ML, debe comenzar con un aprendizaje profundo. Aquí hay un tutorial del laboratorio de Yoshua Bengio que fue escrito en los primeros días de aprendizaje profundo: Tutoriales de Aprendizaje Profundo. Esto explica las ideas centrales en el aprendizaje profundo con cierto detalle.

Debido a que el aprendizaje profundo es un campo 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-Example. 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.

Tal vez trate de seguir cómo se desarrollan desde el principio. Al principio, también estaba totalmente perdido, pero me encontré mucho más claro acerca de ellos después de que reuní esos pensamientos y organicé estas ideas cronológicamente. Básicamente, es el orden sobre cómo se inventan estas ideas una tras otra.

Tenía un documento que describía algunas de estas cosas, pero aún no tengo la oportunidad de organizar los nuevos temas como GAN, planeamos hacerlo probablemente en el próximo semestre.

Mi documento probablemente se usará como libro de texto para CMU 11–785 en el próximo semestre, según el instructor Bhiksha, pero es posible que necesitemos trabajar en algunas correcciones menores antes de eso.

De todos modos, la versión actual está aquí (titulada En el origen del aprendizaje profundo), tal vez sea útil.

Sin embargo, parece que lo que más necesitas son los conceptos sobre las GAN, no los he escrito todavía, quizás en varios meses.