Saltar al contenido
coden

Redes generativas adversarias (GAN): el falsificador contra el detective

El juego del generador y el discriminador, una GAN escrita desde cero, la pérdida no saturante, ocho grupos en una circunferencia y el colapso de modos, dígitos más nítidos que con el VAE, pero no todos, y el camino de las GAN a los modelos de difusión.

12 minutos Matěj Žalmánek 2026-10-16

Serie Fundamentos de IA Parte 45 de 52
  1. Mapa de la inteligencia artificial: qué es cada cosa y cómo encaja todo
  2. Breve historia de la inteligencia artificial: de Turing a los modelos de lenguaje
  3. Datos, modelo, entrenamiento, inferencia: los conceptos básicos en un solo ejemplo
  4. Cómo leer la notación matemática: símbolos, subíndices, sumatorios y cuantificadores
  5. Conjuntos y relaciones: las piezas con las que se construyen las definiciones en IA
  6. Funciones y aplicaciones: por qué todo modelo de IA es una función
  7. Lógica y demostraciones: las reglas con las que se razona en IA
  8. Grafos y árboles: la estructura sobre la que se apoyan la búsqueda y las redes neuronales
  9. Álgebra lineal para aprendizaje automático: vectores, matrices y por qué la IA sobre todo multiplica
  10. Derivadas, gradiente y regla de la cadena: cómo sabe un modelo en qué dirección aprender
  11. Descenso de gradiente: cómo aprende un modelo
  12. Qué es la probabilidad: del lanzamiento de un dado a los axiomas de Kolmogórov
  13. Probabilidad condicionada y teorema de Bayes: cómo cambiar una estimación cuando te enteras de algo nuevo
  14. Variable aleatoria y función de distribución: una sola función que lo dice todo sobre la distribución
  15. Función de densidad y función de probabilidad: por qué una variable continua tiene probabilidad cero en cada punto
  16. Esperanza, varianza y covarianza: dónde está una distribución, qué anchura tiene y qué se relaciona con qué
  17. Resumen de las distribuciones de probabilidad: Bernoulli, binomial, Poisson, uniforme, normal y exponencial
  18. Ley de los grandes números y teorema central del límite: por qué las medias se comportan de forma tan predecible
  19. Estadística y estimación de parámetros: máxima verosimilitud, MAP e intervalos de confianza
  20. Teoría de la información: entropía, entropía cruzada y divergencia KL, el origen de las funciones de pérdida
  21. Búsqueda en el espacio de estados: BFS, DFS, UCS y A* con animaciones
  22. Juegos y adversarios: minimax, poda alfa-beta y Monte Carlo tree search
  23. Satisfacción de restricciones: backtracking, propagación de restricciones y AC-3 con un sudoku y un mapa de regiones checas
  24. Lógica y sistemas basados en conocimiento: encadenamiento hacia delante y hacia atrás, resolución y sistemas expertos
  25. Planificación: STRIPS, el mundo de bloques, heurísticas a partir de la relajación y la planificación en los agentes de IA
  26. Búsqueda local y recocido simulado: un viajante por las capitales regionales checas
  27. Algoritmos genéticos: población, cruce, mutación y selección en una mochila para la excursión
  28. Estrategias evolutivas y programación genética: de la regla de un quinto a la ley de Kepler
  29. Optimización por colonia de hormigas: cómo un rastro de feromona encuentra un camino corto
  30. Optimización por enjambre de partículas: inercia, experiencia propia y experiencia del enjambre
  31. Neuroevolución: evolución de los pesos y la forma de las redes neuronales, y el algoritmo NEAT
  32. Conjuntos difusos y funciones de pertenencia: cómo escribir «algo cálido»
  33. Lógica difusa y probabilidad: por qué «algo cálido» no significa «probablemente cálido»
  34. Lógica difusa: t-normas, implicaciones y reglas SI–ENTONCES
  35. Control difuso: Mamdani y Sugeno, del ventilador al péndulo invertido sobre un carro
  36. Agrupamiento difuso: el algoritmo fuzzy c-means y los puntos entre clusters
  37. Sistemas neuro-difusos (ANFIS): reglas difusas que aprenden de los datos
  38. Cadenas de Markov: matriz de transición, distribución estacionaria y PageRank
  39. Modelos ocultos de Márkov: el algoritmo de Viterbi y el casino deshonesto
  40. Redes bayesianas: por qué está mojada la hierba y qué significa eso para el aspersor
  41. El filtro de Kalman: cómo estimar a partir de mediciones imprecisas dónde está un coche y a qué velocidad va
  42. Tipos de aprendizaje automático: supervisado, no supervisado, semisupervisado y más
  43. Prompts, contexto y RAG: cómo darle a un modelo la información correcta
  44. Autocodificadores variacionales (VAE): imágenes nuevas a partir de un espacio latente continuo
  45. Redes generativas adversarias (GAN): el falsificador contra el detective
  46. Modelos de difusión: cómo el ruido puro se convierte en una imagen
  47. Procesos de decisión de Markov: estados, acciones, recompensas y ecuaciones de Bellman
  48. Q-learning y DQN: aprender el valor de las acciones, de la tabla a la red neuronal
  49. Gradiente de la política y PPO: aprender directamente la política
  50. Cómo funciona un agente de IA: un modelo de lenguaje en un bucle con herramientas
  51. Programación con agentes de IA: encargo, pruebas y revisión
  52. Evaluación y seguridad de los sistemas de IA: cómo medir y cómo vigilar

