Todo lo que necesitas saber sobre las GAN: Redes Generativas Antagónicas

Las Redes Generativas Antagónicas, o Generative Adversarial Networks en inglés (GAN), son una poderosa clase de redes neuronales. De hecho, se podría decir que se han convertido en uno de los pilares del reciente «boom» de la llamada Inteligencia Artificial. Fueron presentadas por Ian Goodfellow et al. en 2014 y desde entonces han permitido un gran avance en el campo del aprendizaje máquina no supervisado.

Las GAN son una de las herramientas más interesantes de la IA, pero su implementación requiere un cierto dominio, especialmente en métodos numéricos. Si quieres empezar por algo más básico, te recomendamos empezar por aquí:

Guía para aprender Inteligencia Artificial sin excusas. Escribe tu primera red neuronal

artificial-neural-network-3501528_640 (1).png

Si continúas leyendo a partir de ahora, eso quiere decir que ya dominas algo de redes neuronales o bien que sientes curiosidad sobre las GAN, aunque no tienes mucha idea sobre ellas. Si es lo segundo, abróchate que vienen curvas.

Las GAN consisten esencialmente en un algoritmo basado en un sistema de dos redes neuronales -el Generador y el Discriminador– que compiten entre sí.

Discriminator.PNG

https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/generative_models.html

El concepto básico de las GAN

Dada una serie de muestras objetivo, el Generador intenta producir muestras que puedan engañar al Discriminador para que éste crea que son reales. El Discriminador intenta resolver muestras reales (objetivo) a partir de muestras falsas (generadas). Usando este enfoque de entrenamiento o competición iterativa, eventualmente terminamos con un Generador que es realmente bueno generando muestras similares a las muestras reales y por lo tanto es capaz de engañar al Discriminador. El Generador ha conseguido realizar una creación artificial (un texto, una imagen, un vídeo, un audio…) que es extremadamente similar al que pudiese ser el real. No es una copia, porque se ha creado algo nuevo, el Generador ha creado algo imitando un «estilo» real.

Las GAN tienen una gran cantidad de aplicaciones, ya que pueden aprender a imitar distribuciones de datos de casi cualquier tipo. Gracias a este tipo de redes podemos ver desarrollos recientes realmente espectaculares, como por ejemplo estos:

Sin embargo, es muy difícil trabajar con las GAN, debido a su estabilidad inconstante. Es muy difícil crear este sistema de competición para que de buenos resultados, porque se «atascan» con facilidad. Huelga decir que muchos investigadores han propuesto soluciones brillantes para mitigar algunos de los problemas relacionados con las GAN. Sin embargo, la investigación en esta área ha evolucionado tan rápidamente los últimos años que se hace difícil seguir la pista de todas las ideas y publicaciones interesantes.

En esta publicación, creada originalmente por Bharath Raj, se acerca al lector algunas técnicas populares que se utilizan habitualmente para que el entrenamiento de GAN sea estable.

1_-sDdhJSxDf26CHyZ9zzaQQ.gif
towardsdatascience.com

Algoritmos Generativos vs. Discriminatorios

Para entender las GAN, hay que saber cómo funcionan los algoritmos generativos y, para ello, es útil contrastarlos con los llamados algoritmos discriminatorios. Los algoritmos discriminatorios tratan de clasificar los datos de entrada. Es decir, dadas unas características de unos datos, predicen una etiqueta o categoría a la que pertenecen esos datos.

Por ejemplo, dadas todas las palabras de un correo electrónico un algoritmo discriminatorio podría predecir si el mensaje es «spam» o «no_spam». Spam es una de las etiquetas, y la «bolsa de palabras» recopiladas del correo electrónico son las características que constituyen los datos de entrada.

Así que los algoritmos discriminatorios asignan características a las etiquetas. Se refieren únicamente a esa correlación. Una forma de pensar en los algoritmos generativos es que hacen precisamente lo contrario; en lugar de predecir una etiqueta con ciertas características, intentan predecir características con una etiqueta determinada.

Por eso la pregunta que un algoritmo generativo intenta responder es:

¿Asumiendo que este correo electrónico es spam, ¿Cómo de probable es que sean estas características?

Prueba las GAN de forma interactiva

Una buena manera de entender las GAN es verlas funcionando visualmente. En la siguiente web podéis cambiar varios parámetros y ver cómo las distribuciones de datos van tomando forma en el proceso de aprendizaje:

