PYTHON DEEP LEARNING
FICHA
Foto Título:            PYTHON DEEP LEARNING. INTRODUCCIÓN PRÁCTICA CON KERAS Y TENSORFLOW 2
Autor:            Jordi Torres
Editorial:       Marcombo
Idioma:         Español
Páginas:        415
Publicación:  2020
Lectura:         2020
COMENTARIO EDITORIAL
(Fuente: Descripción de producto en Amazon)

La inteligencia artificial permite la innovación y el cambio en todos los aspectos de la vida moderna. La mayoría de los avances actuales se basan en Deep Learning, un área de conocimiento muy madura que permite a las empresas desarrollar y poner en producción sus algoritmos de aprendizaje automático. Muchos profesionales interesados en comprender el Deep Learning tienen dificultades en establecer una ruta adecuada para empezar y saltar la barrera de entrada en este campo de innovación, debido a su complejidad y falta de manuales sobre el tema. Por ello, este libro proporciona todos los contenidos necesarios para entender qué es el Deep Learning y conocer las posibilidades de esta tecnología. Gracias a la combinación de los principios teóricos del Deep Learning y el enfoque práctico de codificación, se iniciará en este apasionante mundo mediante el lenguaje Python y la API Keras de la librería TensorFlow, el entorno más popular para desarrollar aplicaciones Deep Learning tanto a nivel de empresa como de proveedores Cloud. Asimismo, conocerá las principales redes neuronales actuales, como las redes neuronales convolucionales, las redes neuronales recurrentes o las Generative Adversarial Network, entre otras. Además, en la parte inferior de la primera página encontrará el código de acceso que le permitirá acceder de forma gratuita a los códigos del libro en www.marcombo.info.

Tanto si tiene poca experiencia en programación, como si es un programador experimentado, consiga este libro y obtenga las habilidades prácticas básicas que le permitirán comprender cómo funciona y qué hace posible (y qué no) el uso del Deep Learning en sus propios proyectos.

Jordi Torres es catedrático en la UPC Barcelona Tech y lidera el grupo de investigación Emerging Technologies for Artificial Intelligence en el Barcelona Supercomputing Center. Tiene más de 30 años de experiencia en docencia e investigación en computación de altas prestaciones y ha publicado libros científicos y proyectos de I+D en empresas e instituciones. Es consejero delegado por la UPC en la empresa iThinkUPC, y actúa como formador y experto para diversas organizaciones y empresas. A su vez, imparte conferencias, colabora con diferentes medios de comunicación y mantiene un blog sobre ciencia y tecnología en www.torres.ai

COMENTARIO PERSONAL

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.