Temario completo de la serie 52 de 83 temas publicados

Qué te llevarás
  • Cómo el generador aprende solo del gradiente del discriminador.
  • Por qué el aprendizaje de las GAN es inestable y qué es el colapso de modos.
  • En qué gana la GAN al VAE, en qué pierde y por qué hoy la ha sustituido la difusión.

Conviene conocer antes: Autocodificadores variacionales (VAE): imágenes nuevas a partir de un espacio latente continuo, Juegos y adversarios: minimax, poda alfa-beta y Monte Carlo tree search

El autocodificador variacional de la parte anterior genera con honradez, pero borroso. En 2014, Ian Goodfellow tuvo una idea que parece casi un truco: no mediremos cuánto se aleja una muestra de los datos, sino que dejaremos que lo juzgue otra red. Dos redes juegan una partida —una falsifica, la otra detecta la falsificación— y ambas mejoran por el camino. Así nacieron las primeras caras generadas por máquina que no distinguirías de una foto. En esta parte escribiremos las dos redes desde cero y veremos por qué su aprendizaje es tan caprichoso.

Se apoya en las partes Autocodificadores variacionales, Regresión logística (la sigmoide y la entropía cruzada) y Juegos y adversarios.

1. El falsificador y el detective

Definición — red generativa adversaria (GAN)

Una GAN (Ian Goodfellow et al., 2014) está formada por dos redes. El generador G transforma un ruido aleatorio z ~ N(0, I) en una muestra G(z). El discriminador D devuelve la probabilidad D(x) de que x provenga de los datos reales. Juegan un juego de dos jugadores de suma cero:

minG maxD Ex ~ data[log D(x)] + Ez[log(1 − D(G(z)))].

Para un G fijo, el mejor discriminador es D*(x) = pdata(x) / (pdata(x) + pG(x)). En el equilibrio, G genera exactamente la distribución de los datos y D devuelve ½ en todas partes.

Dicho de forma sencilla

El falsificador imprime billetes y el detective los clasifica en auténticos y falsos. El detective aprende de sus errores. El falsificador nunca ha visto un billete auténtico: solo aprende de lo que lo delató ante el detective. Mientras ambos mejoran, las falsificaciones son cada vez mejores. Fin del juego: el detective solo puede adivinar, y acierta la mitad de las veces.

minG maxD   Ex ~ data[ log D(x) ] + Ez ~ N(0, I)[ log(1 − D(G(z))) ]

Ex ~ data[log D(x)]
el discriminador sobre los datos reales: es máximo (0) cuando D da 1 a las muestras auténticas; el logaritmo castiga sin límite un error cometido con seguridad (D → 0)
Ez[log(1 − D(G(z)))]
el discriminador sobre las falsificaciones: es máximo cuando les da 0; es el único término en el que aparece G, así que el generador aprende solo de él
maxD
el discriminador aumenta el valor: los dos términos juntos son la entropía cruzada binaria con signo negativo, así que se trata del aprendizaje corriente de un clasificador «auténtico / falsificación»
minG
el generador disminuye el valor: quiere que el discriminador se equivoque con las falsificaciones; lo que gana un jugador lo pierde el otro (suma cero)
Valor del juego V(D, G); durante el aprendizaje, ambas esperanzas se estiman con la media sobre un lote.
Teorema — el mejor discriminador y lo que minimiza el generador

