La intuición detrás de las GAN para principiantes: hacia la IA

Estás leyendo la publicación: La intuición detrás de las GAN para principiantes: hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

Aprendizaje profundo

Probablemente hayas oído hablar de videos falsos profundos o visitar esta persona no sale, donde GAN se usa para crearlos. ¿No es interesante? En esta publicación, discutiremos en profundidad la intuición básica detrás de GAN, su implementación en Tensorflow. Empecemos.

Las redes antagónicas generativas, en resumen, GAN son un enfoque para el modelado generativo que utiliza métodos de aprendizaje profundo, como las redes neuronales convolucionales. El modelado generativo es una tarea de aprendizaje no supervisada en el aprendizaje automático donde el objetivo es encontrar los patrones ocultos en los datos de entrada y producir imágenes plausibles que tengan características similares a los datos de entrada.

GAN puede aprender a modelar la distribución de entrada entrenando dos redes competidoras (y cooperativas) denominadas generador y discriminado(también conocido como un crítico). La tarea del generador es seguir descubriendo cómo generar datos falsos o señales que puedan engañar al discriminador. Inicialmente, se le da alguna entrada de ruido al generador para que trabaje en él. Por otro lado, un discriminador está entrenado para distinguir entre señales falsas y reales.

El concepto principal de GAN es sencillo. La arquitectura del modelo GAN incluye dos submodelos: un modelo generador para generar nuevos ejemplos y un modelo discriminador para clasificar si los ejemplos generados son reales (del dominio) o falsos (generados por el modelo generador). Veámoslo como:

  • Discriminado: Modelo que aprende a clasificar la entrada como real (del dominio) o falsa (generada).
  • Generador: Modelo que genera nuevas imágenes similares a partir del dominio del problema.

¿Cómo funciona GAN?

Las dos redes neuronales que componen la GAN se denominan generador y discriminador. El generador GAN genera nuevas instancias de datos y el discriminador valida, o si pertenecen al conjunto de datos (real) o generado (falso). El discriminador es una red neuronal completamente conectada que clasifica el ejemplo de entrada como real (1.0) o falso (0.0). A intervalos regulares, el generador pretenderá que su salida son datos genuinos y le pedirá al discriminador que los etiquete como 1.0. Cuando los datos falsos se presentan luego al
discriminador, naturalmente se clasificará como falso con una etiqueta cercana a 0.0.

🔥 Recomendado:  Las 16 mejores alternativas a Amazon para comprar en línea

En general, todo el proceso consiste en que dos redes compiten entre sí mientras siguen cooperando entre sí. Al final, cuando el entrenamiento GAN converge, el resultado final es un generador que puede generar datos plausibles que parecen ser reales. El discriminador piensa que estos datos sintetizados son reales y los etiqueta como 1.0.

La entrada al generador es ruido y la salida son datos sintetizados. Mientras tanto, la entrada del discriminador serán datos reales o sintetizados. Los datos reales provienen de los datos muestreados verdaderos, mientras que los datos falsos provienen del generador. Todos los datos reales se etiquetan como 1,0 (es decir, 100% de probabilidad de ser real), mientras que todos los datos sintetizados (datos falsos) se etiquetan como 0,0 (es decir, 0% de probabilidad de ser real). Aquí hay un algoritmo de los autores de GAN:

Como puede ver, el Discriminador se actualiza para k pasos y solo entonces se actualiza el Generador. Este proceso se repite continuamente. k se puede establecer en 1, pero por lo general los valores más grandes son mejores (Goodfellow et al., 2014). Cualquier regla de aprendizaje basada en gradientes se puede utilizar para la optimización.

La función Loss que se muestra en el algoritmo anterior se llama Minmax Loss. Ya que el generador intenta minimizar la función mientras que el discriminador intenta maximizarla. Se puede escribir como:

Algunas notaciones son:

D(x) →Probabilidad de que la instancia de datos reales dada x sea real por el discriminador.

Eₓ → Instancias totales del valor esperado.

G(z) → La salida del generador dio el vector de ruido z.

D(G(z)) → Probabilidad de que la instancia de datos falsos dada z sea real por parte del discriminador.

¿MI? → Valor esperado de instancias falsas generadas en general.

El generador no puede afectar directamente el término log(D(x)) en la función, por lo que, para el generador, minimizar la pérdida es equivalente a minimizar log(1 – D(G(z))) .

En resumen la diferencia entre modelos generativos y discriminativos:

  • A discriminatorio el modelo aprende una función que asigna los datos de entrada () a alguna etiqueta de clase de salida deseada (). En términos probabilísticos, aprenden directamente la distribución condicional.
  • A generativo El modelo trata de aprender la probabilidad conjunta de los datos de entrada y las etiquetas simultáneamente, es decir, . Esto se puede convertir para la clasificación a través de la regla de Bayes, pero la capacidad generativa también se puede usar para otra cosa, como la creación de nuevas muestras probables.
