Redes GAN

Las Generative Adversarial Networks (Goodfellow et al., 2014) marcaron un punto de inflexión en el modelado generativo, especialmente en imágenes. Antes del auge de los modelos de difusión produjeron algunos de los resultados visuales más nítidos y también se exploraron en audio, vídeo y texto.

En su día se hicieron famosas webs como thispersondoesnotexist y sus variantes. Hoy estamos acostumbrados a ver imágenes realistas generadas con IA, pero entonces resultaba sorprendente pensar que aquellas caras no correspondían a personas reales, sino que habían sido generadas por un modelo.

En la actualidad, las GAN ya no son la opción por defecto para muchas tareas de generación, pero siguen siendo útiles cuando se necesita muestreo rápido, traducción entre dominios o pérdidas adversarias para mejorar la fidelidad perceptual.

Están inspiradas en la teoría de juegos: dos modelos, un generador y un discriminador, compiten y a la vez se mejoran entre sí.

Redes generativas adversarias
Fuente: miamiamia0103

Arquitectura

Arquitectura de una GAN
  • Red generadora: recibe como entrada un vector de números aleatorios o ruido gaussiano (por eso a veces se le denomina zz), a partir del cual se encarga de generar datos.
  • Red discriminadora: su labor es identificar si los datos que recibe son reales (parte del conjunto de entrenamiento) o falsos (generados por la red generadora).

Playground

Explicación

La tarea de la discriminadora es diferenciar si las muestras que le llegan corresponden con la distribución de datos de entrenamiento (datos 'reales') o si por el contrario son muestras generadas por la generadora (datos 'falsos'). El objetivo de la generadora, por tanto, es producir muestras lo más realistas posibles para intentar engañar a la discriminadora.

Al principio del entrenamiento, ninguna de las redes es buena en su tarea. La generadora produce muestras sin coherencia y la discriminadora todavía distingue mal entre datos reales y generados.

Durante el entrenamiento, el generador produce ejemplos cada vez más plausibles y el discriminador aprende una frontera que separa muestras reales y generadas. En el equilibrio ideal, pg=pdatap_g=p_{\mathrm{data}}: el discriminador ya no puede distinguirlas y devuelve D(x)=1/2D(x)=1/2. Esto es una referencia teórica; el entrenamiento real puede oscilar o converger a soluciones imperfectas.

Normalmente, tras el entrenamiento la discriminadora se desecha, ya que el interés principal está en la generación de datos. Sin embargo, la discriminadora es un buen clasificador binario que se podría utilizar para otras tareas.

Aplicaciones

El área de aplicación más estudiada y popularmente conocida es la generación de imágenes. Aquí algunas aplicaciones:

  • Generación condicional de imágenes: BigGAN[brock2018large] genera muestras de ImageNet condicionadas a una clase. StyleGAN[karras2019style] introduce una arquitectura basada en estilos cuyo espacio latente permite controlar e interpolar atributos visuales; el modelo original no recibe etiquetas explícitas como "gafas" o "peinado".
  • Traducción de imagen a imagen con pares: con pares (xn,yn)(x_n,y_n) se aprende una distribución condicional de la salida yy dada la entrada xx, p(yx)p(y\mid x). Algunos ejemplos son convertir un mapa de etiquetas en una fotografía o colorear una imagen en escala de grises.
  • Traducción de imagen a imagen sin pares: cuando solo disponemos de muestras independientes de dos dominios, métodos como CycleGAN aprenden mapeos en ambas direcciones mediante pérdidas adversarias y consistencia de ciclo. Esas restricciones no identifican por sí solas una distribución conjunta única.
Evolución de las GAN en generación de imágenes
De izquierda a derecha: GAN original (2014), DCGAN (2015), CoupledGAN (2016), ProgressiveGAN (2017), BigGAN (2018). Fuente.