Para un G fijo, el valor del juego es ∫ [pdata(x) log D(x) + pG(x) log(1 − D(x))] dx. En cada punto x maximizamos la función a log y + b log(1 − y) para y ∈ (0, 1), donde a = pdata(x), b = pG(x).

Demostración. La derivada a/y − b/(1 − y) se anula en y = a/(a + b) y la función es cóncava (segunda derivada −a/y² − b/(1 − y)² < 0), así que se trata de un máximo. De ahí D*(x) = pdata(x) / (pdata(x) + pG(x)). Sustituyendo y simplificando (Goodfellow et al., 2014):

V(D*, G) = −log 4 + 2 · JSD(pdata ‖ pG),   JSD(p ‖ q) = ½ KL(p ‖ m) + ½ KL(q ‖ m),   m = ½(p + q).

La divergencia de Jensen-Shannon es no negativa y vale cero exactamente cuando pG = pdata. Por tanto, con el mejor discriminador el generador minimiza la JSD, y el mínimo −log 4 ≈ −1,386 se alcanza cuando genera exactamente los datos. ∎

Ejemplo: donde la densidad de los datos es 0,3 y la de las falsificaciones 0,1, D* = 0,3 / 0,4 = 0,75 (el punto es más bien auténtico); donde el generador se pasa (datos 0,1, falsificaciones 0,3), D* = 0,25. Donde las densidades coinciden, D* = ½ y la pérdida del discriminador (entropía cruzada binaria por muestra) es ln 2 ≈ 0,693.

El discriminador es un clasificador corriente con sigmoide y entropía cruzada, como la regresión logística, solo que con capas de más. La magia está en el generador: el gradiente de su pérdida fluye por retropropagación a través del discriminador hasta la imagen y de ahí a los pesos del generador. Así, el discriminador le dice en qué dirección debe mover cada píxel para que parezca más verosímil.

2. Aprendizaje: pasos alternos

Se aprende por turnos: un paso del discriminador (un lote de datos reales y un lote de falsificaciones; subir D en los auténticos, bajarlo en los falsos) y luego un paso del generador (mover las falsificaciones hacia donde D las considera auténticas). Las dos redes tienen aquí dos capas ocultas con leaky ReLU y aprenden con Adam.

Definición — pérdida no saturante del generador

En lugar de minimizar log(1 − D(G(z))) del juego original, el generador aprende a maximizar log D(G(z)), es decir, a minimizar −log D(G(z)). Ambas pérdidas tienen el mismo objetivo, pero un gradiente distinto: si D = σ(s), entonces |∂ log(1 − D)/∂s| = D, mientras que |∂(−log D)/∂s| = 1 − D. Ya la propusieron Goodfellow et al. en el mismo artículo.

Dicho de forma sencilla

Al principio las falsificaciones son malas y el detective las descubre con facilidad; D está cerca de cero para ellas. La pérdida original en ese momento apenas envía señal: el falsificador no se entera de qué mejorar justo cuando más lo necesita. La pregunta inversa («cómo convencer al detective») da una señal fuerte desde el principio.

∂/∂s log(1 − σ(s)) = −D,    ∂/∂s (−log σ(s)) = −(1 − D)

s
logit: la salida del discriminador antes de la sigmoide; derivamos respecto a él porque desde ahí el gradiente fluye de vuelta al discriminador y, a través de él, a la falsificación
D = σ(s)
probabilidad de que la falsificación sea auténtica; se usa σ′(s) = σ(s)(1 − σ(s)), por eso salen expresiones tan sencillas
log(1 − σ(s))
pérdida original del generador (se minimiza): su gradiente tiene magnitud D, así que cuando el discriminador descubre la falsificación con seguridad (D ≈ 0), es casi nulo: saturación
−log σ(s)
pérdida no saturante: el gradiente tiene magnitud 1 − D, es decir, es máximo precisamente para las falsificaciones que el discriminador ha descubierto
Con D = 0,01, la pérdida original da un gradiente de 0,01 y la no saturante de 0,99: noventa y nueve veces más. Ambas pérdidas bajan cuando D sube, así que tienen el mismo objetivo. Los colores corresponden a las curvas del gráfico de abajo.
00,51 00,250,50,751 inicio del aprendizaje D(G(z)): probabilidad de que la falsificación sea auténtica (0–1) gradiente |∂pérdida/∂s| (0–1)
Fuerza de la señal para el generador según cuánto se cree el discriminador la falsificación original log(1 − D) no saturante −log D