🔥 Recomendado:  La lista definitiva de las mejores películas navideñas (según miles de publicaciones en redes sociales)

Discriminador de entrenamiento

El discriminador se conecta a dos funciones de pérdida. Durante el entrenamiento del discriminador, el discriminador ignora la pérdida del generador y solo usa la pérdida del discriminador. Usamos la pérdida del generador durante el entrenamiento del generador.

Los datos de entrenamiento del discriminador provienen de dos fuentes:

  • Datos reales instancias, como imágenes reales de personas. El discriminador utiliza estos casos como ejemplos positivos durante el entrenamiento.
  • datos falsos instancias creadas por el generador. El discriminador usa estas instancias como ejemplos negativos durante el entrenamiento.

En la figura anterior, los dos cuadros de “Muestra” representan estas dos fuentes de datos que alimentan el discriminador. Durante el entrenamiento del discriminador, el generador no se entrena. Sus pesos permanecen fijos mientras produce ejemplos para que el discriminador entrene.

Durante el entrenamiento del discriminador:

  1. El discriminador clasifica tanto los datos reales como los datos falsos del generador.
  2. La pérdida del discriminador penaliza al discriminador por clasificar erróneamente una instancia real como falsa o una instancia falsa como real.
  3. El discriminador actualiza sus pesos a través de la retropropagación desde la pérdida del discriminador a través de la red del discriminador.

Generador de entrenamiento

La parte generadora de una GAN aprende a crear datos falsos tomando retroalimentación del discriminador. La retroalimentación del discriminador ayuda al generador a mejorar su salida con el tiempo. Aprende a hacer que el discriminador clasifique su salida como real.

La figura anterior muestra el entrenamiento del generador. Se trata de una combinación de discriminador y generador. La salida del generador se pasa a la red del discriminador, y el discriminador se compara con la salida real y la pérdida de salida. La pérdida del generador penaliza al generador por producir una muestra que la red discriminadora clasifica como falsa.

Backpropagation ajusta cada peso en la dirección correcta calculando el impacto del peso en la salida. Los parámetros del discriminador se congelan, pero los gradientes se transmiten al generador. Entonces, la retropropagación comienza en la salida y fluye de regreso a través del discriminador hacia el generador.

El entrenamiento del generador requiere una integración más estrecha entre el generador y el discriminador que la que requiere el entrenamiento del discriminador. Una iteración de entrenamiento del generador involucra el siguiente procedimiento:

  1. Ejemplo de ruido aleatorio.
  2. Produce la salida del generador a partir del ruido aleatorio muestreado.
  3. Obtenga la clasificación “real” o “falsa” del discriminador para la salida del generador.
  4. Calcule la pérdida de la clasificación del discriminador.
  5. Retropropaga a través del discriminador y el generador para obtener gradientes.
  6. Use gradientes para cambiar solo los pesos del generador. (Los pesos del discriminador están congelados)
🔥 Recomendado:  Este boletín de IA es todo lo que necesita #32 – Hacia la IA

Pseudocódigo de Entrenamiento GAN:

Ahora comprende la intuición básica de GAN. Intentemos implementar un DCGAN en Tensorflow 2.

GAN DC simple en Tensorflow 2

El generador acepta ruido de vector z de 100 dim muestreado de una distribución uniforme. Luego se utilizan muchas capas de Conv2DTranspose con normalización por lotes y la función de activación RELU. Básicamente, Conv2DTranspose una imagen de muestra de 100 vectores dim a la forma dada. La normalización por lotes se utiliza para la convergencia y el entrenamiento rápido. La capa final tiene activación sigmoidea, que genera las imágenes MNIST falsas de 28 x 28 x 1.

CÓDIGO:

El código completo se encuentra en este cuaderno Collab enlace.

El discriminador es similar a los clasificadores de imágenes de CNN. Toma una imagen de 28x28x1. Toma imágenes reales y falsas y las concatena. Consiste en capas de CONV2D con una función de activación de RELU con fugas. La capa final es el sigmoide que emite 1 (REAL) de 0 (FALSO) de salida.

En primer lugar, se construye el modelo discriminador y, a continuación, se instancia el modelo generador. Finalmente, combinamos el discriminador y el generador como modelos adversarios y los entrenamos.

Producción:

Referencias

[1]

[2] Atienza, Rowel. . Packt Publishing Ltd., 2020.


La intuición detrás de las GAN para principiantes se publicó originalmente en Hacia la IA en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.

Publicado a través de Hacia la IA