Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Lo que no puedo crear, no lo comprendo.

Richard Feynman

La IA Generativa es una de las tecnologías más revolucionarias de nuestro tiempo, que está transformando la forma en que interactuamos con las máquinas. Su potencial para revolucionar nuestra forma de vivir, trabajar y jugar ha sido objeto de innumerables conversaciones, debates y predicciones. Pero, ¿y si esta poderosa tecnología tuviera un potencial aún mayor? ¿Y si las posibilidades de la IA generativa se extendieran más allá de nuestra imaginación actual? El futuro de la IA generativa puede ser más apasionante de lo que jamás creímos posible...

Desde nuestros primeros días, hemos buscado oportunidades para generar creaciones originales y bellas. Para los primeros humanos, esto tomó la forma de pinturas rupestres que representaban animales salvajes y dibujos abstractos, creados con pigmentos colocados cuidadosa y metódicamente sobre la roca. La Era Romántica nos dio la maestría de las sinfonías de Tchaikovsky, con su capacidad para inspirar sentimientos de triunfo y tragedia a través de ondas sonoras, entretejidas para formar bellas melodías y armonías. Y en los últimos tiempos, nos hemos encontrado corriendo a las librerías a medianoche para comprar historias sobre un mago ficticio, porque la combinación de letras crea una narración que nos obliga a pasar la página y averiguar qué le ocurre a nuestro héroe.

Por tanto, no es sorprendente que la humanidad haya empezado a plantearse la cuestión última de la creatividad: ¿podemos crear algo que sea en sí mismo creativo?

Esta es la pregunta a la que pretende responder la IA generativa. Con los recientes avances en metodología y tecnología, ahora somos capaces de construir máquinas que pueden pintar obras de arte originales con un estilo determinado, escribir bloques de texto coherentes con una estructura a largo plazo, componer música agradable de escuchar y desarrollar estrategias ganadoras para juegos complejos generando escenarios futuros imaginarios. Esto es sólo el principio de una revolución generativa que no nos dejará más remedio que encontrar respuestas a algunas de las preguntas más importantes sobre la mecánica de la creatividad y, en última instancia, sobre lo que significa ser humano.

En resumen, nunca ha habido un momento mejor para aprender sobre IA generativa, ¡así que empecemos!

Objetivo y enfoque

Este libro de no asume ningún conocimiento previo de la IA generativa. Construiremos todos los conceptos clave desde cero de un modo intuitivo y fácil de seguir, así que no te preocupes si no tienes experiencia con la IA generativa. ¡Has llegado al lugar adecuado!

En lugar de abarcar únicamente las técnicas que están actualmente en boga, este libro sirve de guía completa para el modelado generativo que cubre una amplia gama de familias de modelos. No hay ninguna técnica que sea objetivamente mejor o peor que otra; de hecho, muchos modelos de última generación mezclan ahora ideas de todo el amplio espectro de enfoques del modelado generativo. Por este motivo, es importante mantenerse al día de los avances en todas las áreas de la IA generativa, en lugar de centrarse en un tipo concreto de técnica. Una cosa es cierta: el campo de la IA generativa avanza rápidamente, ¡y nunca se sabe de dónde vendrá la próxima idea innovadora!

Teniendo esto en cuenta, el enfoque que voy a adoptar es mostrarte cómo entrenar tus propios modelos generativos con tus propios datos, en lugar de confiar en modelos preentrenados listos para usar. Aunque ahora hay muchos modelos generativos de código abierto impresionantes que pueden descargarse y ejecutarse con unas pocas líneas de código, el objetivo de este libro es profundizar en su arquitectura y diseño desde los primeros principios, para que adquieras una comprensión completa de cómo funcionan y puedas codificar ejemplos de cada técnica desde cero utilizando Python y Keras.

En resumen, este libro puede considerarse un mapa del panorama actual de la IA generativa que abarca tanto la teoría como las aplicaciones prácticas, e incluye ejemplos prácticos completos de modelos clave de la bibliografía. Recorreremos el código de cada uno de ellos paso a paso, con indicaciones claras que muestran cómo el código implementa la teoría que sustenta cada técnica. Este libro puede leerse de principio a fin o utilizarse como libro de consulta en el que puedes sumergirte. Sobre todo, ¡espero que te resulte una lectura útil y agradable!