https://poloclub.github.io/ganlab/

2019-04-01_142614.jpg

Inconvenientes del uso de las GAN

Antes de avanzar, es importante explicar porqué es tan difícil usar este tipo de redes. A partir de este punto entramos en un contexto más técnico.

1. Colapso modal

Las distribuciones naturales de datos son altamente complejas y multimodales. Es decir, la distribución de datos tiene muchos «picos» o muchos «modos». Cada modo representa una concentración de muestras de datos similares, pero es diferente al de otros modos.

Durante el colapso modal, el Generador produce muestras que pertenecen a un conjunto limitado de modos. Esto sucede cuando el Generador cree que puede engañar al Discriminador bloqueando un solo modo, sin evaluar los otros. Es decir, el generador produce muestras exclusivamente desde este modo.

1_cGfM4M9PGijW9pvg32BZzg.png

La imagen de arriba representa la salida de una GAN sin colapso del modo. La imagen de abajo representa la salida de una GAN con colapso de modo. https://arxiv.org/pdf/1611.02163.pdf

El Discriminador finalmente se da cuenta de que las muestras son falsas. Como resultado, el Generador simplemente se bloquea en otro modo. Este ciclo se repite indefinidamente, lo que limita esencialmente la diversidad de las muestras generadas. Es como si para engañar al Discriminador el Generador se centra en una parte de la muestra. Puede engañarle en ese modo, pero el conjunto es más amplio y fracasa.

Para una explicación más detallada, puede consultar este blog.

2. Convergencia

Una pregunta común en el entrenamiento de GANs es «¿cuándo dejamos de entrenarlas?». Dado que la pérdida del Generador mejora cuando la pérdida del Discriminador se degrada (y viceversa), no podemos juzgar la convergencia basándonos en el valor de la función de pérdida. Esto se ilustra en la siguiente imagen:

1_FlJ8ijfnwfpsy5GJGQaAkQ.png

Gráfico de una función típica de pérdida de GAN. Observa cómo la convergencia no puede ser interpretada desde este gráfico. https://medium.com/@sanketgujar95/gans-in-tensorflow-261649d4f18d

El problema de la convergencia es uno de los más habituales.

3. Calidad

Al igual que con el problema anterior, es difícil determinar cuantitativamente cuándo el generador produce muestras de alta calidad. La regularización perceptual adicional añadida a la función de pérdida puede ayudar a mitigar este problema hasta cierto punto, pero la duda es básicamente la misma.

0_bmcR3nOLvyp1moa6.gif

4. Métricas

La función objetivo de la GAN se establecer para poder determinar el buen comportamiento del Generador o del Discriminador con respecto a su oponente. Sería como el marcador del partido. Sin embargo, no representa la calidad ni la diversidad del resultado, que es mucho más complejo (como en la vida misma). Por lo tanto, necesitamos métricas distintas que puedan medir lo mismo. Y esto es complejo.

AI

Terminologías

Para profundizar en las técnicas que pueden ayudar a mejorar el rendimiento de las GAN, repasemos algunas terminologías. Esto simplificará las explicaciones de las técnicas presentadas en la siguiente sección.

1. Infimum y Supremum

En pocas palabras, Infimum es el límite inferior más grande de un conjunto. Supremum es el límite superior más pequeño de un conjunto. Se diferencian del mínimo y del máximo en el sentido de que el mínimo y el máximo no tienen por qué pertenecer al conjunto.

2. Medidas de Divergencia

Las medidas de divergencia representan la distancia entre dos distribuciones. Las GAN convencionales minimizan la divergencia de Jensen Shannon entre la distribución de datos reales y la distribución de datos generada. Las funciones de pérdida de GAN pueden modificarse para minimizar otras medidas de divergencia, como la divergencia de Kulback Leibler o la distancia de variación total. Popularmente, la GAN de Wasserstein minimiza la distancia del «Earth Mover».

3. Dualidad Kantorovich Rubenstein

Algunas medidas de divergencia no se pueden optimizar en su forma nativa. Sin embargo, su forma dual (reemplazando el infimum con supremum o viceversa) puede ser manejable para optimizarse. El principio de dualidad establece un marco para transformar una forma en otra. Para una explicación muy detallada sobre el mismo, puedes consultar esta publicación.

4. Continuidad de Lipschitz