Aplicaciones en otros dominios

  • Generación de vídeo: la coherencia espacio-temporal se obtiene garantizando que el discriminador tenga acceso a los datos reales y a las secuencias generadas en orden, penalizando así al generador cuando genera fotogramas individuales realistas sin respetar el orden temporal.
  • Generación de audio: se han desarrollado arquitecturas GAN para generar instrumentos con GANSynth[engel2019gansynth], convertir voces[kaneko2020cyclegan] y generar directamente formas de onda con WaveGAN[donahue2018adversarial].
  • Generación de texto: existen varias tareas para datos de texto para las que se han desarrollado enfoques basados en GAN, como la generación de texto condicional y la transferencia de estilo de texto. Los datos de texto suelen representarse como valores discretos (a nivel de caracteres o de palabras), que indican la pertenencia a un conjunto de un determinado vocabulario.
  • Domain adaptation: una tarea importante en machine learning es corregir los cambios en la distribución de los datos, ya que en muchas ocasiones la distribución donde se evalúa el modelo en inferencia no es exactamente igual a la distribución de los datos de entrenamiento. En general, los enfoques para la generación de imágenes mencionados se centran en adaptaciones a nivel de píxel, como pix2pix[isola2017image]. Sin embargo, las extensiones de estos enfoques para el problema general de adaptación de dominio buscan hacerlo no solo en el espacio de datos observado, sino también a nivel de características.

Función de error

Por un lado, queremos que el discriminador se convierta en un experto identificando lo que es real y lo que es falso. Esto lo hacemos mediante:

  • Identificar lo real: Se maximiza Expr[logD(x)]\mathbb{E}_{x \sim p_r}[\log D(x)], obligando al discriminador a asignar una probabilidad cercana a 1 a cualquier dato que provenga del conjunto real.
  • Identificar lo falso: Se maximiza Ezpz[log(1D(G(z)))]\mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))], obligando al discriminador a asignar una probabilidad cercana a 0 a cualquier dato generado por G.

En el juego minimax original, el generador minimiza Ezpz[log(1D(G(z)))]\mathbb{E}_{z \sim p_z}[\log(1-D(G(z)))]. Al comienzo del entrenamiento esta forma puede producir gradientes muy pequeños. En la práctica se utiliza a menudo la pérdida no saturante, Ezpz[logD(G(z))]-\mathbb{E}_{z\sim p_z}[\log D(G(z))], que persigue el mismo equilibrio y proporciona una señal más fuerte.

Al combinar ambas partes, estamos jugando a un juego 'minimax' en el que debemos optimizar la siguiente función de pérdida:

minGmaxDL(D,G)=Expr(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]=Expr(x)[logD(x)]+Expg(x)[log(1D(x))]\min_G \max_D L(D, G) = \mathbb{E}_{x \sim p_r(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))] = \mathbb{E}_{x \sim p_r(x)}[\log D(x)] + \mathbb{E}_{x \sim p_g(x)}[\log(1 - D(x))]

Limitaciones

Aunque las GAN han demostrado un gran éxito en la generación de imágenes realistas, su entrenamiento puede ser lento e inestable.

Cada modelo actualiza su coste de forma independiente sin tener en cuenta al otro "jugador". La actualización simultánea del gradiente de ambos modelos no garantiza la convergencia. Esto en ocasiones puede desembocar en el mode collapse. Durante el entrenamiento, el generador puede colapsar a una configuración en la que siempre produce las mismas salidas. Aunque el generador sea capaz de engañar al discriminador correspondiente, no consigue aprender a representar la compleja distribución de datos del mundo real y se queda atascado en un espacio pequeño con una variedad extremadamente baja.

El entrenamiento de una GAN se enfrenta a un dilema:

  • Si el discriminador no es bueno, el feedback que recibe el generador tampoco es bueno y en consecuencia la función de pérdida no representa la realidad (causando que el generador no consiga modelar bien la distribución de datos reales).
  • Si el discriminador es muy bueno, el gradiente de la función de pérdida cae hasta cerca de cero y el aprendizaje se vuelve lento o incluso se atasca (vanishing gradient).