Hola! Este es el mapa para cuando yo ya no esté al lado
Dieciocho capítulos escribiendo redes con numpy. Ahora toca lo contrario: aprender las librerías que hacen todo eso por ti 🐣
Y va a ser fácil, que es justamente la gracia de haberlo hecho a mano. Cuando
leas nn.Linear(64, 10) vas a saber que son 650 números; cuando veas
loss.backward() vas a saber qué está calculando; y cuando algo no
entrene, vas a tener dónde mirar.
Las librerías, por orden
| Librería | Dónde | Para qué |
|---|---|---|
| PyTorch | pytorch.org/docs | La que yo aprendería primero. Se escribe casi como numpy |
| Keras | keras.io | La más rápida para montar algo estándar |
| TensorFlow | tensorflow.org/api_docs | Debajo de Keras, y fuerte en despliegue |
| Hugging Face | huggingface.co/docs | Modelos ya entrenados, que es como empieza casi todo proyecto real |
Y una recomendación que va en serio: casi nunca vas a entrenar desde cero. Lo normal es bajar un modelo ya entrenado de Hugging Face y ajustarlo, o usarlo tal cual. Entrenar desde cero es lo que hicimos en este libro para entenderlo, no lo que se hace un martes cualquiera 🧰
El paper de cada capítulo
Casi todas las ideas del libro salen de un paper concreto, y varios se leen sorprendentemente bien:
- 🔺 Capítulo 16, la atención. Attention Is All You Need (2017). Ocho páginas y cambió el campo entero. La figura 2 es exactamente lo que escribimos.
- ✂️ Capítulo 3, ReLU. Deep Sparse Rectifier Neural Networks (2011), donde está medido lo de la activación dispersa que vimos.
- 🎲 Capítulo 8, dropout. Dropout: A Simple Way to Prevent Neural Networks from Overfitting (2014).
- ➕ Capítulo 17, las conexiones residuales. Deep Residual Learning for Image Recognition (2015), el que hizo posibles las redes de cien capas.
- 🎬 Capítulo 21, la inicialización de He. Delving Deep into Rectifiers (2015), de donde sale esa raíz de 2 partido entre las entradas.
- 📚 Capítulo 13, los embeddings. Efficient Estimation of Word Representations in Vector Space (2013), que es el de word2vec.
- 📏 Capítulo 10, la normalización. Batch Normalization (2015), y encima How Does Batch Normalization Help Optimization? (2018), que mide que la explicación del primero no era la buena. Leerlos seguidos enseña más que cualquiera de los dos suelto.
- 🌀 Capítulo 20, la difusión. Denoising Diffusion Probabilistic Models (2020). Lo que se escribe en ese capítulo es su algoritmo 1 y su algoritmo 2, sin recortes.
Léelos en ese orden si te animas. Y si un paper se te atraganta, no es culpa tuya: están escritos para gente que ya trabaja en eso 💛
Y antes de que cierres el libro, contéstate una: ¿qué es lo primero que vas a construir tú con esto? No tiene que ser grande. Tiene que ser tuyo, que es lo que hace que se quede 💜
Lo que yo estudiaría, en este orden
- 1️⃣ Deep Learning, de Goodfellow, Bengio y Courville. Gratis y completo en esa página. Es el libro de referencia del campo, denso pero honesto.
- 2️⃣ Dive into Deep Learning, gratis y con todo el código ejecutable en PyTorch. Es el que más se parece a lo que hicimos aquí, con librería en vez de a mano.
- 3️⃣ El tutorial oficial de PyTorch. Dos tardes y ya montas lo del capítulo 21 en veinte líneas.
- 4️⃣ Neural Networks: Zero to Hero, de Andrej Karpathy. Construye un modelo de lenguaje desde cero en video, con el mismo espíritu de este libro y bastante más lejos.
Lo que este libro no cubre
Prefiero decírtelo yo a que lo descubras cuando te lo pidan 🙃
- ⚙️ El entrenamiento de verdad. Optimizadores mejores que el descenso simple (Adam sobre todo), tasas de aprendizaje que cambian solas, y todo lo que hace falta para que entrenar una semana no se caiga.
- 🖼️ Visión moderna. Nuestra convolución del capítulo 11 es de juguete. Las arquitecturas reales, la detección de objetos y la segmentación son un campo entero.
- 🔊 Audio y video. Ni los mencionamos.
- 🎨 Los modelos que generan imágenes de verdad. La difusión está en el capítulo 20, pero en versión de juguete: 8 por 8 píxeles y diez categorías. Lo que hace falta para llegar a una imagen grande a partir de una frase es otro libro entero.
- 🖥️ Las GPU. Todo lo del libro corre en el procesador porque es chiquito. Entrenar de verdad es aprender a mover datos entre tarjetas.
- 🚀 Poner una red en producción. El capítulo 21 del libro de machine learning aplica igual, y encima con modelos que pesan gigas.
Y sobre lo que sí cubre
El libro entero corre sin TensorFlow y sin PyTorch, porque en el entorno donde se escribe no están instalados. Al principio pareció una limitación y creo que salió al revés.
Sin librería que esconda el cálculo, la neurona, el gradiente, la retropropagación, la convolución y la atención hubo que escribirlas. Y una vez escritas, ya no hay ninguna parte de una red que tengas que dar por buena porque alguien lo dijo 🔧
Lo que sí hay es MLPClassifier de scikit-learn, que se usó en los
capítulos 1 y 3 para comparar contra lo hecho a mano. Y los dígitos de los capítulos
11, 20 y
21 vienen dentro de scikit-learn, así que no hay nada que
descargar.
Dónde practicar
- 🔢 Los datasets de scikit-learn, que se cargan en una línea. Los dígitos de este libro salen de ahí.
- 🌎 Kaggle, con imágenes, audio y texto de todo tipo.
- 🤗 Los datasets de Hugging Face, sobre todo para texto.
- 🇵🇪 Datos Abiertos del Perú, que casi siempre son tablas, o sea que casi siempre la respuesta va a ser el libro anterior 😄
Los otros libros de esta casa
- 🤖 Machine learning desde cero. El anterior a este, y el que responde la mayoría de las preguntas de empresa.
- 🐍 Python desde cero. Si el numpy de aquí te costó, empieza ahí.
- 🗄️ SQL desde cero. Porque los datos casi nunca llegan en CSV.
- 📊 Estadística desde cero. Los intervalos y el bootstrap que aquí usamos de refilón.
Sobre los datos de este libro
Se usaron tres cosas. El CSV de ventas de los otros libros, para los capítulos tabulares. Los 1.797 dígitos que vienen dentro de scikit-learn, para la convolución y el proyecto final. Y unos comentarios de clientes que escribí yo para los capítulos de texto, con la forma de los que le llegan a una distribuidora.
Los números del libro salen de correr el código sobre eso. Si corres tú lo mismo, te tienen que salir iguales; si no salen, escríbeme.
Y si quieres correrlo sin copiar y pegar capítulo por capítulo, ahí está el cuaderno del libro: la comparación del capítulo 1, la neurona, el XOR, la convolución y la atención, en un solo archivo que se abre en Google Colab 📓
Y ya está
Si llegaste hasta acá, gracias de verdad 💛
Este libro empieza diciendo cuándo no usar una red neuronal y termina con una
que reconoce números al 97,56%. Entre medio hay unas cuantas veces donde el
resultado me desmintió: la red perdiendo contra tres líneas de regresión, el
identity ganando en el capítulo 3, la explicación del escalado que no
aguantó la comprobación, el XOR que se atascó nueve de cada diez veces.
Todas están ahí sin maquillar, porque creo que esa es la parte que más se parece al trabajo de verdad 🌸
Que tengas lindo día!