Descripción de contenidos del libro Deep Learning – Introducción práctica con Keras

Acerca de este libro

En este libro el lector encontrará una guía para adentrarse de manera práctica a Deep Learning con la ayuda de la librería Keras, la cual aprenderá a usar con el objetivo de desarrollar y evaluar modelos Deep Learning. Aunque Deep Learning se sustenta en fascinantes matemáticas, estas no son estrictamente necesarias para poder iniciarse, ni siquiera para crear proyectos que generen valor a la empresa gracias a librerías Python como Keras.

Por ello, este libro se centrará en temas prácticos y concretos para descubrir al lector el apasionante mundo que se abre con el uso de Deep Learning, teniendo siempre en mente que solo podremos examinar una pequeña parte, pues es imposible mostrar su alcance total en un único libro; tan  solo mantenerse al día de las últimas investigaciones, tecnologías o herramientas que van apareciendo es casi misión imposible, o como diría un amigo inglés, “like drinking from a fire hose”, como beber de una manguera contra incendios.

A quién va dirigido el libro

Esta es una obra introductoria, ideada inicialmente para dar soporte a mi docencia en la UPC a alumnos y alumnas de ingeniería informática pero con pocos o ningún conocimiento de Machine Learning. Pero a su vez, este libro puede ser también útil a ingenieros e ingenieras que ya dejaron las aulas y se encuentran trabajando pero requieren, o simplemente les apetece, aprender sobre este tema.

Por ello el libro está escrito en forma de “distancia corta”, por así decirlo, con el lector, como si estuviéramos en una de mis clases en la UPC. Para facilitarlo, introduciré los conocimientos y conceptos en forma lineal, intentando involucrar al lector al requerirle que esté en todo momento con el teclado delante y probando lo que le voy contando.

No obstante, esta no es una obra para todo el mundo, y es importante que el lector calibre bien sus expectativas; aquí no va a encontrarse explicaciones sobre la teoría fundamental de redes neuronales artificiales, ni se ofrecen detalles de cómo funcionan internamente los algoritmos relacionados con el tema. Por tanto, no es recomendable a quienes ya estén programando redes neuronales en algún otro entorno que no sea Keras, y si fuese esta librería su campo de interés, quizá este es un camino demasiado largo para conocerla.

Organización del libro

El libro se organiza en capítulos que deben ser leídos en orden, ya que van guiando al lector y lo introducen gradualmente a los conocimientos imprescindibles para seguir los ejemplos prácticos, intentando ir al grano y ser lo más conciso posible. Al ser un libro introductorio, considero que es mucho más útil este enfoque que no uno más formal. A pesar de todo, he intentado que el índice del libro exprese un mapa razonablemente ordenado de los principales conceptos del área.

El borrador del libro completo está compuesto en estos momentos por ocho capítulos que mezclan el contenido teórico y práctico, creando un viaje donde se repasan conceptos de las tres familias de arquitecturas de redes neuronales con las que el lector acabará estando familiarizado: redes neuronales densamente conectadas (densely connected networks), redes neuronales convolucionales (convolutional neural networks) y, finalmente, redes neuronales recurrentes (recurrent neural networks).

Para ser una herramienta de soporte adaptada a mi docencia, la organización del libro está concebida para intentar equilibrar la carga de trabajo que se requiere para aprender los conceptos teóricos y prácticos que se proponen en cada capítulo. En alguno de ellos se dedica más tiempo a “teoría” y en algún otro a “práctica”, pero la idea es que en global queden compensados.

El libro contiene claramente dos partes: una más básica, que sigue la fórmula del libro que escribí sobre TensorFlow, Hello World en TensorFlow, en enero del 2016 y que tuvo gran aceptación. Por tanto, he decidido seguir parcialmente su planteamiento. Esta es la parte que encontrarán en este avance de publicación de la primera mitad del libro.

Antes de empezar con el primer capítulo me he permitido introducir cómo empecé a investigar en este tema y el porqué considero que el desencadenante principal de esta resurrección de la inteligencia artificial se debe a la supercomputación.

El primer capítulo contiene una motivación al tema y las instrucciones para preparar el entorno de trabajo para poder seguir los detalles de código que se irán presentando a continuación.

En el segundo capítulo, a partir de un caso de estudio, se explican los conceptos básicos de una red neuronal. Luego introducimos las redes neuronales densamente conectadas y mostramos su implementación con Keras.

En el tercer capítulo presentamos cómo se realiza el proceso de aprendizaje de una red neuronal, adentrándonos en algunos de sus componentes más importantes. La segunda parte del capítulo invita al lector a que practique los conocimientos adquiridos con TensorFlow playground.

En el capítulo cuarto, ya preparado el lector con una base importante de cómo son las redes neuronales, presentamos e implementamos las redes neuronales convolucionales, una de las familias de redes neuronales más populares en estos momentos.

La segunda parte del libro abarca una introducción a todos los conceptos que actualmente se tratan en Deep Learning para que el lector al acabar el libro completo tenga una visión general del tema y pueda empezar por su cuenta a profundizar en aquellos aspectos que crea que le aportan más valor. Espero que esta parte de la obra pueda ver la luz en pocos meses. Por favor, ¡crucen los dedos conmigo!.