Para ser sinceros: en nuestros pequeños experimentos también aprendía la pérdida original, porque al principio el discriminador no estaba tan seguro de sí mismo. En redes grandes sobre imágenes, donde el discriminador gana rápido, la diferencia es decisiva. De aquí en adelante usamos la pérdida no saturante.

Cómo llega el gradiente hasta el generador lo muestra la regla de la cadena. La falsificación x = G(z) es para el discriminador solo una entrada, así que la retropropagación no tiene por qué detenerse en ella:

∂LG / ∂θG = ∂LG / ∂s · ∂s / ∂x · ∂x / ∂θG

∂LG / ∂s
un único número que sale de la pérdida, en la no saturante −(1 − D): «cuánto» debe mejorar la falsificación
∂s / ∂x
gradiente del discriminador respecto a su entrada (2 números en la circunferencia, 64 en un dígito): «en qué dirección» mover cada coordenada para que la falsificación parezca más auténtica; los pesos del discriminador no cambian en este paso
∂x / ∂θG
retropropagación corriente a través del generador: convierte el desplazamiento deseado de la falsificación en un cambio de los pesos del generador
El generador nunca ve los datos; la única información sobre ellos le llega a través del término central.
Definición — pérdida del discriminador y softplus

El discriminador devuelve un logit s y D = σ(s). Para una muestra auténtica con logit sr y una falsificación con logit sf, su pérdida es la entropía cruzada binaria

LD = −log σ(sr) − log(1 − σ(sf)) = softplus(−sr) + softplus(sf),   softplus(u) = ln(1 + eu),

porque −log σ(s) = ln(1 + e−s) y 1 − σ(s) = σ(−s). El programa calcula softplus a partir del logit, no de D: para s = 40, σ(s) en coma flotante es exactamente 1 y log(1 − D) daría −∞, mientras que softplus(40) ≈ 40. Gradientes: ∂LD/∂sr = σ(sr) − 1, ∂LD/∂sf = σ(sf).

for t in range(kroku):
    # 1. paso del discriminador: auténticas → 1, falsificaciones → 0
    gD = 0
    for _ in range(davka):
        x = nahodny_vzorek(data)
        gD += D.zpet(D(x), dL_ds=sigmoid(D(x)) - 1)
        f = G(sum())                           # falsificación, G no aprende ahora
        gD += D.zpet(D(f), dL_ds=sigmoid(D(f)))
    adam_D(gD / davka)
    # 2. paso del generador: el gradiente atraviesa D hasta la falsificación
    gG = 0
    for _ in range(davka):
        x = G(sum())
        dL_ds = sigmoid(D(x)) - 1              # no saturante −log σ(s)
        dL_dx = D.zpet_do_vstupu(dL_ds)        # pesos de D sin cambios
        gG += G.zpet(dL_dx)
    adam_G(gG / davka)                         # Adam con β₁ = 0,5 como en DCGAN

3. Ocho grupos en una circunferencia

Un experimento clásico: los datos son puntos de ocho pequeños grupos normales (σ = 0,05) repartidos sobre una circunferencia de radio 2. El generador recibe ruido bidimensional y devuelve un punto del plano. Medimos la calidad (la fracción de muestras a menos de 3σ de algún centro) y la cobertura (en cuántos grupos cae al menos el 2 % de las muestras).

Definición — datos, calidad y cobertura

Los centros de los grupos son cj = (r cos(2πj/8), r sin(2πj/8)) para j = 0, …, 7 con r = 2; un punto de datos es cj con j aleatorio más un ruido N(0, σ²I), σ = 0,05. Para las muestras del generador x1, …, xn:

calidad = (1/n) · #{i : minj ‖xi − cj‖ < 3σ},   cobertura = #{j : nj ≥ 0,02 · n},

donde nj es el número de muestras a menos de 3σ del centro cj. En números: 3σ = 0,15, los centros vecinos distan entre sí 2r sin(π/8) ≈ 1,53, es decir, más de diez veces más. Las instantáneas tienen n = 400 muestras, así que un grupo cuenta como cubierto a partir de 8 muestras.

Ni siquiera un generador perfecto tiene una calidad del 100 %: la distancia de un punto al centro de una distribución normal bidimensional sigue una distribución de Rayleigh, y dentro de 3σ cae una fracción 1 − e−9/2 ≈ 0,989, es decir, aproximadamente el 98,9 %.

datos reales paso 500 paso 2 000 paso 8 000 coordenada x₁ (sin unidades) x₂ (sin unidades)
Datos reales y muestras del generador durante el aprendizaje (ejecución con semilla 2)

