Prefacio .......................................................................................................................... 17 Acerca de este libro ...................................................................................................... 19 PARTE 1: INTRODUCCIÓN ........................................................................................... 23 CAPÍTULO 1. ¿Qué es el Deep Learning? .................................................................. 25 1.1. Inteligencia artificial ............................................................................................ 26 1.1.1. La inteligencia artificial está cambiando nuestras vidas ............................. 26 1.1.2. Clases de inteligencia artificial .................................................................... 28 1.2. Machine Learning ............................................................................................... 29 1.3. Redes neuronales y Deep Learning ................................................................... 31 1.3.1. Redes neuronales artificiales ...................................................................... 31 1.3.2. Las Deep Networks básicas ........................................................................ 33 1.4. ¿Por qué ahora? ................................................................................................ 34 1.4.1. La supercomputación corazón del Deep Learning ..................................... 34 1.4.2. Los datos, el combustible para la inteligencia artificial ............................... 42 1.4.3. Democratización de la computación ........................................................... 43 1.4.4. Una comunidad de investigación muy colaborativa .................................... 44 CAPÍTULO 2. Entorno de trabajo ................................................................................. 47 2.1. Entorno de trabajo .............................................................................................. 47 2.2. TensorFlow y Keras ........................................................................................... 52 2.2.1. TensorFlow .................................................................................................. 52 2.2.2. Keras ........................................................................................................... 54 CAPÍTULO 3. Python y sus librerías ........................................................................... 57 3.1. Conceptos básicos de Python ............................................................................ 57 3.1.1. Primeros pasos ........................................................................................... 57 3.1.2. Sangrado en Python ................................................................................... 59 3.1.3. Variables, operadores y tipos de datos ....................................................... 60 3.1.4. Tipos de estructuras de datos ..................................................................... 62 3.1.5. Sentencias de control de flujo ..................................................................... 65 3.1.6. Funciones .................................................................................................... 67 3.1.7. Clases ......................................................................................................... 68 3.1.8. Decoradores ................................................................................................ 70 3.2. Librería NumPy ................................................................................................... 72 3.2.1. Tensor ......................................................................................................... 72 3.2.2. Manipulación de los tensores ...................................................................... 75 3.2.3. Valor máximo en un tensor ......................................................................... 77 11 PARTE 2: FUNDAMENTOS DEL DEEP LEARNING .................................................... 79 CAPÍTULO 4. Redes neuronales densamente conectadas ....................................... 81 4.1. Caso de estudio: reconocimiento de dígitos ...................................................... 81 4.2. Una neurona artificial ......................................................................................... 84 4.2.1. Introducción a la terminología y notación básica ........................................ 84 4.2.2. Algoritmos de regresión .............................................................................. 85 4.2.3. Una neurona artificial simple ....................................................................... 86 4.3. Redes neuronales .............................................................................................. 89 4.3.1. Perceptrón ................................................................................................... 89 4.3.2. Perceptrón multicapa .................................................................................. 90 4.3.3. Perceptrón multicapa para clasificación ..................................................... 93 4.4. Función de activación softmax ........................................................................... 94 CAPÍTULO 5. Redes neuronales en Keras ................................................................. 99 5.1. Precarga de los datos en Keras ......................................................................... 99 5.2. Preprocesado de datos de entrada en una red neuronal ................................ 102 5.3. Definición del modelo ....................................................................................... 105 5.4. Configuración del proceso de aprendizaje ....................................................... 108 5.5. Entrenamiento del modelo ............................................................................... 108 5.6. Evaluación del modelo ..................................................................................... 110 5.7. Generación de predicciones ............................................................................. 112 5.8. Todos los pasos de una tirada ......................................................................... 114 CAPÍTULO 6. Cómo se entrena una red neuronal ................................................... 125 6.1. Proceso de aprendizaje de una red neuronal .................................................. 125 6.1.1. Visión global .............................................................................................. 125 6.1.2. Proceso iterativo de aprendizaje de una red neuronal ............................. 128 6.1.3. Piezas clave del proceso de backpropagation.......................................... 130 6.2. Descenso del gradiente .................................................................................... 130 6.2.1. Algoritmo básico de descenso del gradiente ............................................ 131 6.2.2. Tipos de descenso del gradiente .............................................................. 133 6.3. Función de pérdida ........................................................................................... 135 6.4. Optimizadores .................................................................................................. 136 CAPÍTULO 7. Parámetros e hiperparámetros en redes neuronales ...................... 139 7.1. Parametrización de los modelos ...................................................................... 139 7.1.1. Motivación por los hiperparámetros .......................................................... 139 7.1.2. Parámetros e hiperparámetros ................................................................. 140 7.1.3. Grupos de hiperparámetros ...................................................................... 141 12 7.2. Hiperparámetros relacionados con el algoritmo de aprendizaje ...................... 141 7.2.1. Número de epochs .................................................................................... 141 7.2.2. Batch size .................................................................................................. 142 7.2.3. Learning rate y learning rate decay .......................................................... 142 7.2.4. Momentum ................................................................................................ 143 7.2.5. Inicialización de los pesos de los parámetros ........................................... 145 7.3. Funciones de activación ................................................................................... 145 7.4. Practicando con una clasificación binaria ........................................................ 148 7.4.1. TensorFlow Playground ............................................................................ 148 7.4.2. Clasificación con una sola neurona .......................................................... 151 7.4.3. Clasificación con más de una neurona ..................................................... 152 7.4.4. Clasificación con varias capas .................................................................. 154 CAPÍTULO 8. Redes neuronales convolucionales................................................... 157 8.1. Introducción a las redes neuronales convolucionales...................................... 157 8.2. Componentes básicos de una red neuronal convolucional ............................. 159 8.2.1. Operación de convolución ......................................................................... 159 8.2.2. Operación de pooling ................................................................................ 162 8.3. Implementación de un modelo básico en Keras .............................................. 165 8.3.1. Arquitectura básica de una red neuronal convolucional ........................... 165 8.3.2. Un modelo simple ..................................................................................... 166 8.3.3. Configuración, entrenamiento y evaluación del modelo ........................... 169 8.4. Hiperparámetros de la capa convolucional ...................................................... 170 8.4.1. Tamaño y número de filtros ...................................................................... 170 8.4.2. Padding ..................................................................................................... 170 8.4.3. Stride ......................................................................................................... 172 8.5. Conjunto de datos Fashion-MNIST .................................................................. 173 8.5.1. Modelo básico ........................................................................................... 173 8.5.2. Capas y optimizadores .............................................................................. 174 8.5.3. Capas de Dropout y BatchNormalization .................................................. 177 8.5.4. Decaimiento del ratio de aprendizaje ........................................................ 179 PARTE 3: TÉCNICAS DEL DEEP LEARNING ........................................................... 183 CAPÍTULO 9. Etapas de un proyecto Deep Learning .............................................. 185 9.1. Definición del problema .................................................................................... 186 9.2. Preparar los datos ............................................................................................ 187 9.2.1. Obtener los datos ...................................................................................... 187 9.2.2. Separar los datos para entrenar y evaluar el modelo ............................... 190 13 9.3. Desarrollar el modelo ....................................................................................... 194 9.3.1. Definir el modelo ....................................................................................... 194 9.3.2. Configuración del modelo ......................................................................... 195 9.3.3. Entrenamiento del modelo ........................................................................ 197 9.4. Evaluación del modelo ..................................................................................... 199 9.4.1. Visualización del proceso de entrenamiento ............................................ 199 9.4.2. Overfitting .................................................................................................. 200 9.4.3. Early stopping............................................................................................ 201 9.4.4. Evaluación del modelo con los datos de prueba ...................................... 203 9.4.5. Entrenamiento con MAE ........................................................................... 203 CAPÍTULO 10. Datos para entrenar redes neuronales ............................................ 205 10.1. ¿Dónde encontrar datos para entrenar redes neuronales? ........................... 205 10.1.1. Conjuntos de datos públicos .................................................................... 206 10.1.2. Conjuntos de datos precargados ............................................................. 207 10.1.3. Conjuntos de datos de Kaggle ................................................................. 207 10.2. ¿Cómo descargar y usar datos reales? .......................................................... 208 10.2.1. Caso de estudio: «Dogs vs. Cats» ........................................................... 208 10.2.2. Datos para entrenar, validar y probar ...................................................... 210 10.2.3. Modelo de reconocimiento de imágenes reales ...................................... 216 10.2.4. Preprocesado de datos reales con ImageDataGenerator ....................... 219 10.3. Solucionar problemas de sobreentrenamiento ............................................... 220 10.3.1. Modelos a partir de conjuntos de datos pequeños .................................. 220 10.3.2. Visualización del comportamiento del entrenamiento .............................. 223 10.3.3. Técnicas de prevención del sobreentrenamiento .................................... 227 CAPÍTULO 11. Data Augmentation y Transfer Learning ......................................... 231 11.1. Data Augmentation ......................................................................................... 231 11.1.1. Transformaciones de imágenes ............................................................... 231 11.1.2. Configuración de ImageGenerator ........................................................... 232 11.1.3. Código del caso de estudio ...................................................................... 234 11.2. Transfer Learning ............................................................................................ 238 11.2.1. Concepto de Transfer Learning ............................................................... 238 11.2.2. Feature Extraction .................................................................................... 239 11.2.3. Fine-Tuning .............................................................................................. 246 CAPÍTULO 12. Arquitecturas avanzadas de redes neuronales .............................. 255 12.1. API funcional de Keras ................................................................................... 255 12.1.1. Modelo secuencial .................................................................................... 255 14 12.1.2. Modelos complejos ................................................................................... 258 12.2. Redes neuronales preentreenadas ................................................................. 262 12.2.1. Redes neuronales con nombre propio ..................................................... 262 12.2.2. Acceso a redes preentrenadas con la API Keras .................................... 263 12.3. Uso de redes preentrenadas con Keras ......................................................... 268 12.3.1. Conjunto de datos CIFAR-10 ................................................................... 268 12.3.2. Red neuronal ResNet50 ........................................................................... 270 12.3.3. Red neuronal VGG19 ............................................................................... 272 PARTE 4: DEEP LEARNING GENERATIVO .............................................................. 275 CAPÍTULO 13. Redes neuronales recurrentes ......................................................... 277 13.1. Conceptos básicos de las redes neuronales recurrentes ............................... 278 13.1.1. Neurona recurrente .................................................................................. 278 13.1.2. Memory cell .............................................................................................. 279 13.1.3. Backpropagation a través del tiempo ....................................................... 280 13.1.4. Exploding Gradients y Vanishing Gradients............................................. 281 13.1.5. Long-Short Term Memory ........................................................................ 282 13.2. Vectorización de texto ..................................................................................... 282 13.2.1. One-hot encoding ..................................................................................... 283 13.2.2. Word embedding ...................................................................................... 284 13.2.3. Embedding layer de Keras ....................................................................... 286 13.2.4. Usando embedding preentrenados .......................................................... 286 13.3. Programando una RNN: generación de texto ................................................. 287 13.3.1. Character-Level Language Models .......................................................... 288 13.3.2. Descarga y preprocesado de los datos .................................................... 289 13.3.3. Preparación de los datos para ser usados por la RNN ............................ 291 13.3.4. Construcción del modelo RNN ................................................................. 294 13.3.5. Entrenamiento del modelo RNN .............................................................. 297 13.3.6. Generación de texto usando el modelo RNN........................................... 299 13.3.7. Generando texto falso de Shakespeare ................................................... 303 CAPÍTULO 14. Generative Adversarial Networks .................................................... 307 14.1. Generative Adversarial Networks ................................................................... 307 14.1.1. Motivación por las GAN ............................................................................ 308 14.1.2. Arquitectura de las GAN ........................................................................... 309 14.1.3. Proceso de entrenamiento ....................................................................... 310 14.2. Programando una GAN .................................................................................. 311 14.2.1. Preparación del entorno y descarga de datos ......................................... 314 15 14.2.2. Creación de los modelos .......................................................................... 315 14.2.3. Funciones de pérdida y optimizadores .................................................... 321 14.3. Entrenamiento con la API de bajo nivel de TensorFlow ................................ 323 14.3.1. API de bajo nivel de TensorFlow .............................................................. 323 14.3.2. Algoritmo de aprendizaje a bajo nivel ...................................................... 324 14.3.3. Entrenamiento de las redes GAN ............................................................ 325 14.3.4. Mejora del rendimiento computacional con decoradores de funciones ... 329 14.3.5. Evaluación de los resultados ................................................................... 330 Clausura ....................................................................................................................... 337 Apéndices .................................................................................................................... 339 Apéndice A: Traducción de los principales términos ............................................. 341 Apéndice B: Tutorial de Google Colaboratory ......................................................... 345 Apéndice C: Breve tutorial de TensorFlow Playground ......................................... 359 Apéndice D: Arquitectura de ResNet50 .................................................................... 369 Agradecimientos ......................................................................................................... 377 Índice alfabético .......................................................................................................... 379
El presente libro está enfocado en mostrar al lector, de una manera práctica y concreta, el interesante mundo que surge al usar Deep Learning; se trata de una guía para adquirir los conocimientos que permitan trabajar con Deep Learning mediante la librería TensorFlow, la cual es preciso utilizar si se quiere desarrollar y evaluar modelos Deep Learning. La librería TensorFlow permite prescindir en gran medida de las matemáticas al iniciarse o crear proyectos generadores de valor para una empresa. El contenido de esta obra muestra ejemplos de código práctico introducidos de forma lineal para explicar los conceptos fundamentales en lugar de enfocarse en conceptos teóricos que pueden resultar abrumadores para un lector que no cuenta con los conocimientos previos mínimos en Machine Learning. Empero, es imperativo tener en cuenta que aquí sólo se puede analizar una pequeña parte, ya que es imposible exponer en un único libro el alcance total de Deep Learning.