En estos momentos, el borrador del quinto capítulo describe cómo se pueden obtener los datos y cómo se preprocesan, con especial atención en el caso de ser texto cuando se quiere entrenar una red neuronal. A continuación analizamos desde un punto de vista absolutamente práctico cómo puede ser la prevención del sobreajuste (overfitting) de los modelos a los datos.

El capítulo sexto lo centraremos en uno de los problemas más habituales en Deep Learning en el mundo real, como es el no tener suficientes datos para entrenar nuestras redes. Se explicarán varias técnicas frecuentemente utilizadas en estos momentos en proyectos reales (transfer learning, data augmentation, etc.).

En el séptimo capítulo se introducen las redes neuronales recurrentes, que a pesar de tener requerimientos de computación importantes se están popularizando mucho en la industria.

Y, finalmente, en el capítulo octavo vamos a presentar la API funcional de Keras que permite implementar arquitecturas más complejas, e introducimos algunas de las que actualmente gozan de gran populariodad, como las GAN entre otras.

El libro acaba con una clausura donde me permitiré hacer unas reflexiones sobre el tema y su impacto. En esta edición de la primera parte del libro he incluido una versión preliminar de esta clausura.

Este libro va acompañado de un repositorio de código en el GitHub donde el lector puede encontrar los ejemplos presentados en el mismo. Muchos de los ejemplos usados están inspirados en los  que François Chollet ha compartido en el GitHub de su último libro, Deep Learning with Python[1]. ¡Gracias, François!

Requisitos para seguir el libro

Como hemos mencionado con frecuencia, esta obra pretende ser una introducción; por ello, no es necesario que el lector sea un experto en Python, solo ha de tener, evidentemente, conocimientos de programación e interés en aprender por su cuenta detalles del lenguaje cuando no los entienda.

Tampoco se necesita ser un experto en Machine Learning, pero está claro que puede ser muy útil conocer unos primeros conceptos sobre el tema. Solo se suponen los conocimientos básicos en matemáticas de cualquier estudiante (de bachillerato de la rama científico-técnica). A partir de ellos, a lo largo de los capítulos se repasan muy brevemente los conceptos más importantes de Machine Learning que se puedan requerir.

Asumimos que el lector, antes de empezar a leer, tiene instalado Python y el paquete de Keras en su ordenador, portátil o su instancia de máquina virtual en  Cloud. Es importante remarcar que todos los códigos que se proponen al lector en esta primera parte del libro para que los pruebe en su ordenador pueden ser ejecutados en una plataforma que solo tenga CPU; no es un requisito tener una GPU[2]. Pero sí que es cierto que en la versión final del libro se propondrán códigos que requieren entrenamientos de redes que en plataformas con solo CPU pueden tardar horas. En este caso, y si el lector le apetece, les propondremos que cancelen el proceso de cálculo de aprendizaje de los parámetros y sigan las instrucciones para descargar los resultados (de una versión ya entrenada) de una ejecución que hemos realizado nosotros con la ayuda  de una GPU y que contendrá los mismos valores que el lector llegaría a conseguir en su ordenador.

¡Pero lo más importante, en cuanto a prerrequisitos, es tener interés por aprender!

¿Por qué Keras?

Keras[3] es la librería recomendada para beginners, puesto que su curva de aprendizaje es muy suave en comparación con otras, a la vez que es, sin duda, una de las herramientas para implementar redes neuronales de mayor popularidad en el momento después de TensorFlow.

Keras es una librería de Python que proporciona, de una manera sencilla, la creación de una gran gama de modelos de Deep Learning usando como backend otras librerías como TensorFlow, Theano o CNTK. Fue desarrollado y es mantenido por François Chollet[4], ingeniero de Google, y su código ha sido liberado bajo la licencia permisiva del MIT.

Personalmente, valoro la austeridad y simplicidad que presenta este modelo de programación, sin adornos y maximizando la legibilidad; permite expresar redes neuronales de una manera muy modular, considerando un modelo como una secuencia (o un grafo si se trata de modelos más avanzados que trataremos en el capítulo 8). Por último, pero no menos importante, creo que es un gran acierto haberse decantado por usar el lenguaje de programación Python; por todo ello, he considerado usar Keras en este libro.

Keras en estos momentos se encuentra incluido en Tensorflow, pero además se puede usar como una librería de Python. Para iniciarse en el tema considero que esta segunda opción es la más adecuada y para ello mi propuesta será usar Jupyter[5], puesto que es un entorno de desarrollo muy extendido y muy fácil de usar. Más adelante presentaremos cómo poder poner a punto nuestro entorno de trabajo.


Referencias:

[1] Véase GithHub Companion Jupyter notebooks for the book “Deep Learning with Python” by François Chollet Accesible en: https://github.com/fchollet/deep-learning-with-python-notebooks

[2] Para aquellos que no conozcan a que nos referimos por GPU, no se preocupen, las presentaremos más adelante.

[3]Véase más en las páginas de documentación de Keras  disponibles en:  https://keras.io

[4] Remito aquí la cuenta de Twitter del creador: https://twitter.com/fchollet, que verán que es una persona muy activa en twitter.

[5] Véase https://jupyter.org

2018-06-12T19:56:02+00:00 June 11th, 2018|