Una función continua de Lipschitz está limitada en la rapidez con la que puede cambiar. Para que una función de Lipschitz sea continua, el valor absoluto de la pendiente del gráfico de la función (para cualquier par de puntos) no puede ser más que un valor real K. Estas funciones también se conocen como continuos de K-Lipschitz.

Se desea la continuidad de Lipschitz en las GAN, ya que limitan los gradientes del discriminador, evitando esencialmente que falle en el gradiente. Además, la dualidad Kantorovich-Rubinstein lo requiere para una GAN de Wasserstein, como se menciona en esta otra excelente publicación.

Técnicas para mejorar el rendimiento

Hay una lista inmensa de trucos y técnicas que pueden utilizarse para hacer que las GAN sean más estables y potentes. Para mantener esta publicación concisa, sólo se explican técnicas que son relativamente nuevas o complejas. Se enumeran otros trucos y técnicas al final de la sección.

1. Funciones alternativas de pérdida

Una de las soluciones más populares a las deficiencias de las GAN es la GAN de Wasserstein. Esencialmente reemplaza la divergencia de Jensen Shannon de las GAN convencionales con la distancia del Earth Mover (EM). La forma original de la distancia EM es intratable, y por lo tanto usamos su forma dual (calculada por la Dualidad Kantorovich Rubenstein). Esto requiere que el discriminador sea 1-Lipschitz, que se mantiene recortando los pesos del discriminador.

La ventaja de utilizar la distancia del Earth Mover es que es continua incluso cuando las distribuciones de datos reales y generadas son desarticuladas, a diferencia de la divergencia JS o KL. Además, existe una correlación entre la calidad de la imagen generada y el valor de la pérdida (Fuente). La desventaja es que, necesitamos realizar varias actualizaciones discriminadoras por cada actualización del generador (según la implementación original). Además, los autores afirman que el recorte de peso es una forma terrible de garantizar la limitación de 1-Lipschitz.

1_VlaZmJjPfi99qXtMAXWHNQ.png

La distancia EM (izquierda) es continua, incluso si las distribuciones no son continuas, a diferencia de la divergencia de Jensen Shannon (derecha). Consulta este paper para obtener una explicación detallada.

Otra solución interesante es utilizar la pérdida media al cuadrado. Los autores de la LSGAN argumentan que la función convencional de pérdida de las GAN no ofrece muchos incentivos para «acercar» la distribución de datos generada a la distribución de datos reales.

La pérdida de registro en la función original de pérdida de GAN no tiene en cuenta la distancia de los datos generados desde el límite de decisión (el límite de decisión separa los datos reales de los falsos). Por otro lado, LSGAN penaliza las muestras generadas que están lejos del límite de decisión, esencialmente «tirando» la distribución de los datos generados más cerca de la distribución de los datos reales. Esto se logra reemplazando la pérdida de registro con la pérdida media cuadrada. Para una explicación detallada de lo mismo, puedes consultar esta publicación.

2. Regla de actualización de dos escalas de tiempo (Two Timescale Update Rule, TTUR)

Este método utiliza un ritmo de aprendizaje diferente para el Discriminador y para el Generador. Normalmente se establece una actualización más lenta para el Generador y una actualización más rápida para el Discriminador. Usando este método, podemos realizar actualizaciones de generadores y discriminadores en una proporción de 1:1, y simplemente jugar con las tasas de aprendizaje. En particular, la implementación de SAGAN utiliza este método.

3. Penalización por Gradiente

En el artículo «Improved Training of WGANs«, los autores afirman que el recorte de peso (como se hizo originalmente en los WGANs) conduce a problemas de optimización. Afirman que el recorte de peso fuerza a la red neuronal a aprender «aproximaciones más simples» a la distribución óptima de los datos, lo que conduce a resultados de menor calidad. También afirman que el recorte de peso lleva al problema del gradiente de explosión o desaparición, si el hiperparámetro WGAN no está ajustado correctamente. El autor introduce una sanción de gradiente simple que se añade a la función de pérdida de tal manera que se mitigan los problemas anteriores. Además, se mantiene la continuidad de 1-Lipschitz, como en la implementación original del WGAN.

1_413LI5UXQFbRp77q89Qpew
La penalización por gradiente añadida como regularizador, como en el artículo original WGAN-GP.

