2 puntos por GN⁺ 2024-01-02 | 1 comentarios | Compartir por WhatsApp
  • 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
  • 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

 
GN⁺ 2024-01-02
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.

    • Creo que no saber “por qué funcionan esos métodos” es, en la práctica, el estado actual de todo el campo, ¿no?
      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.

    • Me pregunto si alguien encontró una forma de imprimir bien el libro de Fleuret en papel A4.
      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 da curiosidad qué destaca más en comparación con el libro del post original.
  • 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.

    • Tengo un doctorado en matemáticas y experiencia como posdoc, luego pasé a trabajar en deep learning, y este año enseñé deep learning a estudiantes de maestría en matemática y estadística.
      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.
    • La notación matemática es más compacta, así que puede tomar tiempo acostumbrarse.
      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.
    • Este libro fue escrito por matemáticos aplicados para la matemática aplicada; aunque en el prólogo diga que es un libro para científicos, algunos científicos teóricos e ingenieros son, en la práctica, bastante cercanos a matemáticos aplicados.
      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.
    • Los tres autores son doctores en matemáticas o estudiantes de doctorado, así que la notación es extremadamente densa.
      Me pregunto quiénes son exactamente esos lectores objetivo llamados “estudiantes y científicos”.
    • Aunque tengo una formación matemática fuerte, la notación me pareció completamente absurda.
      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/)

    • Este libro no está dirigido a profesionales prácticos, pero tampoco veo motivo para llamarlo “activamente de lo peor”
      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
    • UDL también tiene una notación matemática bastante densa
      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
    • El trasfondo matemático empieza a tener sentido solo después de entender razonablemente bien el tema, y por eso creo que la gente asume erróneamente que entender la matemática ayuda a aprender todo el tema
      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

    • No
      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
    • Hay un poco de ambas cosas
      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í

    • Hay algo que siempre les digo a mis estudiantes
      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
    • Llamarlo “apoyo mental” lo subestima demasiado
      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
    • A algunas personas les gusta pensar y comunicarse con notación matemática densa
      Así que sí hay quienes la usan
    • En la parte final del libro, donde se tratan las PINN y otros métodos de ecuaciones diferenciales parciales, ayuda a verlos dentro del mismo marco que el análisis funcional usado al desarrollar métodos tradicionales de análisis numérico
      En este caso, ofrece a los profesionales una forma de verificar la consistencia física entre distintos métodos
    • Según el resumen, parece cubrir varias arquitecturas de ANN, algoritmos de optimización y quizá también backpropagation
      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

    • No es tan raro que un libro esté disponible en línea desde una ubicación oficial
      Al menos lo he visto a menudo en textos de matemáticas e informática