- Un texto introductorio sobre deep learning matemático, diseñado para que estudiantes y científicos sin conocimientos previos, así como profesionales que buscan una comprensión más rigurosa, construyan una base sólida de los algoritmos de deep learning
- Las redes neuronales artificiales se definen como composiciones repetidas de funciones de activación y funciones afines, y a medida que aumenta la profundidad de la composición, pasan a formar la clase de funciones tratada por las ANN profundas
- La estructura completa parte de la arquitectura y el cálculo de las ANN, y continúa hacia la teoría de aproximación, la optimización, el error de generalización, el análisis del error total y la resolución de PDE
- La parte de optimización cubre junto con gradient flow ODE, GD, SGD, la retropropagación (backpropagation), el enfoque de Kurdyka–Łojasiewicz, batch normalization y la inicialización aleatoria
- El código fuente en Python puede descargarse desde un repositorio público de GitHub y desde la página de arXiv, y el nombre de archivo en el pie de cada listado permite vincular el contenido del libro con el código
Cómo se define matemáticamente el deep learning
- Este libro trata los algoritmos de deep learning como una forma de cálculo que usa repetidamente ANN profundas y datos para aproximar ciertas relaciones, funciones o cantidades
- Una ANN es una clase de funciones compuesta por varias composiciones de una función de activación no lineal específica y funciones afines
- La profundidad de una ANN corresponde al número de repeticiones de la composición, y cuando la composición entre la función no lineal y la función afín supera dos elementos, empieza a llamarse ANN profunda
- El público objetivo son estudiantes y científicos sin ningún trasfondo en deep learning pero que necesitan bases firmes, así como profesionales que quieren entender con mayor claridad los objetos y métodos del deep learning
Partes I–II: arquitectura de redes neuronales y teoría de aproximación
- Tras una breve introducción, el texto principal se divide en 6 partes: Partes I–VI
-
Parte I: Redes neuronales artificiales
- El Capítulo 1 introduce matemáticamente varios tipos de ANN
- ANN feedforward totalmente conectadas
- ANN convolucionales (CNN)
- ANN recurrentes (RNN)
- ANN residuales (ResNet)
- El Capítulo 2 trata el cálculo (calculus) de las ANN feedforward totalmente conectadas
- El Capítulo 1 introduce matemáticamente varios tipos de ANN
-
Parte II: Aproximación
- Presenta varios resultados matemáticos que analizan qué tan bien una ANN puede aproximar una función dada
- El Capítulo 3 se centra primero, por accesibilidad, en funciones unidimensionales de números reales a números reales
- El Capítulo 4 amplía el alcance a resultados de aproximación con ANN para funciones multivariables
Parte III: optimización y algoritmos de aprendizaje
- El núcleo de los algoritmos de deep learning está en modelar o reformular un problema como un problema de optimización adecuado que incluya una ANN profunda
- Esta parte trata los problemas de optimización y los algoritmos para resolverlos de forma aproximada, normalmente como problemas de minimización mediante métodos de optimización basados en gradiente
- Los métodos basados en gradiente son una forma de cálculo que resuelve el problema mediante pasos continuos basados en la dirección del gradiente negativo de la función que se quiere optimizar
- El Capítulo 5 aborda la ODE de gradient flow (GF) y su uso para comprender métodos del tipo GD y SGD
- El Capítulo 6 revisa y analiza métodos deterministas de optimización basados en gradiente como gradient descent (GD)
- El Capítulo 7 revisa y analiza métodos probabilísticos de optimización basados en gradiente como stochastic gradient descent (SGD)
- El Capítulo 8 deriva y trata en detalle la retropropagación, un método ampliamente usado para calcular explícitamente gradientes en el entrenamiento de ANN
- Aunque el análisis de los Capítulos 5–7 suele ser limitado para tratar problemas de optimización del entrenamiento de ANN en la mayoría de los casos, el enfoque de Kurdyka–Łojasiewicz (KL) del Capítulo 9 sí puede abordar estos problemas
- El Capítulo 10 examina rigurosamente batch normalization (BN), un método para acelerar el procedimiento de entrenamiento de ANN en problemas de aprendizaje basados en datos
- El Capítulo 11 estudia el enfoque de optimizar la función objetivo con distintas inicializaciones aleatorias
Partes IV–VI: análisis de error y aplicaciones a PDE
-
Parte IV: Error de generalización
- El análisis matemático del deep learning no termina con las estimaciones del error de aproximación de las ANN y de los métodos de optimización
- Cuando no se puede acceder explícitamente a la distribución de probabilidad del problema de aprendizaje y se aproxima con realizaciones y datos finitos, se necesitan estimaciones del error de generalización
- El Capítulo 12 revisa estimaciones probabilísticas del error de generalización
- El Capítulo 13 trata estimaciones fuertes del error de generalización de tipo Lp
-
Parte V: Análisis del error total
- Muestra con un ejemplo cómo combinar las estimaciones del error de aproximación de la Parte II, del error de optimización de la Parte III y del error de generalización de la Parte IV
- El ejemplo es el entrenamiento de ANN basado en métodos de optimización tipo SGD que usan muchas inicializaciones aleatorias independientes
- El Capítulo 14 presenta una descomposición del error total adecuada para problemas de aprendizaje supervisado
- El Capítulo 15 establece un análisis ilustrativo del error total usando conjuntamente algunos resultados de las Partes II, III y IV
-
Parte VI: Deep learning para PDE
- Los métodos de deep learning no solo se usan en problemas de aprendizaje basados en datos, sino también para resolver de forma aproximada ecuaciones diferenciales parciales (PDE)
- La Parte VI revisa e implementa 3 métodos populares de deep learning para PDE
- El Capítulo 16 trata las physics-informed neural networks (PINNs) y los deep Galerkin methods (DGMs)
- El Capítulo 17 trata los deep Kolmogorov methods (DKMs)
Cómo acceder al código y los materiales
- El libro incluye varios códigos fuente en Python
- El código fuente puede descargarse desde el repositorio público de GitHub introdeeplearning/book
- En la página de arXiv también se puede obtener el código fuente haciendo clic en “Other formats” y luego seleccionando “Download source”
- El pie de cada listado de código incluye el nombre del archivo fuente correspondiente, lo que facilita seguir en paralelo las fórmulas y ejemplos del libro junto con el código
1 comentarios
Comentarios en Hacker News
Parece una buena recopilación que presenta técnicas estándar de machine learning con una notación matemática bastante unificada y muchas demostraciones, pero con 600 páginas es realmente una obra enorme.
Sin embargo, da la impresión de que pone más peso en las partes fáciles de formalizar que en las que serían interesantes de entender.
Por ejemplo, el capítulo sobre SGD parece haber sido elegido porque la optimización es un área donde los matemáticos pueden aportar de forma realmente influyente al machine learning, pero la mayoría de las demostraciones son básicas, como la descomposición sesgo-varianza o la desigualdad de Jensen; los teoremas interesantes sobre convergencia solo citan la literatura y no se conectan con los lemas anteriores, y métodos realmente interesantes en la práctica, como ADAM, casi no tienen demostraciones ni teoría.
Después de leer ese capítulo, probablemente se entienda bien los métodos modernos de SGD y cómo fueron evolucionando, pero parece difícil saber por qué funcionan más allá de una intuición confirmada por experimentos numéricos.
Si es así, creo que habría sido más útil dedicar espacio a demostraciones de convergencia de ADAM que ya existen, en vez de demostrar muchos conceptos básicos como E(XY)=E(X)E(Y) para variables aleatorias independientes.
El capítulo sobre ANN también tenía muchas demostraciones largas de contenido básico y menos interesante, y el paper sobre physics-informed neural networks, aunque bueno, tiene un problema parecido.
La dirección de explicar los métodos de machine learning de forma más rigurosa y unificada me parece buena, pero me genera dudas cómo trazaron la línea sobre qué incluir y qué dejar afuera.
Las demostraciones de convergencia de ADAM tampoco explican por qué ADAM tiende a funcionar mejor que otros métodos.
Es difícil culparlos por no explicar algo que actualmente nadie entiende, pero si la teoría no predice lo que realmente importa, la idea misma de una educación centrada en la teoría se debilita.
Quienes quieran ver deep learning con más profundidad matemática también pueden mirar el libro de Francois Fleuret: https://fleuret.org/francois/lbdl.html
El PDF es gratis y la edición impresa es bastante bonita.
Cada vez que lo intento, en la impresora dúplex una hoja sí y otra no sale invertida de arriba abajo, y eso causa problemas.
Me pregunto si la gente realmente lee libros como este de principio a fin.
Estoy leyendo PRML de Bishop, y terminar bien el libro y resolver todos los ejercicios lleva una cantidad enorme de tiempo.
Vi que alguien que hizo lo mismo escribió en un blog que le tomó más de 1500 horas.
En mi maestría no hubo nadie que terminara un libro así; simplemente tomábamos las clases y googleábamos el resto cuando lo necesitábamos.
Como alguien cuyo conocimiento de programación es más profundo que el de matemáticas, la notación matemática de aquí me resulta más difícil de entender que el código.
Incluso se siente más difícil que código escrito en un lenguaje de programación que no conozco.
Me pregunto si a quienes tienen una formación matemática más fuerte estas expresiones matemáticas les resultan más fáciles de entender que el código fuente.
Intenté presentar los conceptos de la forma matemáticamente más precisa posible, pero al final evité la notación pesada como la de este libro y quité mucha matemática para que los estudiantes pudieran usarlo en la industria; en la clase real hubo mucho más código que fórmulas.
Cuando uno intenta escribir todo con muchísima precisión, se vuelve desordenado muy rápido.
En matemáticas, encontrar una buena notación para un concepto nuevo es muy difícil, y notaciones que después todos reconocen como claras, como la notación de Einstein, los diagramas de Feynman o la notación matricial, muchas veces fueron creadas inicialmente por personas brillantes.
Tampoco es que transcribir un área A en la notación de un área B la vuelva útil automáticamente; traducir la mecánica cuántica a matemáticas como las álgebras C* también fue una tarea enorme, y hasta cierto punto sigue siendo un área de investigación abierta.
Por eso, aunque el esfuerzo de escribir este libro debe haber sido enorme, creo que su utilidad práctica probablemente sea baja.
Quienes pueden leer cómodamente estas ecuaciones, por lo general, no las necesitan; por ejemplo, si alguien conoce las transformaciones afines, casi nunca necesita ver escritos explícitamente todos los índices ijkl de un tensor de cuatro dimensiones.
En cambio, quienes no están en ese grupo probablemente se intimiden y se alejen.
Una razón es que está optimizada para escribirse a mano.
Escribir código de programa a mano es muy tedioso, así que se entiende por qué la notación matemática tiene esa forma.
Además, no existe algo como “ese código” que corresponda a la notación matemática.
La notación matemática sirve para enunciar hechos o proposiciones matemáticas, y su propósito es distinto al del código que implementa algoritmos de deep learning.
Por eso los temas y la forma de explicarlos están orientados hacia ese tipo de personas.
Por ejemplo, en deep learning práctico casi nunca he visto a alguien preocuparse por las condiciones de existencia y unicidad de los algoritmos de optimización basados en gradientes, pero ese tipo de resultado es un tema que a estas personas les interesa y sobre el que escriben papers.
Como desde el título dice que el libro trata las bases teóricas de este campo, esa forma de abordarlo no sorprende.
Este tipo de libro normalmente no se lee de principio a fin; más bien, uno profundiza solo en algunos capítulos que contienen técnicas relacionadas con su propia investigación.
Yo también, cuando investigaba, usé compilaciones de papers igual de extensas, pero el núcleo que me interesaba eran unas 20 o 30 páginas.
En términos de rigurosidad y cantidad de contenido, es demasiado prolijo para mi gusto.
Por ejemplo, incluyen la desigualdad de Gronwall como lema y la demuestran; aunque la versión usada sea un poco más general que la que suelo ver, la desigualdad de Gronwall es una herramienta muy estándar en el análisis de ecuaciones diferenciales ordinarias, y hasta mis libros rigurosos de teoría de control solo dan referencias sin demostrarla para evitar ensuciar el texto.
Cuanto más alto es el estándar de demostración y menos supuestos se quiere imponer, más aparece este tipo de extensión excesiva.
Me pregunto quiénes son exactamente esos lectores objetivo llamados “estudiantes y científicos”.
Desde el comienzo del capítulo 1 aparecen subíndices dentro de subíndices, sumas con subíndices dentro de superíndices, y luego se entra en una enorme cadena de composición de funciones.
Más adelante, los subíndices llegan a tener cuatro niveles de profundidad, se crean al menos tres operadores infijos nuevos y se definen 30 símbolos nuevos de tres alfabetos distintos, y todavía no se llegó ni a la página 100 de 600.
No sé para quién se supone que está hecho esto, ni quién podría seguirlo y asimilarlo.
He visto bastantes libros que intentan explicar el deep learning desde una perspectiva matemática, pero siempre me sorprenden
Hoy el deep learning es claramente una ciencia empírica, y creo que no hay muchos trabajos teóricos con un impacto lo bastante grande como para incluirlos en un libro
Incluso entre esos libros, este parece estar activamente cerca de lo peor
Dedica bastante espacio a demostrar lemas que aportan muy poca comprensión adicional y solo están débilmente relacionados con el deep learning, y una parte considerable del código es código para generar gráficas que no entiendo por qué fue incluido
Creo que muy poca gente leerá una parte grande de este libro
Sigo pensando que los mejores textos son Deep Learning, de Goodfellow y otros, y el más moderno Understanding Deep Learning(https://udlbook.github.io/udlbook/)
Aunque la frontera del deep learning es muy empírica, hay investigación interesante que intenta entender no solo qué técnicas funcionan bien, sino por qué funcionan
Decir que las demostraciones no son una buena forma de obtener comprensión no tiene sentido
No es una forma adecuada para todo el mundo, pero un libro titulado “introducción matemática a x” naturalmente está dirigido a personas con cierto entrenamiento matemático, y para esos lectores los lemas y sus demostraciones son una forma natural de construir comprensión
La matemática no es solo demostraciones, también es una forma de comunicación
Hay muchas maneras de explicar cómo funcionan las redes neuronales: diagramas, código, palabras y también notación matemática bastante densa
En vez de construir intuición a partir de la teoría, normalmente es más fácil adquirir primero la intuición y luego entender las partes técnicas
Esto suele ser cierto en las ciencias exactas, especialmente en matemáticas, y por eso los ejemplos ayudan
Me pregunto si la razón por la que el deep learning es una ciencia empírica es que todos le tienen miedo a las matemáticas
Es un campo tan rico como la física moderna, pero extrañamente la mayoría de los profesionales parecen querer seguir pensando como si estuvieran en el Lejano Oeste
También hay muchos investigadores de deep learning con una inclinación matemática muy fuerte
La razón por la que el deep learning es una ciencia empírica es que las herramientas matemáticas que tenemos no son suficientes para explicar y predecir los fenómenos observados dentro de una teoría unificada
Que sea una ciencia empírica no significa que el campo sea el “Lejano Oeste”
Los modelos de deep learning pueden ser objeto de experimentos controlados y repetibles, y con eso podemos mejorar nuestra comprensión de lo que ocurrirá en la mayoría de los casos
Los buenos profesionales lo saben
Se puede hacer mucho sin demasiada matemática más allá de álgebra lineal, cálculo y probabilidad de nivel universitario, y ese conocimiento se usa sobre todo para dar intuición y formalizar un poco el problema que se está resolviendo
Se pueden lograr resultados, incluso resultados impresionantes, haciendo muy poca matemática
Como resultado, la gente muestra y resuelve empíricamente problemas nuevos muy rápido, mucho más rápido que la aparición de resultados teóricos que expliquen por qué funcionan
Hay varias razones por las que la teoría es difícil, pero una importante es que muchos casos de éxito del deep learning no encajan bien en marcos existentes como la estadística o el control óptimo, y por eso son difíciles de explicar
Me pregunto si alguien usa realmente esta matemática
Mi sospecha se acerca a que no, y siendo generoso, parece más bien un apoyo mental que tranquiliza a los investigadores de deep learning diciéndoles que lo que quieren hacer no es imposible
Con gusto admitiré que me equivoco si es así
No necesitas necesariamente matemáticas para construir un buen modelo, pero necesitas saber matemáticas para entender por qué el modelo está equivocado
Por eso las matemáticas son necesarias
Sin matemáticas, uno se engaña pensando que con solo aumentar la escala se puede llegar a la AGI
Usarás Transformers en todas partes porque todos los usan, y te vas a confundir entre funciones de activación
Puedes crear un modelo que funcione, pero hay una gran diferencia entre un modelo que funciona y entender sus límites, además de poder anticipar dónde fallará
Mucha gente parece ver solo los resultados del conjunto de prueba y esperar que el modelo no esté sobreajustado
Ni hablar de ajustar hiperparámetros usando los resultados del conjunto de prueba
Imagina una informática sin teorías con corrección demostrada y propiedades conocidas, como algoritmos de ordenamiento o algoritmos de búsqueda
Esta matemática cumple el mismo papel que la teoría de la informática
Si solo ajustas modelos en una librería como Keras, en realidad no “usas” esa matemática
Si el dataset está por debajo de cierto tamaño, el problema por debajo de cierta complejidad y el modelo lleva años desplegado y sus propiedades han sido bien estudiadas, puedes hacer muchas cosas con apenas una comprensión superficial de la matemática
Es parecido a poder crear una webapp completamente funcional sin saber a fondo cómo funciona el runtime de Python o Java
Pero si no sabes cómo funcionan realmente las cosas, te vas a atascar bastante cuando te encuentres con una situación que no venga ya cubierta por la librería
Para ver qué pasa cuando no se conoce la matemática de base, basta mirar a la generación actual de graduados en “ciencia de datos” que no conocen los fundamentos de matemáticas y estadística
También hay muchos problemas del lado de la contratación, pero al final la razón por la que no consiguen empleo es que nunca se les obligó a aprender esto y en realidad no saben qué están haciendo
Así que sí hay quienes la usan
En este caso, ofrece a los profesionales una forma de verificar la consistencia física entre distintos métodos
Entonces diría que es contenido que alguien que trabaja en machine learning usa todos los días
Me pregunto si es común subir un libro, especialmente uno recién publicado, directamente a ArXiv
Al menos lo he visto a menudo en textos de matemáticas e informática