En 'Python Deep Learning' nos encontramos con una muy buena introducción al campo del Deep Learning, una introducción muy didáctica en que todo
el desarrollo teórico, que se realiza con bastante simplicidad, se acompaña de ejemplos reales realizados, como se indica en el subtítulo de la
obra, usando las librerías Keras y TensorFlow 2.
El libros se estructura en catorce capítulos agrupados en cuatro partes, como sigue:
- 'PARTE I: INTRODUCCIÓN': Una primera parte todavía muy introductoria centrada en aportar algunas definiciones y en poner en marcha las herramientas de
trabajo
- 'Capítulo 1: ¿Qué es el Deep Leaning?': Comienza explicando lo que es Inteligencia Aritifical y sus clases y situando al
Machine Learning y al Deep learning en ese contexto. Luego introduce el Machine Learning y los tipos de aprendizaje para
pasar a continuación a presentar el concepto de
redes neuronales y sus tipos principales. Y finaliza el capítulo dando algunas de las razones que explican el auge actual del deep learning.
- 'Capítulo 2: Entorno de trabajo': Un capítulo práctico para explicar cómo disponer de un entorno en Google Colab y Jupyter Notebook
incluyendo TensorFlow y Keras.
- 'Capítulo 3: Python y sus librerías': Otro capítulo un poco de apoyo para hablar de Python explicando sus fundamentos y la
librería NumPy.
- 'PARTE II: FUNDAMENTOS DEL DEEP LEARNING':
Explica los fundamentos nucleares de las redes neuronales y el
deep learning
- 'Capítulo 4: Redes neuronales densamente conectadas': Comienza por el principio, explicando las neuronas artificiales y de forma muy
simple los algoritmos de regresión. A continuación habla del perceptrón y el perceptrón multicapa y cómo se usa en problemas de clasificación. De cara
a su aplicación en clasificación, también introducela función de activación 'softmax'. Y todo ello lo aplica al caso de reconocimiento de dígitos
escritos a mano usando la base MNIST.
- 'Capítulo 5: Redes neuronales en Keras': Una vez entendidos los conceptos, en este capítulo los traslada a la librería Keras.
Apoyándose en el caso de reconocimiento de dígitos manuscritos, explica la precarga de datos, la definición del modelo (cómo añadir capas y definir la función de activación),
cómo configurar el proceso de aprendizaje, cómo evaluar el modelo y, finalmente, como hacer predicciones.
- 'Capítulo 6: Cómo se entrena una red neuronal': Primero explica un esquema general de red neuronal y su aprendizaje donde se ven con
claridad elementos como la red propiamente dicha, la función de pérdida, los optimizadores y los parámetros. También plantea un modelo general del
aprendizaje de una red. Luego explica el algoritmo de descenso del gradiente y cómo se implementa en
Keras. A continuación se centra en la función de pérdida
para cerrar con los optimizadores.
- 'Capítulo 7: Parámetros e hiperparámetros en redes neuronales': Empieza explicando por qué son necesarios los parámetros y la diferencia
entre parámetros e hiperparámetros y los dos tipos de hiperparámetros existentes (de estructura y de algoritmo de aprendizaje). Comienza por explicar los
hiperparámetros relacionados con el aprendizaje como el número de 'epochs', el tamaño del batch, la tasa de aprendizaje ('learning rate') y el
decaimiento de la tasa de aprendizaje ('learning rate decay'), el momento ('momentum') y la inicialización de los pesos. Luego pasa a las funciones de
activación y comenta, en concreto, la lineal, la sigmoide, la tangente hiperbólica, la 'softmax' y la ReLU. Finaliza con un caso práctco de clasificación binaria y cómo
se maneja TensorFlow Playground.
- 'Capítulo 8: redes neuronales convolucionales': Capítulo dedicado a explicar este tipo de redes tan usadas en visión artificial.
Primero explica un poco el concepto de red convolucional y sus componentes básicos empezando por detallar cómo funciona la operación de convolución,
incluyendo el 'pooling'. A continuaición explica cómo hacer una red en Keras, detallando la parte estructural, la eleccción de hiperparámetros y su aplicación
al caso de la base de datos de moda 'Fashion - MNIST'. Al hilo del ejemplo explica algunos detalles más avanzado como el 'dropout' y la normalización.
- 'PARTE III: TÉCNICAS DEL DEEP LEARNING': Una parte menos conceptual y más de aplicación
- 'Capítulo 9: Etapas de un proyecto de Deep Learning': Nos propone un modelo de etapas para realizar un proyecto de deep learning.
Empezando por la Definición del problema, nos habla de la preparación de datos donde nos explica, por ejemplo, la diferencia y criterios para
la separación en datos de entrenamiento, validación y prueba y algunas estrategias posibles de validación. En la segunda fase,
Desarrollar el modelo
vemos como definirlo, configurarlo en canto a función de pérdida y optimizador y cómo entrenar al modelo. La tercera fase sería la
Evaluación donde comienza
por indicarnos cómo visualizar un modelo y nos habla del sobre-ajuste (over-fitting'), la detención temprana ('early stopping' y la evaluación.
- 'Capítulo 10: Datos para entrenar redes neuronales': Trata de los datos de entrenamiento y nos indica, para empezar, dónde conseguir
datos públicos, cómo descargarlos y usarlos y detalla, a modo de ejemplo, los datos de imágenes 'Dogs vs. Cats' de Kaggle. Nos habla también, y aplicado
a este caso, el objeto ImageDataGenerator. Nos comenta también cómo solucionar problemas de sobre-ajsute y algunas ideas para construir modelos cuando
se dispone de pocos datos.
- 'Capítulo 11: Data augmentation y Transfer Learning': Dos técnicas relacionadas con el entrenamiento. La primera,
'Data Augmentation' tiene
que ver con generar más datos a partir de los disponibles para entrenamento como una forma de soluciones el sobre-ajuste. Lo explica con un caso de imágenes
explicando formas de obtener nuevas imágenes a partir de las existentes mediante rotación, volteo, etc y cómo configurar ImageGenerator. Luego salta al
'Transfer
Learning' que tiene que ver con el uso de redes pre-entrenadas como punto de partida y, así, nos habla de la extracción de características y del ajuste fino.
- 'Capítulo 12: Arquitecturas avanzadas de redes neuronales': Presenta soluciones más avanzadas. Comienza por hablar del API funcional de Keras que, aunque
algo menos sencilla que el API básica, permite cualquier tipo de modelos, incluyendo los más avanzados. Luego aborda las redes neuronales preentrenadas
con nombre propio como AlexNet, VGG o ResNet y cómo acceder a ellas y usarlas en Keras.
- 'PARTE IV: DEEP LEARNING GENERATIVO': Una última parte con, quizá, una de las áreas más avanzadas y espectaculares del deep learning, las
redes capaces de 'crear' nuevos contenidos: texto, imágenes, etc
- 'Capítulo 13: Redes neuronales recurrentes': Explica las redes neuronales recurrentes (RNN), unas redes que tienen en cuenta la historia
anterior lo que las faculta para disponer de una cierta memoria y poder tratar series temporales. Nos explica cómo sería una célula de memoria, cómo
se hace la retropropagación en el tiempo y alguna problemática como los 'exploding gradients' y los 'vanishing gradients' en que los gradientes resultan
demasiado grandes y demasiado pequeños respectivamente. Nos habla también de las redes LSTM y de cómo vectorizar texto para el caso en que vayamos a utilizar
las redes recurrentes en el procesamiento de texto, con técnicas como 'one-hot' o el 'embedding' de palabras. Luego propone
un ejemplo de generación de texto usando una red recurrente
- 'Capítulo 14: Generative Adversarial Networks': Finaliza con el caso de las redes adversarias. Explica las motivaciones y arquitecturas y
el modo de entrenamiento y luego construye en Keras una red adversaria específica.
Tras los capítulos, cierra con una 'Clausura' breve y luago aporta cuatro apéndices:
- 'Apéndice A: Traducción de los principales términos': Una útil correspondencia de términos en Inglés y Castellano.
- 'Apéndoce b: Tutorial de Google Colaboratory: ': Un poco más de detalle sobre el uso del entorno en Google Colaboratory y Jupyter Notebook
propuesto en el segundo capítulo.
- 'Capítulo 11: Breve tutorial de TensorFlow Playground': Otro tutorial, en este caso sobre la herramienta TensorFlow Playground para
la visualización de redes sencillas.
- 'Capítulo 12: Arquitectura de ResNet50': Detalle de la arquitectura de una de las redes con nombre propio mencionadas en el capítulo 12.
'Python Deep Learning' es un muy buen libro, con explicaciones claras y abundancia de ejemplos prácticos. Un libro con un equilibrio muy conseguido
entre la aportación de conceptos y su aplicación práctica y también con un nivel de dificultad muy acertado, que permite su lectura sin excesivos
conocimientos previos pero que, a pesar de ello, llega a un nivel de explicación y profundidad bastante razonable.
Muy recomendable.
|