Entender el aprendizaje profundo
(udlbook.github.io)- Es un sitio de aprendizaje que reúne en un solo lugar prácticas de programación, materiales de clase y lecturas adicionales para estudiar siguiendo el libro de 2023 de MIT Press Understanding Deep Learning de Simon J.D. Prince
- Ofrece 68 notebooks de Python que cubren todo el libro, con una modalidad práctica en la que el estudiante completa código faltante mientras sigue el texto
- Los materiales para docentes incluyen archivos de figuras, clases en video de los primeros 12 capítulos, diapositivas, un cuadernillo de respuestas, figuras interactivas para clase e incluso archivos LaTeX de ecuaciones
- Las diapositivas están pensadas para un curso universitario de aprendizaje profundo de 20 clases, y van desde aprendizaje supervisado hasta CNN, generación de imágenes, Transformers and LLMs
- Los materiales de lectura adicional se amplían hacia visión por computadora, matemáticas para machine learning, optimización, aprendizaje por refuerzo, teoría de ML, Responsible AI y más, por lo que sirven tanto para autoestudio como para preparar cursos
Información del libro y cita
- Understanding Deep Learning es un libro escrito por Simon J.D. Prince, y la información de citación BibTeX indica que fue publicado por MIT Press en 2023
- La entrada BibTeX proporcionada incluye la siguiente información
author = "Simon J.D. Prince"title = "Understanding Deep Learning"publisher = "The MIT Press"year = 2023url = "http://udlbook.com"
Prácticas de programación para seguir el libro
- El sitio ofrece 68 prácticas en notebooks de Python que cubren el libro completo
- Las prácticas tienen un formato en el que se completa código faltante con base en el texto
- Los notebooks están en el repositorio de GitHub
udlbook/udlbook, y cada elemento puede abrirse con enlacesipynb/colab -
Fundamentos y construcción de redes neuronales
- Los capítulos iniciales cubren matemáticas de base, aprendizaje supervisado, redes neuronales poco profundas, funciones de activación, composición de redes y redes neuronales profundas
- Las prácticas sobre funciones de pérdida incluyen least squares loss, binary cross-entropy loss y multiclass cross-entropy loss
-
Optimización y cálculo del aprendizaje
- Los notebooks de optimización cubren line search, gradient descent, stochastic gradient descent, momentum y Adam
- Las prácticas de cálculo de gradientes incluyen backpropagation en un toy model, backpropagation general e initialization
-
Rendimiento, regularización y CNN
- Las prácticas relacionadas con rendimiento cubren MNIST-1D performance, bias-variance trade-off, double descent y high-dimensional spaces
- Las prácticas de regularización incluyen L2 regularization, implicit regularization, ensembling, Bayesian approach y augmentation
- Las prácticas de convolution incluyen 1D convolution, MNIST-1D convolution, 2D convolution, downsampling & upsampling y convolution para MNIST
-
Temas modernos de aprendizaje profundo
- Los notebooks sobre estabilización y arquitectura de redes cubren shattered gradients, residual networks y batch normalization
- Las prácticas de Transformer incluyen self-attention, multi-head self-attention, tokenization y decoding strategies
- Los temas de redes neuronales de grafos incluyen graph representation, graph classification, neighborhood sampling y graph attention networks
- Las prácticas sobre modelos generativos cubren GAN toy example, Wasserstein distance, normalizing flows, latent variable models y diffusion models
- Las prácticas de aprendizaje por refuerzo cubren Markov decision processes, dynamic programming, Monte-Carlo methods, temporal difference methods y control variates
- Entre los temas finales están random data, full-batch gradient descent, lottery tickets, adversarial attacks, bias mitigation y explainability
Clases y materiales para docentes
- Los recursos para docentes incluyen material gráfico, diapositivas y un cuadernillo de respuestas
- Al registrarse en MIT Press, se ofrece un enlace de registro para obtener el answer booklet
- Las figuras interactivas son materiales usados para explicar ideas en clase
- Se ofrece un archivo Latex de trabajo que incluye todas las ecuaciones
-
Diapositivas para un curso universitario de aprendizaje profundo de 20 clases
- Las diapositivas son material para un curso universitario de aprendizaje profundo de 20 clases
- Los temas de las diapositivas publicadas incluyen Introduction, Supervised Learning, Shallow Neural Networks, Deep Neural Networks, Loss Functions, Fitting Models, Computing Gradients, Initialization, Performance, Regularization, Convolutional Networks, Image Generation, Transformers and LLMs
Materiales de lectura adicional
- El sitio también reúne otros artículos, blogs y libros con un estilo similar y la misma notación que Understanding Deep Learning como materiales complementarios
-
Visión por computadora y fundamentos de machine learning
- Computer vision: models, learning, and inference es un libro publicado por CUP en 2012, enfocado en modelos probabilísticos e incluye mucho contenido de ML de la etapa previa al deep learning
- Los materiales de matemáticas para machine learning cubren álgebra lineal, introducción a probabilidad, distribuciones de probabilidad, ajuste de distribuciones de probabilidad y distribución normal
- Los materiales de machine learning incluyen learning and inference, regression models, classification models, few-shot learning y meta-learning
-
Transformers, LLMs, NLP
- Los materiales sobre Transformers y LLMs incluyen panorama general de LLM, Transformers I·II·III, entrenamiento y fine-tuning de LLM, y aceleración de inferencia de LLM
- Los materiales de NLP cubren neural natural language generation, parsing I·II·III y XLNet
- Los temas relacionados con Transformer incluyen self-attention, position encoding, estructura multi-head, Transformer block, encoder, decoder y training tricks
-
Optimización, modelos temporales y aprendizaje por refuerzo
- Los materiales de optimización incluyen gradient-based optimization, Bayesian optimization y SAT Solvers I·II·III
- Los materiales sobre modelos temporales cubren Kalman filter, smoothing, Extended Kalman filter, Unscented Kalman filter y particle filtering
- El material de aprendizaje por refuerzo Transformers in RL incluye tareas de RL, ventajas de Transformer en RL, representation learning, reward learning, policy learning, interpretability y applications
-
ODEs, SDEs y teoría de ML
- El conjunto ODEs and SDEs in machine learning cubre ODEs, SDEs, gradient descent, stochastic gradient descent, residual networks, diffusion models y physics-informed machine learning
- Los materiales relacionados incluyen introducción a ODE, closed-form solutions de ODE, métodos numéricos para ODE y stochastic processes and SDEs
- Los materiales de ML Theory incluyen gradient flow, neural tangent kernel, aplicaciones de NTK, Bayesian ML I·II, Bayesian neural networks y neural network Gaussian processes
-
Aprendizaje no supervisado, modelos gráficos y Responsible AI
- Los materiales de aprendizaje no supervisado cubren complex data densities, variational autoencoders y normalizing flows
- Los materiales de modelos gráficos incluyen graphical models, models for chains and trees y models for grids
- Los materiales de Responsible AI incluyen bias and fairness, explainability I·II y differential privacy I·II
1 comentarios
Opiniones de Hacker News
Aquí los comentarios se dividen, en general, en dos grupos: 1) se pueden construir sistemas de IA sin este conocimiento, así que no hace falta saberlo, 2) para entender qué está pasando realmente, se necesita este conocimiento básico
Ambas posturas son válidas, y creo que el campo se está separando en dos capacidades: ingeniero de ML y científico/investigador de ML
Es bueno tener ambos en un equipo. El científico puede ser más lento, y el ingeniero prueba rápido varias API y modelos open source, pero cuando se atascan o hay que cambiar el algoritmo, muchos ingenieros titubean. Ahí se necesita una forma de pensar de I+D que para muchos ingenieros resulta ajena, y el científico de IA se vuelve importante
En los últimos 10 años vi el mismo patrón en varios equipos. La empresa consigue algo de presupuesto y cree que su problema es especial, así que contrata doctores en ciencia de datos con algunos papers, pero muchas veces solo saben R y apenas acaban de salir de un bootcamp de Python
Pasan 3 meses y hay pocos resultados, solo una pila de notebooks de Jupyter; no hay código de producción y, en algunos casos, ni siquiera un entorno de experimentación
El problema de negocio sigue igual. La empresa termina dándose cuenta de que, si tiene muchos científicos de datos y le faltan ingenieros de datos/ML, se atasca en el despliegue a producción o termina creando una Estrella de la Muerte de pipeline de datos + algoritmo + infraestructura por falta de comprensión de Python, usando 70% más recursos
Los proyectos se retrasan y la gente se desespera. Ahora un equipo que cuesta 2.5 millones de dólares al año ni siquiera puede entregar una prueba de concepto porque no logra servir nada por batch o por una REST API
La empresa pierde impulso, mientras que la competencia lanza una solución imperfecta pero adelantada, atrae usuarios y sigue mejorándola. Después, PM y engineering manager se pelean por la responsabilidad, y el VP de producto/ingeniería empieza a buscar un chivo expiatorio. Algunos doctores son despedidos y terminan dando clases en la universidad local
En ese sentido, no sé de dónde sale esta división entre ingeniero/científico de ML; parece una distinción que algunos hacen para sentirse mejor consigo mismos
Habiéndome perdido esto, me pregunto si aprenderlo ahora tiene ya solo un significado histórico o si todavía sigue siendo relevante para conseguir trabajo en el futuro
Con todo lo relacionado con IA, uno se imagina que OpenAI va a quitarle el almuerzo a todo el mundo; ¿es una idea totalmente errada?
Materiales como el video reciente de Karpathy explicando LLM son una buena introducción con poca exageración para el público general, pero ese nivel extra de intuición práctica es difícil de conseguir si no lo haces tú mismo. No hace falta memorizar toda la matemática, pero sí conviene saber cómo se siente la “interfaz” de los componentes
Importa qué hace realmente cada técnica de modelo, especialmente qué hace en tiempo de inferencia, cuando debe integrarse bien con el resto del stack
Sobre si sigue siendo relevante: deep learning, en el sentido de redes neuronales densas entrenadas para optimizar una función específica, no ha cambiado de forma fundamental en la práctica en unos 15 años, y teóricamente existe desde hace más tiempo; para la mayoría de los usos, es mucho más importante y más usado que lo tipo OpenAI
Cosas como optimización de anuncios o modelado financiero, donde hay estimación numérica, no usan LLM; usan modelos hechos a la medida como parte de un sistema más grande. La interfaz de “metes números y recibes números” es explicable, fácil de integrar en el stack de software y fácil de medir
Tiene márgenes de error comprensibles y, a veces, hasta es consistente. También ofrece una interfaz controlable que no de pronto escupe secretos de la empresa ni se olvida de serializar JSON. La latencia y el costo también son mucho menores
Si tienes que renderizar una página web en menos de 100ms o correr una optimización sobre millones de opciones, la IA generativa no es una opción práctica, y no creo que lo vaya a ser pronto
No tengo una gran base en matemáticas o ML teórico, pero pasé la mayor parte de los últimos 10 años trabajando junto a especialistas de ML para construir infraestructura, pipelines de datos y monitoreo. No puedo integrar una sigmoide al vuelo, pero ese no es el punto. Ya lo hice una vez, tengo una idea de cómo funciona la función y puedo razonar sobre ella como componente de caja negra
A diferencia de otras áreas de ML, en deep learning los componentes encajan muy bien entre sí. Si quieres, puedes usar un Transformer junto con una CNN. Además, permite aplicar machine learning a cualquier tipo de dato, como texto, imágenes, video y audio, y también escala de manera natural en términos computacionales
Como alguien bastante involucrado en el área, me da pena ver que por culpa de los LLM la gente se aleje de ML y deep learning siguiendo la idea equivocada de que “ya no hay razón para hacerlo”. Los algoritmos grandes son caros de ejecutar, lentos en throughput y por lo general rinden peor que los modelos hechos a la medida. En muchas tareas tampoco son más fáciles de usar que una red codificadora
Puede ser una opinión sesgada, pero me parece una de las áreas más divertidas para aprender en computación. Si tienes una buena idea, incluso con una GPU común en casa puedes crear algo del estado del arte. Solo hay que encontrar un nicho que no reciba tanta atención como los LLM
Deep learning es una parte de eso. Mucho de ello ya viene envuelto en bibliotecas y API, así que se trata de preparar los datos correctos, llamar a la API adecuada y luego aprovechar los resultados
Por ejemplo, a OpenAI no le interesará desarrollar una pequeña red neuronal embebida en un chip sensor que detecte en tiempo real moléculas específicas en el aire
Este libro es impresionante. Incluso tiene un capítulo sobre mi tema favorito, la efectividad irracional del aprendizaje profundo. ¿Hay algún otro libro que valga la pena revisar?
Si tienes prisa, basta con ver la diapositiva 123. Las recomendaciones clave son Murphy, Gelman, Barber y Deisenroth
Hay que tener en cuenta que estas diapositivas tienen un sesgo bayesiano. Aun así, Murphy es un excelente libro de aprendizaje profundo, y también es una buena ruta pasar por modelos lineales generalizados antes de entrar en deep learning
Como dato interesante, el famoso paper de Attention se está acercando a las 10 mil citas y probablemente llegue a eso hacia finales de este año. Es muy posible que sea el paper que más rápido haya alcanzado este hito tan importante
Los libros de aprendizaje profundo escritos antes del paper de Attention deben considerarse desactualizados y necesitan actualización. Es una situación parecida a la de un viejo libro de física que incluye las leyes de Newton pero omite la equivalencia masa-energía de Einstein
Si empiezo ahora a leer y estudiar IA, ¿podría llegar a un nivel cercano al de un experto?
Me preocupa estar iniciando un camino que en realidad requiera una maestría o un doctorado
Pero podría faltarte ese tipo de lecciones prácticas como pequeños trucos e intuiciones necesarias para hacer funcionar sistemas reales. Eso toma tiempo y, como es ciencia, también tiene algo de arte
Preguntas como “¿Puedo convertirme en experto?” son demasiado ambiguas como para servir como una buena referencia
He trabajado durante 10 años con varias plataformas de aprendizaje automático en grandes empresas tecnológicas, y todo en lo que trabajé quedó bastante obsoleto muy rápido
Desde los algoritmos de ML hasta las plataformas de cómputo, todo fue muy pasajero. Si además se suma el hecho de que la mayoría de la innovación en ML proviene de unas pocas empresas de élite, aprender mucho de este material se siente casi como una contradicción
Pero los algoritmos e ideas de aprendizaje automático no. Si aprendiste SVN o naive Bayes y hoy no obtuviste nada útil de eso, en realidad no aprendiste nada
Por ejemplo, Transformer se desarrolló para resolver el desvanecimiento del gradiente de LSTM en secuencias largas, y para mejorar el hecho de que LSTM es inherentemente secuencial en la dimensión temporal, lo que reduce el aprovechamiento de la GPU
Los fundamentos no cambian mucho. En este campo hay muchas corrientes, y hay muchísimos algoritmos que duran mucho tiempo y realmente se usan. Claro, puedes actualizar algunos si quieres, pero si te pasas la vida persiguiendo al conejo blanco, al final solo te quedas con un puñado de pelusa
Personalmente creo que el mismo tipo de fuerzas que impulsa la evolución también impulsa la tecnología. Creo que Linus Torvalds alguna vez dijo que Linux evolucionó mediante selección natural
Es muy difícil evaluar este tipo de libros. ¿Hay que juzgarlos solo por el índice?
Me pregunto quién es el autor, si tiene otras obras bien valoradas, si hay buenas reseñas de personas que conocen el tema o buenas reseñas de estudiantes que no saben nada
Tengo pensado comprar este libro en papel
Preguntabas si se puede juzgar solo por el índice, pero en el sitio enlazado puedes descargar más de 500 páginas de borrador de los capítulos 1 al 21
El autor, Simon J. D. Prince, es profesor emérito de ciencias de la computación en la University of Bath y autor de Computer Vision: Models, Learning and Inference. Es un científico investigador especializado en IA y aprendizaje profundo, y ha dirigido equipos de científicos de investigación tanto en la academia como en la industria en Anthropics Technologies Ltd, Borealis AI y otros lugares
Entre sus otras publicaciones bien valoradas hay más de 50 artículos revisados por pares en conferencias de primer nivel como CVPR, ICCV y SIGGRAPH: https://scholar.google.com/citations?user=fjm67xYAAAAJ&hl=en
En cuanto a reseñas, este libro aún no se publica, y lo que estás viendo ahora es literalmente un borrador gratuito. En Amazon aparece en preventa por 85 dólares
https://github.com/udlbook/udlbook/releases/download/v1.16/U...
Espero que no sea una pregunta tonta, pero ¿cómo se puede comprar el libro en papel?
https://mitpress.mit.edu/9780262048644/understanding-deep-le...
En la figura del PDF, parece que Why does deep learning work apunta a Deep learning and ethics, y viceversa.
Desde la perspectiva de alguien que leyó por última vez Deep Learning de Ian Goodfellow en 2016, resulta interesante que no haya un capítulo sobre RNN y sí uno sobre Transformers.
Por eso ahora casi no se usan. Aun así, en lo personal, me parecen lo bastante interesantes a nivel conceptual como para que valga la pena tratarlas en un curso como este.