Tras 500 pasos, el generador produce una nube borrosa (calidad del 6 %); tras 2 000 pasos, los puntos se concentran en 6 grupos, y al final (paso 8 000) cubre los 8 con una calidad del 73 %. El generador nunca ha visto un solo punto real: todo lo ha aprendido del gradiente del discriminador.

4. Colapso de modos

Definición — colapso de modos (mode collapse)

El generador produce solo una parte de la distribución de los datos —unos pocos modos (grupos, tipos de imágenes)— y omite los demás. La pérdida no lo castiga directamente: el discriminador evalúa cada muestra por separado, y una buena falsificación de un solo tipo le resulta tan convincente como una colección variada. En el colapso completo, el generador produce casi lo mismo para cualquier z.

Dicho de forma sencilla

El falsificador descubre que lo que más le cuesta al detective es reconocer los billetes falsos de cien. Así que solo imprime billetes de cien. Con el tiempo, el detective se da cuenta y empieza a sospechar de los de cien; el falsificador salta a los de doscientos. El juego da vueltas en círculo y el falsificador nunca produce todos los billetes a la vez.

Teorema — contra un discriminador fijo, lo mejor es un único punto

Para un D fijo, la pérdida del generador cumple LG = Ez[−log D(G(z))] ≥ −log D(x*), donde x* es el punto en el que D es máximo. La igualdad se da para el generador que envía cada z a x*.

Demostración. Para cada z se tiene D(G(z)) ≤ D(x*), y como −log es decreciente, −log D(G(z)) ≥ −log D(x*); la esperanza conserva la desigualdad. ∎

La pérdida es una media sobre las muestras individuales y nada en ella premia la diversidad. Contra un rival fijo, el colapso completo es, por tanto, óptimo; lo único que lo impide es que el discriminador reacciona y empieza a sospechar de x*. Si el generador salta más rápido de lo que el discriminador olvida, el juego da vueltas en círculo. Por eso ayudan las modificaciones que le dan al discriminador una vista de todo el lote (minibatch discrimination, Tim Salimans et al., 2016) u otra distancia entre distribuciones (Wasserstein, más abajo).

La misma red, los mismos datos, la misma configuración; solo cambia la semilla aleatoria:

semillagrupos cubiertos tras los pasos 1 000 … 8 000al finalcalidad al final
10 · 2 · 7 · 6 · 6 · 7 · 7 · 77 de 866 %
24 · 5 · 8 · 8 · 8 · 8 · 8 · 88 de 873 %
31 · 4 · 4 · 4 · 5 · 5 · 5 · 55 de 854 %
40 · 5 · 6 · 6 · 6 · 6 · 6 · 66 de 849 %
semilla 1: 7 de 8 semilla 3: 5 de 8 semilla 4: 6 de 8 coordenada x₁ (sin unidades) x₂ (sin unidades)
Final del aprendizaje en las demás ejecuciones (círculo relleno = grupo cubierto)

Solo una de las cuatro ejecuciones cubrió los ocho grupos. La ejecución con semilla 3 se quedó en 5 y desde el paso 5 000 ya no se movió. Esto es típico de las GAN: el aprendizaje no tiene una única pérdida que vaya bajando, sino un juego de dos jugadores, y el resultado depende del azar más de lo que quisiéramos.

5. Dígitos: más nítidos, pero no todos

Ahora, los mismos dígitos de 8 × 8 que con el VAE. Generador: ruido de ocho dimensiones → 64 → 64 → 64 píxeles con sigmoide; el discriminador, en espejo. 6 000 pasos, dos ejecuciones con semillas distintas. Medimos la calidad igual que en la parte anterior: por la distancia de la muestra al dígito de entrenamiento más cercano.

GAN, semilla 1 GAN, semilla 2 VAE (parte anterior)
Las diez primeras muestras (código / ruido de 8 dimensiones)

Las muestras de la GAN son más nítidas: distancia 0,049 y 0,042 frente a 0,054 del VAE (los dígitos reales, 0,017). La GAN no castiga lo borroso promediando, como la pérdida de reconstrucción del VAE: una imagen borrosa el discriminador la reconoce fácilmente. Pero ¿cuántos dígitos de cada tipo produce el generador?

020406080 0 1 2 3 4 5 6 7 8 9 cifra (0–9) número de muestras (de 200)
Cuántas veces aparece cada cifra entre 200 muestras (según el dígito de entrenamiento más cercano) semilla 1semilla 2 uniforme (20)

