Two small networks play a minimax game on 2D points laid flat on the floor. The generator is a single Gaussian: it draws noise z and outputs x = μ + σ·z, so its whole "creativity" is just a mean and a spread it can move. The discriminator is a tiny neural net (2→8→1) that looks at a point and outputs the probability it came from the real data rather than the generator. Every step, the discriminator is trained a little on a fresh batch of real and fake points (gradient descent on binary cross-entropy); then the generator takes one step nudging μ and σ in the direction that makes the discriminator's output on its samples look more like "real" — literally borrowing the discriminator's own input gradient to update itself.
D(x) = sigmoid(W2·tanh(W1·x+b1)+b2)
D-step: minimize -log D(real) - log(1-D(fake))
G-step: minimize -log D(G(z)) (gradient flows back through D, only μ,σ move)
- Generator / discriminator learning rate — how big a step each network takes; push the generator's rate far above the discriminator's and training destabilizes, oscillating instead of converging.
- D steps per G step — how many times the discriminator is refreshed before the generator gets to respond; a stronger discriminator gives the generator a sharper (but sometimes vanishing) gradient.
- Target: Bimodal vs Single mode — a real distribution with two separated clusters is the classic setting for mode collapse: because this generator can only place one Gaussian blob, watch it settle near a single cluster and abandon the other, even while the discriminator accuracy hovers near a stalemate.
- Discriminator accuracy — near 100% means the discriminator easily tells real from fake (generator is losing); near 50% means it can no longer tell them apart, which is the Nash-equilibrium goal of the game.
- The floor is shaded live by the discriminator's own verdict at every point — blue reads "real", orange reads "fake" — so the boundary drifting to swallow the generator's cloud is the training signal made visible.