Modelos generativos
Este artículo describe cuatro proyectos que comparten un tema común de mejorar o usar modelos generativos, una rama de técnicas de aprendizaje no supervisadas en el aprendizaje automático. Además de describir nuestro trabajo, este post te contará un poco más sobre los modelos generativos: qué son, por qué son importantes y hacia dónde podrían ir.
Una de nuestras principales aspiraciones en OpenAI es desarrollar algoritmos y técnicas que doten a las computadoras de una comprensión de nuestro mundo.
Es fácil olvidar lo mucho que sabes sobre el mundo: entiendes que está compuesto por entornos 3D, objetos que se mueven, chocan, interactúan; personas que caminan, hablan y piensan; animales que pastan, vuelan, corren o ladran; monitores que muestran información codificada en lenguaje sobre el clima, quién ganó un partido de baloncesto o lo que sucedió en 1970.
Esta enorme cantidad de información está disponible y en gran medida es de fácil acceso, ya sea en el mundo físico de los átomos o en el mundo digital de los bits. La única parte difícil es desarrollar modelos y algoritmos que puedan analizar y comprender este tesoro de información.
Los modelos generativos son uno de los enfoques más prometedores hacia este objetivo. Para entrenar un modelo generativo, primero recopilamos una gran cantidad de datos en algún dominio (por ejemplo, piensa en millones de imágenes, oraciones o sonidos, etc.).) y luego entrenar un modelo para generar datos como este. La intuición detrás de este enfoque sigue una famosa cita de Richard Feynman:
» Lo que no puedo crear, no lo entiendo.»
—Richard Feynman
El truco es que las redes neuronales que utilizamos como modelos generativos tienen una serie de parámetros significativamente más pequeños que la cantidad de datos en los que los entrenamos, por lo que los modelos se ven obligados a descubrir e interiorizar eficientemente la esencia de los datos para generarlos.
Los modelos generativos tienen muchas aplicaciones a corto plazo. Pero a largo plazo, tienen el potencial de aprender automáticamente las características naturales de un conjunto de datos, ya sean categorías o dimensiones u otra cosa por completo.
Generar imágenes
Hagamos esto más concreto con un ejemplo. Supongamos que tenemos una gran colección de imágenes, como los 1,2 millones de imágenes en el conjunto de datos de ImageNet (pero tenga en cuenta que eventualmente podría ser una gran colección de imágenes o videos de Internet o robots). Si redimensionamos cada imagen para que tenga un ancho y un alto de 256 (como se hace comúnmente), nuestro conjunto de datos es un bloque grande de píxeles 1,200,000x256x256x3
(aproximadamente 200 GB). Aquí hay algunas imágenes de ejemplo de este conjunto de datos:
Estas imágenes son ejemplos de cómo se ve nuestro mundo visual y nos referimos a ellas como «muestras de la distribución de datos verdadera». Ahora construimos nuestro modelo generativo que nos gustaría entrenar para generar imágenes como esta desde cero. Concretamente, un modelo generativo en este caso podría ser una gran red neuronal que produce imágenes y nos referimos a ellas como»muestras del modelo».
DCGAN
Uno de estos modelos recientes es la red DCGAN de Radford et al. (se muestra a continuación). Esta red toma como entrada 100 números aleatorios extraídos de una distribución uniforme (nos referimos a estos como un código, o variables latentes, en rojo) y genera una imagen (en este caso 64x64x3
imágenes a la derecha, en verde). A medida que el código se cambia de forma incremental, las imágenes generadas también lo hacen; esto muestra que el modelo ha aprendido características para describir cómo se ve el mundo, en lugar de solo memorizar algunos ejemplos.
La red (en amarillo) se compone de componentes de red neuronal convolucional estándar, como capas deconvolucionales (inversas de capas convolucionales), capas completamente conectadas, etc.:
DCGAN se inicializa con pesos aleatorios, por lo que un código aleatorio conectado a la red generaría una imagen completamente aleatoria. Sin embargo, como puede imaginar, la red tiene millones de parámetros que podemos ajustar, y el objetivo es encontrar una configuración de estos parámetros que haga que las muestras generadas a partir de códigos aleatorios se parezcan a los datos de entrenamiento. O para decirlo de otra manera, queremos que la distribución del modelo coincida con la distribución de datos verdadera en el espacio de las imágenes.
Entrenando un modelo generativo
Supongamos que usamos una red recién inicializada para generar 200 imágenes, cada vez comenzando con un código aleatorio diferente. La pregunta es: ¿cómo debemos ajustar los parámetros de la red para alentarla a producir muestras un poco más creíbles en el futuro? Tenga en cuenta que no estamos en un entorno supervisado simple y no tenemos ningún objetivo deseado explícito para nuestras 200 imágenes generadas; simplemente queremos que se vean reales. Un enfoque inteligente en torno a este problema es seguir el enfoque de la Red de Adversarios Generativos (GAN). Aquí presentamos una segunda red discriminadora (generalmente una red neuronal convolucional estándar) que intenta clasificar si una imagen de entrada es real o generada. Por ejemplo, podríamos alimentar las 200 imágenes generadas y las 200 imágenes reales en el discriminador y entrenarlo como un clasificador estándar para distinguir entre las dos fuentes. Pero además de eso, y aquí está el truco, también podemos backpropagar a través del discriminador y el generador para encontrar cómo debemos cambiar los parámetros del generador para que sus 200 muestras sean un poco más confusas para el discriminador. Por lo tanto, estas dos redes están atrapadas en una batalla: el discriminador está tratando de distinguir imágenes reales de imágenes falsas y el generador está tratando de crear imágenes que hagan que el discriminador piense que son reales. Al final, la red del generador está emitiendo imágenes que son indistinguibles de las imágenes reales para el discriminador.
Hay algunos otros enfoques para emparejar estas distribuciones que analizaremos brevemente a continuación. Pero antes de llegar a continuación hay dos animaciones que muestran muestras de un modelo generativo para darle un sentido visual del proceso de entrenamiento.
En ambos casos, las muestras del generador comienzan a ser ruidosas y caóticas, y con el tiempo convergen para tener estadísticas de imágenes más plausibles:
Esto es emocionante — estas redes neuronales están aprendiendo lo que el mundo visual se parece! Estos modelos generalmente tienen solo unos 100 millones de parámetros, por lo que una red entrenada en ImageNet tiene que comprimir (con pérdidas) 200 GB de datos de píxeles en 100 MB de peso. Esto lo incentiva a descubrir las características más sobresalientes de los datos: por ejemplo, es probable que aprenda que los píxeles cercanos probablemente tengan el mismo color, o que el mundo está compuesto por bordes horizontales o verticales, o manchas de diferentes colores. Eventualmente, el modelo puede descubrir muchas regularidades más complejas: que hay ciertos tipos de fondos, objetos, texturas, que ocurren en ciertos arreglos probables, o que se transforman de ciertas maneras con el tiempo en videos, etc.
Formulación más general
Matemáticamente, pensamos en un conjunto de datos de ejemplos \(x_1, \ldots, x_n\) como muestras de una distribución de datos verdadera \(p (x)\). En la imagen de ejemplo a continuación, la región azul muestra la parte del espacio de imagen que, con una alta probabilidad (por encima de algún umbral) contiene imágenes reales, y los puntos negros indican nuestros puntos de datos (cada uno es una imagen en nuestro conjunto de datos). Ahora, nuestro modelo también describe una distribución \(\hat{p}_{\theta} (x)\) (verde) que se define implícitamente tomando puntos de una distribución gaussiana unitaria (rojo) y mapeándolos a través de una red neuronal (determinista): nuestro modelo generativo (amarillo). Nuestra red es una función con parámetros \(\theta\), y ajustar estos parámetros modificará la distribución generada de las imágenes. Nuestro objetivo es entonces encontrar parámetros \(\theta\) que produzcan una distribución que se acerque a la distribución de datos verdadera (por ejemplo, al tener una pequeña pérdida de divergencia KL). Por lo tanto, puede imaginar que la distribución verde comienza al azar y luego el proceso de entrenamiento cambia iterativamente los parámetros \(\theta\) para estirarla y apretarla para que coincida mejor con la distribución azul.
Tres enfoques para los modelos generativos
La mayoría de los modelos generativos tienen esta configuración básica, pero difieren en los detalles. Aquí hay tres ejemplos populares de enfoques de modelos generativos para darle una idea de la variación:
- Las Redes Generativas Adversariales (GANs), que ya hemos discutido anteriormente, plantean el proceso de entrenamiento como un juego entre dos redes separadas: una red generadora (como se ve anteriormente) y una segunda red discriminativa que intenta clasificar las muestras como provenientes de la distribución verdadera \(p(x)\) o de la distribución modelo \(\hat{p}(x)\). Cada vez que el discriminador nota una diferencia entre las dos distribuciones, el generador ajusta sus parámetros ligeramente para que desaparezca, hasta que al final (en teoría) el generador reproduce exactamente la distribución de datos verdadera y el discriminador adivina al azar, incapaz de encontrar una diferencia.
- Los Autoencoders variacionales (VAEs) nos permiten formalizar este problema en el marco de modelos gráficos probabilísticos donde estamos maximizando un límite inferior en la probabilidad de registro de los datos.
- Los modelos autorregresivos como PixelRNN en su lugar entrenan una red que modela la distribución condicional de cada píxel individual dado los píxeles anteriores (a la izquierda y a la parte superior). Esto es similar a conectar los píxeles de la imagen a un char-rnn, pero los RNN corren horizontal y verticalmente sobre la imagen en lugar de solo una secuencia de caracteres 1D.
Todos estos enfoques tienen sus pros y sus contras. Por ejemplo, los Autoencoders Variacionales nos permiten realizar inferencias bayesianas eficientes y de aprendizaje en modelos gráficos probabilísticos sofisticados con variables latentes (por ejemplo, consulte DIBUJAR o Asistir a la repetición de Inferencias para obtener pistas de modelos recientes relativamente complejos). Sin embargo, sus muestras generadas tienden a ser ligeramente borrosas. Los GANs generan actualmente las imágenes más nítidas, pero son más difíciles de optimizar debido a la dinámica de entrenamiento inestable. Los PIXELRNN tienen un proceso de entrenamiento muy simple y estable (pérdida softmax) y actualmente dan las mejores probabilidades de registro (es decir, plausibilidad de los datos generados). Sin embargo, son relativamente ineficientes durante el muestreo y no proporcionan fácilmente códigos simples de baja dimensión para las imágenes. Todos estos modelos son áreas activas de investigación y estamos ansiosos por ver cómo se desarrollan en el futuro.
Nuestras contribuciones recientes
Estamos muy entusiasmados con los modelos generativos en OpenAI, y acabamos de lanzar cuatro proyectos que avanzan en el estado del arte. Para cada una de estas contribuciones, también publicamos un informe técnico y un código fuente.
Mejora de GANs (código). En primer lugar, como se mencionó anteriormente, los GANs son una familia de modelos generativos muy prometedores porque, a diferencia de otros métodos, producen imágenes muy limpias y nítidas y aprenden códigos que contienen información valiosa sobre estas texturas. Sin embargo, los GANs están formulados como un juego entre dos redes y es importante (¡y complicado!) para mantenerlos en equilibrio: por ejemplo, pueden oscilar entre soluciones, o el generador tiene tendencia a colapsar. En este trabajo, Tim Salimans, Ian Goodfellow, Wojciech Zaremba y sus colegas han introducido algunas técnicas nuevas para hacer que el entrenamiento de GAN sea más estable. Estas técnicas nos permiten escalar GANs y obtener muestras de ImageNet agradables 128x128
:
Our CIFAR-10 samples also look very sharp – Amazon Mechanical Turk workers can distinguish our samples from real data with an error rate of 21.3% (50% would be random guessing):
In addition to generating pretty pictures, we introduce an approach for semi-supervised learning with GANs that involves the discriminator producing an additional output indicating the label of the input. Este enfoque nos permite obtener resultados de última generación en MNIST, SVHN y CIFAR-10 en configuraciones con muy pocos ejemplos etiquetados. En MNIST, por ejemplo, logramos una precisión del 99,14% con solo 10 ejemplos etiquetados por clase con una red neuronal completamente conectada, un resultado que se acerca mucho a los resultados más conocidos con enfoques totalmente supervisados que utilizan los 60.000 ejemplos etiquetados. Esto es muy prometedor porque los ejemplos etiquetados pueden ser bastante costosos de obtener en la práctica.
Las redes generativas de confrontación son un modelo relativamente nuevo (introducido hace solo dos años) y esperamos ver un progreso más rápido en la mejora de la estabilidad de estos modelos durante el entrenamiento.
Mejora de VAEs (código). En este trabajo, Durk Kingma y Tim Salimans introducen un método flexible y escalable computacionalmente para mejorar la precisión de la inferencia variacional. En particular, la mayoría de los VAEs se han entrenado hasta ahora utilizando posteriors aproximados crudos, donde cada variable latente es independiente. Las extensiones recientes han abordado este problema al condicionar cada variable latente a las otras anteriores en una cadena, pero esto es computacionalmente ineficiente debido a las dependencias secuenciales introducidas. La contribución principal de este trabajo, denominado flujo autorregresivo inverso (FAI), es un nuevo enfoque que, a diferencia de trabajos anteriores, nos permite paralelizar el cálculo de posteriors aproximados ricos y hacerlos casi arbitrariamente flexibles.
Mostramos un ejemplo 32x32
muestras de imagen del modelo en la imagen de abajo, a la derecha. A la izquierda hay muestras anteriores del modelo de DIBUJO para comparar (las muestras de vainilla VAE se verían aún peor y más borrosas). El modelo de SORTEO se publicó hace solo un año, lo que pone de relieve una vez más el rápido progreso que se está logrando en la formación de modelos generativos.
InfoGAN (código). Peter Chen y sus colegas presentan InfoGAN, una extensión de GAN que aprende representaciones desenredadas e interpretables para imágenes. Una GAN regular logra el objetivo de reproducir la distribución de datos en el modelo, pero el diseño y la organización del espacio de código no están suficientemente especificados: hay muchas soluciones posibles para mapear la unidad gaussiana con imágenes y la que obtenemos puede ser intrincada y muy enredada. El InfoGAN impone una estructura adicional a este espacio al agregar nuevos objetivos que implican maximizar la información mutua entre pequeños subconjuntos de las variables de representación y la observación. Este enfoque proporciona resultados bastante notables. Por ejemplo, en las imágenes de caras 3D de abajo variamos una dimensión continua del código, manteniendo todas las demás fijas. De los cinco ejemplos proporcionados (a lo largo de cada fila) se desprende claramente que las dimensiones resultantes en el código capturan dimensiones interpretables, y que el modelo tal vez haya comprendido que hay ángulos de cámara, variaciones faciales, etc., sin que se le haya dicho que estas características existen y son importantes:
We also note that nice, disentangled representations have been logrado antes (como con DC-IGN por Kulkarni et al.), pero estos enfoques dependen de una supervisión adicional, mientras que nuestro enfoque no está supervisado en absoluto.
Los dos siguientes proyectos recientes se encuentran en un entorno de aprendizaje por refuerzo (RL) (otra área de enfoque en OpenAI), pero ambos involucran un componente de modelo generativo.
Exploración impulsada por la Curiosidad en el Aprendizaje por Refuerzo Profundo a través de Redes Neuronales Bayesianas (código). La exploración eficiente en espacios continuos y de alta dimensión es actualmente un desafío sin resolver en el aprendizaje por refuerzo. Sin métodos de exploración efectivos, nuestros agentes se agitan hasta que al azar se topan con situaciones gratificantes. Esto es suficiente en muchas tareas simples de juguete, pero inadecuado si queremos aplicar estos algoritmos a entornos complejos con espacios de acción de alta dimensión, como es común en la robótica. En este artículo, Rein Houthooft y sus colegas proponen VIME, un enfoque práctico de la exploración que utiliza la incertidumbre en los modelos generativos. VIME hace que el agente se motive a sí mismo; busca activamente acciones de estado sorprendentes. Mostramos que VIME puede mejorar una variedad de métodos de búsqueda de políticas y hace progresos significativos en tareas más realistas con recompensas escasas (por ejemplo, escenarios en los que el agente tiene que aprender primitivas de locomoción sin ninguna guía).
por último, nos gustaría incluir un bono de un quinto proyecto: Generativo Contradictorio Imitación de Aprendizaje (código), en la que Jonathan Ho y sus colegas presentan un nuevo enfoque para la imitación de aprendizaje. Jonathan Ho se unirá a nosotros en OpenAI como pasante de verano. Hizo la mayor parte de este trabajo en Stanford, pero lo incluimos aquí como una aplicación relacionada y altamente creativa de GANs a RL. La configuración estándar de aprendizaje por refuerzo generalmente requiere que uno diseñe una función de recompensa que describa el comportamiento deseado del agente. Sin embargo, en la práctica, esto a veces puede implicar un costoso proceso de prueba y error para obtener los detalles correctamente. En contraste, en el aprendizaje de imitación, el agente aprende de demostraciones de ejemplo (por ejemplo, proporcionadas por la teleoperación en robótica), eliminando la necesidad de diseñar una función de recompensa.
Popular imitación enfoques implican dos etapa de canalización: en primer lugar el aprendizaje de una función de recompensa, a continuación, ejecutar RL en que la recompensa. Tal canalización puede ser lenta y, debido a que es indirecta, es difícil garantizar que la política resultante funcione bien. Este trabajo muestra cómo se pueden extraer directamente políticas de datos a través de una conexión a GANs. Como resultado, este enfoque se puede usar para aprender políticas de demostraciones de expertos (sin recompensas) en entornos de gimnasios abiertos duros, como Hormiga y Humanoide.
En el futuro
Los modelos generativos son un área de investigación que avanza rápidamente. A medida que continuamos avanzando en estos modelos y escalando la capacitación y los conjuntos de datos, podemos esperar generar eventualmente muestras que representen imágenes o videos totalmente plausibles. Esto por sí solo puede ser utilizado en múltiples aplicaciones, como arte generado bajo demanda, o comandos de Photoshop++ como «hacer que mi sonrisa sea más amplia». Otras aplicaciones actualmente conocidas incluyen eliminación de imágenes, pintura de entrada, superresolución, predicción estructurada, exploración en aprendizaje por refuerzo y preentrenamiento de redes neuronales en casos en los que los datos etiquetados son costosos.
Sin embargo, la promesa más profunda de este trabajo es que, en el proceso de capacitación de modelos generativos, dotaremos al ordenador de una comprensión del mundo y de lo que está compuesto.
Leave a Reply