viernes, 8 de mayo de 2020

Aprendiendo Deep Learning y Keras con François Chollet

'Deep Learning con Python' es un libro sobre Machine Learning, y más en concreto Deep Learning, en que su autor parece proponerse un doble propósito tratado a partes iguales: por un lado explicar los fundamentos de Deep Learning y, por otro, el uso de la librería Keras, una librería de Deep Learning de alto nivel escrita en Python y creada por el propio autor del libro.

Así. el autor aprovecha en la mayor parte de los capítulos para, por un lado explicar algún algoritmo o alguna particularidad de uso de los algoritmos de Deep Learning y, por otra, introducir alguna nueva función o facilidad de Keras.

El libro se estructura en nueve capítulos agrupados en dos partes conforme al siguiente esquema:
  • 'PARTE 1. FUNDAMENTOS DEL DEEP LEARNING:' una visión algo más transversal e introductoria del deep learning y compuesta por cuatro capítulos, a saber:
    • 'Capítulo 1 ¿Qué es el deep learning?:' Un primer capítulo algo menos práctico que el resto pero muy interesante e ilustrativo donde explica los conceptos de inteligencia artificial, machine learning y deep learning y cómo se relacionan entre sí. Además introduce algunos fundamentos muy básicos pero relevantes de los algoritmos del machine learning y también intenta explicar las razones del auge actual del deep learning.

    • 'Capítulo 2 Los bloques de construcción matemáticos de las redes neuronales:' Comienza 'tirando a la piscina' al lector con un primer ejemplo de red neuronal en Keras para clasificar dígitos manuscritos. Con esa base explica conceptos sobre tensores y sus operaciones y luego el algoritmo de descenso de gradiente.

    • 'Capítulo 3 Iniciarse en las redes neuronales:' Revisa de una forma algo más tranquila y estructurada los elementos de una red neuronal y su implementación en Keras. Comienza explicando, con la ayuda de un diagrama de bloques, el funcionamiento general de una red neuronal y los conceptos de capas, funciones de pérdida y optimizadores. Luego hace una breve introducción a Keras incluyendo cómo instalar y configurar una estación de trabajo para trabajar con Keras, que luego detalla en dos anexos. A continuación desarrolla dos ejemplos de clasificación: primero una clasificación binaria de críticas de películas y luego una clasificación multiclase de noticias de Reuters. Finalmente, desarrolla un último ejemplo, en este caso no de clasificación sino de regresión para el caso de predicción de precios de casas.

    • 'Capítulo 4 Fundamentos del machine learning:' En este capítulo vuelve a un enfoque algo más teórico y de fundamentos. Comienza por explicar los diferentes tipos de aprendizaje usados en machine learning. A continuación explica cómo validar un modelo de machine learning. Salta luego a abordar el procesamiento previo de los datos y la ingeniería de características, para continuar con una explicación sobre lo que es y cómo gestionar el sobreajuste y el subajuste. Y finaliza el capítulo propooniendo un flujo universal de trabajo en machine learning.


  • 'PARTE 2. DEEP LEARNING EN LA PRÁCTICA:' donde en cada capítulo aborda tipologías de uso diferentes el deep learning. Incluye cinco capítulos:
    • 'Capítulo 5 Deep learning para visión por ordenador:' Comienza con una explicación de cierto detalle sobre el funcionamientode las redes de convolución y luego desarrolla un ejemplo que trata imágenes de gatos y perros. Luego explica y ejemplifica mediante un ejemplo la importante idea del uso de redes preentrenadas. Y finaliza contando cómo visualizar la evolución durante el aprendizaje de las redes de convolución

    • 'Capítulo 6 Deep learning para texto y secuencias:' Este capítulo ataca el tratamiento de series temporales y de textos apoyándose en redes recurrentes y en redes de convolución 1D. Comienza explicando conceptos de trabajo con texto como los 'embeddings' de palabras o la codificación 'one-hot'. Luego cuenta cómo son y funcionan las redes recurrentes y las capas LSTM ('Long Short-Term Memory') y GRU ('Gated Recurrent Unit') de Keras. Continua explicando ciertos detalles apoyándose en un ejemplo de predicción de temperatura atmosférica. Finaliza con el uso de redes de convolución para el tratamiento de secuencias.

    • 'Capítulo 7 Prácticas adecuadas de deep learning avanzado:' Explica algunas prácticas algo más avanzadas como el uso del API funcional de Keras, monitorización y actuación de las redes durante el entrenamiento, normalización de lotes, optimización de hiperparámetros, etc

    • 'Capítulo 8 Deep learning generativo:' Se introduce en, si se quiere, la parte más creativa del deep learning abordando temas como la generación de texto con redes recurrentes generativas o la creación de imágenes mediante la técnica de DeepDream. Sigue con la generación de imágenes mediante autocodificadores variacionales y finaliza dando algunas ideas sobre redes antagónicas.

    • 'Capítulo 9 Conclusiones:' Un capítulo final, excelente y muy útil, que resume las principales ideas vistas a lo largo de todo el libro, nos explica algunas de las limitaciones actuales del deep learning y hace unas apuestas sobre el futuro de esta disciplina.

El libro incluye un par de anexos donde se explia con detalle cómo instalar y configurar Keras en dos entornos: Ubuntu y Notebooks Jupyter sobre una instancia de GPU en AWS (EC2).

El estilo de todo el libro es claramente didáctico, intentando hacer muy accesibles todos los conceptos de deep learning explicados. No obstante, conviene estar advertidos de que pese a esas buenas intenciones, y buena ejecución también, el texto no es del todo sencillo dada la complejidad de la materia que trata y podríamos decir que uniendo esos factores contrapuestos, complejidad inherente y estilo didáctico, el resultado es dificultad media salvo, claro está, que ya se sea conocedor, y con base sólida, de deep learning y de python, siendo menos relevante, en mi opinión, el conocimiento previo de Keras.

Se trata, en cualquier caso, de un muy buen libro. Bien explicado, ponderado, ordenado y con abundancia de ejemplos en modo de código y de menciones a su uso y problemáticas de la vida real.

Sin duda, una gran referencia.

François Chollet

(Fuente: Traducción y ligera elaboración propia de su perfil en LinkedIn)

François Chollet
François Chollet es Investigador en Inteligencia Artificial trabajando actualmente en Google.

Es el creador de Keras (keras.io) un muy popular framework de Deep Learning para Python, con más de 350.000 usuarios y más de 700 contribuidores en software abierto (datos de la segunda mitad de 2019). Keras está siendo usada por u considerable número de startups y laboratorios de investigación (incluyendo al CERN, Microsoft Research y NASA), y por grandes compañías como Netflix, Yelp, Square, Uber, Google, etc.

Es autor de artículos aceptados en grandes conferecnias como CVPR, NIPS, ICLR, etc.

Autor del libro 'Deep learning with Python' cib más de 30.000 copias vendidas (hasta la segunda mitad de 2019)

Fundador de Wysp (wysp.ws), una red social y plataforma de aprendizaje para artistas con más de 20.000 usuarios activos mensuales en 2016.

Puedes saber más del autor visitando su página oficial o siguiéndole en twitter donde se identifica como @fchollet.

1 comentario: