Introducción a las redes generativas antagónicas (GAN)
Las redes generativas antagónicas (GAN) son un tipo de red neuronal profunda que se utiliza para generar imágenes sintéticas. Su arquitectura consta de dos redes neuronales profundas, una generativa y otra discriminativa, que compiten mutuamente (de ahí lo de “antagónicas”). El generador produce nuevas instancias de datos, mientras que el discriminador distingue entre instancias de datos “reales”, procedentes del conjunto de datos de entrenamiento, y datos “falsos”, producidos por el generador.
El generador y el discriminador se entrenan juntos para que compitan mutuamente hasta que el generador sea capaz de crear datos sintéticos realistas que el discriminador no pueda identificar como falsos. Una vez que el entrenamiento concluye satisfactoriamente, los datos producidos por el generador se pueden utilizar para crear nuevos datos sintéticos, que a su vez se podrían emplear como entrada de otras redes neuronales profundas.
Las redes GAN son versátiles ya que pueden aprender a generar nuevas instancias de cualquier tipo de datos, tales como imágenes sintéticas de caras, nuevas canciones de un determinado estilo o texto de un género concreto.
Entrenamiento de una red GAN
Veamos las partes y las funciones específicas de una arquitectura de red GAN con un ejemplo de creación de imágenes sintéticas de dinero.
- Se alimenta el generador con ruido. Dado que el generador aún no está entrenado, al principio, los datos de salida se semejan al ruido.
- Los datos de entrenamiento y los datos de salida del generador se envían al discriminador, que se está entrenando en paralelo para distinguir entre imágenes reales y falsas. Al principio, la salida del discriminador no será muy precisa, ya que esta parte de la red también se está entrenando; la precisión irá mejorando con el tiempo.
- Retroalimentación: La salida del discriminador se puede utilizar para retroalimentar al generador y al discriminador, que pueden emplear esta información para actualizar los parámetros e intentar mejorar la precisión.
El objetivo del discriminador, cuando se le presenta una instancia del conjunto de datos reales, es reconocer aquellas imágenes que son auténticas. Mientras tanto, el generador crea imágenes sintéticas nuevas que pasará al discriminador. Lo hace con la expectativa de que también se las considerará auténticas, a pesar de ser falsas. El objetivo del generador es producir imágenes aceptables: mentir sin que lo descubran. El objetivo del discriminador es identificar imágenes falsas procedentes del generador.
MATLAB® y Deep Learning Toolbox™ permiten crear arquitecturas de redes GAN con diferenciación automática, bucles de entrenamiento personalizados y pesos compartidos.
Aplicación de las redes generativas antagónicas
Generación de escritura manuscrita: Las redes GAN se pueden utilizar para crear datos sintéticos, como en el ejemplo de imágenes. Esta aplicación se puede aprovechar para complementar conjuntos de datos más pequeños que necesiten más ejemplos de datos para entrenar modelos de Deep Learning precisos. Un ejemplo es la detección de escritura manuscrita; para entrenar una red neuronal profunda para escritura a mano, se necesitan miles de muestras de datos de entrenamiento, y recopilar esos datos manualmente puede llevar mucho tiempo.
Generación de escenas: Las redes GAN condicionales son un tipo específico de red GAN que aprovecha el uso de etiquetas, mientras que una red GAN original presupone que no hay etiquetas. Las redes GAN condicionales se pueden utilizar en aplicaciones tales como la generación de escenas, donde se requiere cierta organización de la información. Tomemos como ejemplo la generación de escenas para conducción autónoma. La calzada y la acera están ubicadas debajo de los edificios y el cielo. Una imagen sintética creada para este ejemplo que no respete la ubicación de la calzada se considerará inmediatamente como falsa e inutilizable en una aplicación de conducción autónoma.
Aplicaciones de audio y voz: Las redes GAN también se utilizan para aplicaciones tales como la síntesis de texto a voz, la conversión de voz y la mejora de la calidad de voz. Las redes GAN ofrecen una considerable ventaja respecto de las implementaciones tradicionales de audio y voz, ya que pueden generar nuevas muestras en lugar de limitarse a aumentar las señales existentes. Un ejemplo del uso de redes GAN para la síntesis de sonido es la creación de una versión sintética de sonidos de tambor: Entrenamiento de una red generativa antagónica (GAN) para la síntesis de sonido
Nota: Si bien las redes GAN son eficaces para generar datos sintéticos nuevos que se pueden destinar a muchas aplicaciones, con frecuencia es difícil obtener resultados precisos, debido a los diferentes modos de fallo que pueden producirse. MATLAB permite supervisar el progreso de entrenamiento de una red GAN e identificar modos de fallo frecuentes.