En los datos hay la misma cantidad de cada cifra. Sin embargo, la ejecución con semilla 2 produce sobre todo seises (69 de 200), ochos y treses, y las cifras 0, 1, 2, 4, 7 casi nunca (3 muestras como mucho). La ejecución con semilla 1 es más variada, pero también en ella las cifras 0, 4, 9 tienen menos de la mitad de lo que les corresponde (como mucho 6 muestras en lugar de 20). Es el mismo colapso de modos que en la circunferencia, solo que con imágenes: la GAN gana en nitidez y el VAE, en cobertura.

6. De las GAN a la difusión

  • DCGAN (Alec Radford et al., 2015) mostró cómo construir GAN convolucionales que se pueden entrenar de forma fiable con fotos.
  • Wasserstein GAN (Martin Arjovsky et al., 2017) sustituyó el clasificador por un «crítico» que mide la distancia entre distribuciones; el aprendizaje es más estable y menos propenso al colapso de modos.
  • StyleGAN (Tero Karras et al., Nvidia, 2018-2020) genera caras fotorrealistas con una resolución de 1024 × 1024: la conocida web «this person does not exist».
  • Hacia 2021, las GAN fueron superadas por los modelos de difusión (Prafulla Dhariwal y Alex Nichol: «Diffusion Models Beat GANs on Image Synthesis»). Son más lentos, pero aprenden de forma estable y cubren toda la distribución. La idea del discriminador, sin embargo, sigue viva: como pérdida auxiliar que aporta nitidez a las imágenes, por ejemplo en códecs de imagen o de sonido.

Por qué ayuda Wasserstein se ve en el ejemplo más sencillo (versión simplificada del ejemplo del artículo de Arjovsky et al., 2017): los datos son un único punto 0 y el generador produce un único punto θ. Mientras θ ≠ 0, las distribuciones no se solapan y JSD = ln 2 ≈ 0,693 independientemente de lo lejos que esté θ: el gradiente respecto a θ es nulo y el generador no sabe hacia dónde ir. La distancia de Wasserstein es |θ|, así que indica la dirección incluso desde muy lejos.

W(pdata, pG) = sup‖f‖L ≤ 1 ( Ex ~ data[f(x)] − Ez[f(G(z))] )

sup‖f‖L ≤ 1
el crítico f: una red que, en lugar de una probabilidad, devuelve un número cualquiera; la condición «1-lipschitziana» (|f(a) − f(b)| ≤ ‖a − b‖) le impide distinguir dos puntos cercanos de forma arbitrariamente brusca; de lo contrario, la diferencia podría crecer hasta el infinito
Edata[f(x)]
puntuación media de los datos reales: el crítico la quiere lo más alta posible
Ez[f(G(z))]
puntuación media de las falsificaciones: el crítico la quiere lo más baja posible y el generador, lo más alta posible; la diferencia es continua en los parámetros del generador, así que el gradiente no desaparece ni siquiera cuando las distribuciones no se solapan
Dualidad de Kantoróvich-Rubinstein: el menor «trabajo» necesario para trasladar la masa de una distribución a la otra es igual a la mayor diferencia de medias sobre las funciones 1-lipschitzianas. En el ejemplo de arriba basta con f(x) = −x · sgn θ, y la diferencia es |θ|.

7. Resumen

  • GAN = generador y discriminador en un juego; el generador aprende solo del gradiente que le envía el discriminador.
  • La pérdida no saturante −log D(G(z)) le da al generador una señal fuerte incluso al principio, cuando gana el discriminador.
  • Con los ocho grupos, solo una de las cuatro ejecuciones los cubrió todos (7, 8, 5, 6); el resultado depende mucho del azar.
  • Con los dígitos, las muestras son más nítidas que con el VAE (0,042 frente a 0,054), pero faltan algunas cifras: colapso de modos.
  • Hoy las imágenes las generan sobre todo los modelos de difusión; el discriminador se ha quedado como ayudante para la nitidez.

¿Quieres probarlo tú mismo? Pídele a un agente de IA que entrene una pequeña GAN con los ocho grupos en la circunferencia y la ejecute cinco veces con semillas distintas. Después, que pruebe una Wasserstein GAN con la misma red y compare cuántos grupos cubre cada vez.

¿Lo ves de otra manera? Escribe a support@coden-app.com.

Un Agente en tu ordenador, controlado desde el móvil