Los autores de DRAGAN afirman que el colapso modal ocurre cuando el juego jugado por la GAN alcanza un «estado de equilibrio local». También afirman que los gradientes aportados por el discriminador alrededor de tales estados son «agudos». Naturalmente, el uso de una penalización por gradiente nos ayudará a sortear estos estados, mejorando enormemente la estabilidad y reduciendo el colapso del modo.

4. Normalización espectral

La normalización espectral es una técnica de normalización de peso que se utiliza típicamente en el Discriminador para mejorar el proceso de entrenamiento. Esto esencialmente asegura que el Discriminador sea continuo en K-Lipschitz.

Algunas implementaciones como la SAGAN también usaron normalización espectral en el Generador. También se afirma que este método es computacionalmente más eficiente que la penalización por gradiente.

5. Unrolled GANs y GANs empaquetadas

Como se afirma en este excelente blog, una forma de prevenir el salto de modo es echar un vistazo al futuro y anticipar el contragolpe cuando se actualizan los parámetros. Las Unrolled GAN permiten al Generador engañar al Discriminador, después de que éste haya tenido la oportunidad de responder (teniendo en cuenta la contraposición). Dicho de otro modo, en lugar de que el generador aprenda a engañar al discriminador actual, aprende a engañar al discriminador al máximo después de tener la oportunidad de responder, teniendo así en cuenta el juego del contrario. Las desventajas de este enfoque son el aumento del tiempo de formación (cada actualización del generador tiene que simular múltiples actualizaciones discriminadoras) y un cálculo de gradiente más complicado (el backprop a través de un paso de actualización más optimizado puede ser difícil).

Otra forma de evitar el colapso del modo es «empaquetar» varias muestras pertenecientes a la misma clase antes de pasarlas al Discriminador. Este método es el que se usa en PacGAN, el cual reporta una reducción significativa del colapso modal.

6. Apilamiento de GANs

Una única GAN puede no ser lo suficientemente potente como para llevar a cabo su misión. En su lugar, podemos utilizar varias GAN colocadas consecutivamente, en las que cada GAN resuelva una parte más sencilla del problema global. Por ejemplo, FashionGAN utilizó dos GAN para realizar la traducción de imágenes localizadas.

1_KXwyQG2HMQ8EvMqSNVnUYw.png
Be Your Own Prada: Fashion Synthesis with Structural Coherence

Llevando este concepto al extremo, podemos aumentar gradualmente la dificultad del problema que se le presenta a nuestras GAN. Por ejemplo, los GAN progresivos (ProGAN) pueden generar imágenes de alta calidad con una resolución excelente.

7. GANs relativistas

Las GAN convencionales miden la probabilidad de que los datos generados sean reales. Las GANs relativistas miden la probabilidad de que los datos generados sean «más realistas» que los datos reales. Podemos medir este «realismo relativo» utilizando una medida de distancia apropiada, como se menciona en el paper de RGAN.

1_INq5F_CDRUmZOo7ASt6a6g.png
Salida del discriminador cuando se utiliza la pérdida GAN estándar (imagen B). La imagen C representa cómo debería ser la curva de salida. La imagen A representa la solución óptima para la divergencia JS. (Fuente)

Los autores también mencionan que la salida del discriminador debería converger a 0,5 cuando haya alcanzado el estado óptimo. Sin embargo, los algoritmos de entrenamiento GAN convencionales obligan al discriminador a emitir «real» (es decir, 1) para cualquier imagen. Esto, de alguna manera, impide que el discriminador alcance su valor óptimo. El método relativista también resuelve este problema, y tiene resultados bastante notables, como se muestra a continuación.

1_nMzTMXmBoVcRcb0ey34Cvw.jpeg
Salida de una GAN estándar (izquierda) y una GAN relativista (derecha) después de 5000 iteraciones. (Fuente)

8. Mecanismo de Auto-Atención

Los autores de las «GAN de Autoatención» afirman que las circunvoluciones utilizadas para generar imágenes miran la información que se difunde localmente. Es decir, pierden relaciones que se extienden globalmente, debido a su campo receptivo restrictivo.

1_Vvu3U3aKgFMFMF2zBj0Byg.jpeg
Adición del mapa de atención (calculado en el recuadro amarillo) a la operación de convolución estándar. (Fuente)