Nota

A lo largo del libro, encontrarás breves historias alegóricas que ayudan a explicar la mecánica de algunos de los modelos que construiremos. Creo que una de las mejores formas de enseñar una nueva teoría abstracta es convertirla primero en algo que no sea tan abstracto, como una historia, antes de sumergirse en la explicación técnica. La historia y la explicación del modelo no son más que la misma mecánica explicada en dos ámbitos diferentes, por lo que puede resultarte útil consultar la historia correspondiente mientras aprendes los detalles técnicos de cada modelo.

Requisitos previos

Este libro de asume que tienes experiencia codificando en Python. Si no estás familiarizado con Python, el mejor lugar para empezar es a través de LearnPython.org. Hay muchos recursos gratuitos en línea que te permitirán desarrollar suficientes conocimientos de Python para trabajar con los ejemplos de este libro.

Además, dado que algunos de los modelos se describen utilizando notación matemática, será útil tener conocimientos sólidos de álgebra lineal (por ejemplo, multiplicación de matrices) y de teoría general de la probabilidad. Un recurso útil es el libro de Deisenroth et al. Mathematics for Machine Learning (Cambridge University Press), disponible gratuitamente.

El libro no asume ningún conocimiento previo del modelado generativo (examinaremos los conceptos clave en el Capítulo 1) ni de TensorFlow y Keras (estas bibliotecas se presentarán en el Capítulo 2).

Mapa de carreteras

Este libro está dividido en tres partes.

La Parte I es una introducción general al modelado generativo y al aprendizaje profundo, donde exploramos los conceptos básicos que sustentan todas las técnicas de las partes posteriores del libro:

  • En el Capítulo 1, "Modelado Generativo", definimos el modelado generativo y consideramos un ejemplo de juguete que podemos utilizar para comprender algunos de los conceptos clave que son importantes para todos los modelos generativos. También exponemos la taxonomía de familias de modelos generativos que exploraremos en la Parte II de este libro.

  • En el Capítulo 2, "Aprendizaje profundo", comenzamos nuestra exploración del aprendizaje profundo y las redes neuronales construyendo nuestro primer ejemplo de perceptrón multicapa (MLP) utilizando Keras. Luego lo adaptamos para incluir capas convolucionales y otras mejoras, para observar la diferencia de rendimiento.

La Parte II recorre las seis técnicas clave que utilizaremos para construir modelos generativos, con ejemplos prácticos de cada una de ellas:

  • En el Capítulo 3, "Autoencodificadores variacionales", consideramos el autoencodificador variacional (VAE) y vemos cómo puede utilizarse para generar imágenes de rostros y morfos entre rostros en el espacio latente del modelo.

  • En el Capítulo 4, "Redes Generativas Adversariales ", exploramos las redes generativas adversariales (GAN) para la generación de imágenes, incluidas las GAN convolucionales profundas, las GAN condicionales y mejoras como la GAN de Wasserstein, que hacen que el proceso de entrenamiento sea más estable.

  • En el Capítulo 5, "Modelos autorregresivos ", centramos nuestra atención en los modelos autorregresivos, comenzando con una introducción a las redes neuronales recurrentes, como las redes de memoria a largo plazo (LSTM) para la generación de texto y PixelCNN para la generación de imágenes.

  • En el Capítulo 6, "Normalización de los modelos de flujo", nos centramos en la normalización de los flujos, incluyendo una exploración teórica intuitiva de la técnica y un ejemplo práctico de cómo construir un modelo RealNVP para generar imágenes.

  • En el Capítulo 7, "Modelos basados en la energía ", cubrimos los modelos basados en la energía, incluyendo métodos importantes como la forma de entrenar utilizando la divergencia contrastiva y muestrear utilizando la dinámica de Langevin.

  • En el Capítulo 8, "Modelos de difusión", nos sumergimos en una guía práctica para construir modelos de difusión, que impulsan muchos modelos de generación de imágenes de última generación, como DALL.E 2 y Difusión Estable.

