Hola! Este es el mapa para cuando yo ya no esté al lado
Catorce 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 11, 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 12, las conexiones residuales. Deep Residual Learning for Image Recognition (2015), el que hizo posibles las redes de cien capas.
- 🎬 Capítulo 14, la inicialización de He. Delving Deep into Rectifiers (2015), de donde sale esa raíz de 2 partido entre las entradas.
- 📚 Capítulo 10, los embeddings. Efficient Estimation of Word Representations in Vector Space (2013), que es el de word2vec.
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 💛
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 14 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 9 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. La difusión es otra familia y merece su propio libro.
- 🖥️ 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 14 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 del capítulo
9 y 14 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 para análisis de datos. Si el numpy de aquí te costó, empieza ahí.
- 🗄️ SQL desde cero. Porque los datos casi nunca llegan en CSV.
- 📊 Estadística para analizar datos. 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 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!