La Red Adversarial Generativa de Auto-Atención permite el modelado de dependencias de largo alcance y está orientado a tareas de generación de imágenes. El mecanismo de auto-atención es complementario a la operación normal de convolución. La información global (dependencias de largo alcance) ayuda a generar imágenes de mayor calidad. La red puede elegir ignorar el mecanismo de atención, o considerarlo junto con las convoluciones normales. Para una explicación detallada, puede consultar su paper.

9. Otras técnicas

He aquí una lista de algunas técnicas adicionales que se utilizan para mejorar la formación en GAN:

  • Coincidencia de características
  • Discriminación de Mini Lotes
  • Promedio histórico
  • Alisado de etiquetas por una cara
  • Normalización de lotes virtuales

Puedes leer más sobre estas técnicas en este artículo y en este blog. Muchas más técnicas se publicarán en este repositorio GitHub.

Métricas

Bien, ahora que hemos establecido métodos para mejorar la formación y estabilidad de las GAN, tenemos que implementar algún método que nos permita comprobarlo. Las siguientes métricas se utilizan a menudo para medir el rendimiento de una GAN:

1 – Inception Score (puntuación inicial)

El Inception Score (IS) mide cómo de «reales» son los datos generados.

2019-04-01_142749.jpg
https://arxiv.org/pdf/1801.01973.pdf

La ecuación tiene dos componentes p(y|x) y p(y). Aquí, x es la imagen que produce el Generador; p(y|x) es la distribución de probabilidad que se obtiene cuando se pasa la imagen «x» a través de una red de inicio preentrenada. También, p(y) es la distribución de probabilidad marginal, que puede ser calculada promediando p(y|x) sobre unas pocas muestras distintas de imágenes generadas (x). Estos dos términos representan dos cualidades diferentes que son deseables en imágenes reales:

  1. Que la imagen generada tenga objetos que sean «significativos» (objetos son claros y no borrosos). Esto significa que p(y|x) debe tener «baja entropía». En otras palabras, nuestra inicial debe estar firmemente convencida de que la imagen generada pertenece a una clase particular.
  2. Las imágenes generadas deben ser «diversas«. Esto significa que p(y) debe tener «alta entropía». En otras palabras, el generador debe producir imágenes de manera que cada imagen represente una etiqueta de clase diferente (idealmente).

Si una variable aleatoria es altamente predecible, tiene baja entropía (es decir, p(y|x) debe ser una distribución con un pico agudo). Por el contrario, si es impredecible, tiene una alta entropía (es decir, p(y) debe ser una distribución uniforme). Si ambos rasgos son satisfechos, debemos esperar una gran divergencia KL entre p(y|x) y p(y). Naturalmente, una gran puntuación de inicio (IS) es mejor. Para un análisis más profundo de la puntuación inicial, podéis consultar este paper.

1_7qF9eTRu41frGGUDMK59sA.png
Gráficas ideales de p(y|x) y p(y). Este par tendría una divergencia KL muy grande. (Fuente)

2 – La distancia de Fréchet (Fréchet Inception Distance, FID)

Un inconveniente del IS es que las estadísticas de los datos reales no se comparan con las estadísticas de los datos generados (Fuente). La distancia de Fréchet (FID) resuelve ese inconveniente comparando la media y la covarianza de las imágenes reales y generadas. El FID realiza el mismo análisis que el IS, pero en los mapas de características producidos al pasar las imágenes reales y generadas a través de una red Inception-v3 previamente entrenada (Fuente). La ecuación se describe a continuación:

2019-04-03_090620.jpg
El FID compara la media y la covarianza de las distribuciones de datos reales y generados. Tr significa Trace. (Fuente)

Un valor de más bajo es mejor, ya que explica que las estadísticas de los productos generados sean muy similares a las de los productos reales.

Conclusión

La comunidad científica ya ha producido numerosas soluciones y buenas ideas para superar las deficiencias de la formación de las GAN. Sin embargo, es difícil hacer un seguimiento de todas las contribuciones y publicaciones, debido al gran volumen de nuevas investigaciones.

Los detalles compartidos en este artículo no son exhaustivos por la misma razón, y pueden quedar obsoletos en un futuro muy próximo. Sin embargo, esperamos que sirvan de guía para las personas que buscan métodos para mejorar el rendimiento de sus GAN tengan un punto de partida.

 

Fuente: Medium

articulo_oficial

4 comentarios en “Todo lo que necesitas saber sobre las GAN: Redes Generativas Antagónicas

Deja un comentario