Por último, en la Parte III nos basamos en estos fundamentos para explorar el funcionamiento interno de los modelos más avanzados de generación de imágenes, escritura, composición musical y aprendizaje por refuerzo basado en modelos:

  • En el Capítulo 9, "Transformadores", exploramos el linaje y los detalles técnicos de los modelos StyleGAN, así como de otros GAN de última generación para la generación de imágenes, como VQ-GAN.

  • En el Capítulo 10, "GANs avanzados", consideramos la arquitectura Transformer, incluyendo un recorrido práctico para construir tu propia versión de GPT para la generación de texto.

  • En el Capítulo 11, "Generación de música", centramos nuestra atención en la generación de música, incluyendo una guía para trabajar con datos musicales y la aplicación de técnicas como Transformers y MuseGAN.

  • En el capítulo 12, "Modelos del mundo ", vemos cómo pueden utilizarse los modelos generativos en el contexto del aprendizaje por refuerzo, con la aplicación de modelos del mundo y métodos basados en Transformadores.

  • En el Capítulo 13, "Modelos multimodales", explicamos el funcionamiento interno de cuatro modelos multimodales de última generación que incorporan más de un tipo de datos, incluidos DALL.E 2, Imagen y Difusión Estable para la generación de texto a imagen y Flamingo, un modelo de lenguaje visual.

  • En el Capítulo 14, "Conclusión", recapitulamos los principales hitos de la IA generativa hasta la fecha y debatimos las formas en que la IA generativa revolucionará nuestra vida cotidiana en los próximos años.

Cambios en la Segunda Edición

Gracias a todos los que leísteis la primera edición de este libro; me complace mucho que tantos de vosotros lo hayáis considerado un recurso útil y hayáis aportado vuestras opiniones sobre las cosas que os gustaría ver en la segunda edición. El campo del aprendizaje profundo generativo ha progresado significativamente desde que se publicó la primera edición en 2019, así que, además de refrescar el contenido existente, he añadido varios capítulos nuevos para adaptar el material al estado actual de la técnica.

A continuación se presenta un resumen de las principales actualizaciones, en cuanto a los capítulos individuales y las mejoras generales del libro:

  • El Capítulo 1 incluye ahora una sección sobre las distintas familias de modelos generativos y una taxonomía de cómo están relacionados.

  • El capítulo 2 contiene diagramas mejorados y explicaciones más detalladas de los conceptos clave.

  • El capítulo 3 se ha actualizado con un nuevo ejemplo práctico y lasexplicaciones correspondientes.

  • El capítulo 4 incluye ahora una explicación de las arquitecturas GAN condicionales.

  • El Capítulo 5 incluye ahora una sección sobre modelos autorregresivos para imágenes (por ejemplo,PixelCNN).

  • El capítulo 6 es un capítulo totalmente nuevo, que describe el modelo RealNVP.

  • El capítulo 7 también es un capítulo nuevo, centrado en técnicas como la dinámica de Langevin y la divergencia contrastiva.

  • El capítulo 8 es un capítulo de nueva redacción sobre la eliminación de ruido de los modelos de difusión que impulsan muchas de las aplicaciones actuales más avanzadas.

  • El capítulo 9 es una ampliación del material proporcionado en la conclusión de la primera edición, con un enfoque más profundo en las arquitecturas de los distintos modelos StyleGAN y nuevo material sobre VQ-GAN.

  • El capítulo 10 es un nuevo capítulo que explora en detalle la arquitectura Transformer.

  • El capítulo 11 incluye arquitecturas Transformer modernas, que sustituyen a los modelos LSTM de la primera edición.

  • El capítulo 12 incluye diagramas y descripciones actualizados, con una sección sobre cómo este enfoque está informando el aprendizaje de refuerzo de última generación en la actualidad.

  • El capítulo 13 es un capítulo nuevo que explica detalladamente cómo funcionan modelos impresionantes como DALL.E 2, Imagen, Difusión Estable y Flamingo.

  • El capítulo 14 se ha actualizado para reflejar los extraordinarios avances en este campo desde la primera edición y ofrecer una visión más completa y detallada de hacia dónde se dirige la IA generativa en el futuro.

  • Todos los comentarios recibidos sobre la primera edición y los errores tipográficos detectados se han solucionado (¡hasta donde yo sé!).

  • Se han añadido objetivos de capítulo al principio de cada capítulo, para que puedas ver los temas clave tratados en el capítulo antes de empezar a leer.

  • Algunas de las historias alegóricas se han reescrito para que sean más concisas yclaras: ¡me complace que tantos lectores hayan dicho que las historias les han ayudado a comprender mejor los conceptos clave!

  • Los títulos y subtítulos de cada capítulo se han alineado para que quede claro qué partes del capítulo se centran en la explicación y cuáles en la construcción de tus propios modelos.

Otros recursos

Recomiendo encarecidamente los siguientes libros como introducciones generales al aprendizaje automático y al aprendizaje profundo:

La mayoría de los artículos de que aparecen en este libro proceden de arXiv, un repositorio gratuito de artículos de investigación científica. En la actualidad, es habitual que los autores publiquen artículos en arXiv antes de que estén totalmente revisados por pares. Revisar los envíos recientes es una forma estupenda de mantenerse al día de los avances más punteros en este campo.

También recomiendo encarecidamente el sitio web Papers with Code, donde puedes encontrar los últimos resultados del estado de la técnica en diversas tareas de aprendizaje automático, junto con enlaces a los documentos y repositorios oficiales de GitHub. Es un recurso excelente para cualquiera que desee comprender rápidamente qué técnicas están obteniendo actualmente las puntuaciones más altas en una serie de tareas, y sin duda me ha ayudado a decidir qué técnicas incluir en este libro.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza para comandos y listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento significa una advertencia o precaución.

Código base

Los ejemplos de código de este libro pueden encontrarse en un repositorio de GitHub. Me he asegurado deliberadamente de que ninguno de los modelos requiera cantidades prohibitivamente grandes de recursos computacionales para entrenarse, de modo que puedas empezar a entrenar tus propios modelos sin tener que gastar mucho tiempo o dinero en hardware caro. Hay una guía completa en el repositorio sobre cómo empezar con Docker y configurar recursos en la nube con GPU en Google Cloud si es necesario.

Se han introducido los siguientes cambios en el código base desde la primera edición:

  • Ahora todos los ejemplos pueden ejecutarse desde un único cuaderno, en lugar de importar código de módulos de toda la base de código. Esto es para que puedas ejecutar cada ejemplo celda por celda y profundizar en cómo se construye exactamente cada modelo, pieza por pieza.

  • Las secciones de cada cuaderno están ahora ampliamente alineadas entre los ejemplos.

  • Muchos de los ejemplos de este libro utilizan ahora fragmentos de código del increíble repositorio de código abierto de Keras,para evitar crear un repositorio de código abierto completamente independiente de ejemplos de IA generativa de Keras, cuando ya existen excelentes implementaciones disponibles a través del sitio web de Keras. He añadido referencias y enlaces a los autores originales del código que he utilizado del sitio web de Keras a lo largo de este libro y en el repositorio.

  • He añadido nuevas fuentes de datos y he mejorado el proceso de recopilación de datos de la primera edición: ahora hay un script que se puede ejecutar fácilmente para recopilar datos de las fuentes necesarias para entrenar los ejemplos del libro, utilizando herramientas como la API de Kaggle.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requierepermiso.

Agradecemos, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Aprendizaje profundo generativo, 2ª edición, por David Foster (O'Reilly). Copyright 2023 Applied Data Science Partners Ltd., 978-1-098-13418-1".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial :

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/generative-dl-2e.

Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media

Míranos en YouTube: https://youtube.com/oreillymedia

Agradecimientos

Hay muchas personas a las que me gustaría dar las gracias por ayudarme a escribir este libro.

En primer lugar, me gustaría dar las gracias a todos los que han dedicado su tiempo a revisar técnicamente el libro, en particular a Vishwesh Ravi Shrimali, Lipi Deepaakshi Patnaik, Luba Elliot y Lorna Barclay. Gracias también a Samir Bico por ayudarnos a revisar y probar el código base que acompaña a este libro. Su aportación ha sido inestimable.

También quiero dar las gracias a mis colegas de Applied Data Science Partners, Ross Witeszczak, Amy Bull, Ali Parandeh, Zine Eddine, Joe Rowe, Gerta Salillari, Aleshia Parkes, Evelina Kireilyte, Riccardo Tolli, Mai Do, Khaleel Syed y Will Holmes. Aprecio enormemente vuestra paciencia conmigo mientras me he tomado tiempo para terminar el libro, ¡y estoy deseando ver todos los proyectos de aprendizaje automático que completaremos juntos en el futuro! Un agradecimiento especial a Ross: si no hubiéramos decidido emprender un negocio juntos, este libro nunca habría tomado forma, ¡así que gracias por creer en mí como tu socio!

También quiero dar las gracias a todos los que alguna vez me han enseñado algo de matemáticas: tuve la gran suerte de tener unos profesores de matemáticas fantásticos en el colegio, que desarrollaron mi interés por la materia y me animaron a seguir estudiándola en la universidad. Quiero darles las gracias por su compromiso y por desvivirse por compartir conmigo sus conocimientos de la materia.

Un enorme agradecimiento al personal de O'Reilly por guiarme a lo largo del proceso de escritura de este libro. Un agradecimiento especial a Michele Cronin, que ha estado ahí en cada paso, proporcionándome útiles comentarios y enviándome amistosos recordatorios para que siguiera completando capítulos. También a Nicole Butterfield, Christopher Faucher, Charles Roumeliotis y Suzanne Huston por llevar el libro a la imprenta, y a Mike Loukides por preguntarme por primera vez si me interesaba escribir un libro. Todos me habéis apoyado mucho en este proyecto desde el principio, y quiero daros las gracias por proporcionarme una plataforma en la que escribir sobre algo que me encanta.

A lo largo del proceso de escritura, mi familia ha sido una fuente constante de ánimo y apoyo. Un enorme agradecimiento a mi madre, Gillian Foster, por revisar cada línea de texto en busca de erratas y por enseñarme a sumar en primer lugar. Su atención al detalle ha sido extremadamente útil al corregir este libro, y estoy muy agradecida por todas las oportunidades que tanto tú como papá me habéis brindado. Mi padre, Clive Foster, me enseñó originalmente a programar un ordenador: este libro está lleno de ejemplos prácticos, y eso es gracias a su paciencia temprana mientras yo trasteaba en BASIC intentando hacer juegos de fútbol cuando era adolescente. Mi hermano, Rob Foster, es el genio más modesto que puedas encontrar, sobre todo en el campo de la lingüística: charlar con él sobre la IA y el futuro del aprendizaje automático basado en texto ha sido increíblemente útil. Por último, me gustaría dar las gracias a mi abuela, que siempre fue una fuente constante de inspiración y diversión para todos nosotros. Su amor por la literatura fue una de las razones por las que decidí por primera vez que escribir un libro sería algo apasionante.

También quiero dar las gracias a mi esposa, Lorna Barclay. Además de proporcionarme apoyo sin fin y tazas de té durante todo el proceso de escritura, ha revisado rigurosamente cada palabra de este libro con meticuloso detalle. No podría haberlo hecho sin ti. Gracias por estar siempre a mi lado y por hacer que este viaje fuera mucho más agradable. Prometo que no hablaré de IA generativa en la mesa durante al menos unos días tras la publicación del libro.

Por último, me gustaría dar las gracias a nuestra preciosa hija Alina por proporcionarme un entretenimiento sin fin durante las largas noches de escritura del libro. Sus adorables risitas han sido la música de fondo perfecta para mi mecanografía. Gracias por ser mi inspiración y por mantenerme siempre alerta. Eres el verdadero cerebro de esta operación.

Get Aprendizaje profundo generativo, 2ª edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.