{ "cells": [ { "cell_type": "markdown", "id": "35ec75fc", "metadata": {}, "source": [ "# GAN lecture demo (Week 10) — CS6140\n", "\n", "Companion to the lecture note **GAN_claude_0929.pdf**. Everything here is **1-D**, so every picture is a histogram\n", "you can compare with the board. (HW5 Problem 4 is the 2-D version on `2gaussian.txt`; nothing here is its solution.)\n", "\n", "| Cell | Board segment | What it shows |\n", "|---|---|---|\n", "| 1 | setup | imports, device (tiny models: CPU) |\n", "| 2 | \"a generator is a sampler\" | push-forward: $x=G(z)$ turns $\\mathcal N(0,1)$ noise into other distributions |\n", "| 3 | optimal discriminator | the 3-point example: $D^*=p/(p+q)$, $V$, JSD, $-\\log 4$ |\n", "| 4 | \"D is logistic regression\" | a logistic regression trained on $\\mathcal N(0,1)$ vs $\\mathcal N(2,1)$ recovers $D^*(x)=\\sigma(2-2x)$ |\n", "| 5 | saturating vs non-saturating | the gradient table, then the same GAN trained both ways from a strong $D$ |\n", "| 6 | full GAN | 1-D bimodal data, snapshots; $D$'s loss settles near $\\log 4$ |\n", "| 7 | mode collapse | same code, 3 modes: a healthy seed vs a collapsed seed |\n", "\n", "Total run time: about 1 minute on a laptop CPU." ] }, { "cell_type": "code", "execution_count": 1, "id": "3e287633", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:50.754323Z", "iopub.status.busy": "2026-09-29T22:25:50.754194Z", "iopub.status.idle": "2026-09-29T22:25:51.775263Z", "shell.execute_reply": "2026-09-29T22:25:51.774443Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "best available device: mps\n" ] } ], "source": [ "import math, time, numpy as np, torch, torch.nn as nn, matplotlib.pyplot as plt, os\n", "torch.set_num_threads(4)\n", "def get_device():\n", " if torch.cuda.is_available(): return torch.device('cuda')\n", " if torch.backends.mps.is_available(): return torch.device('mps')\n", " return torch.device('cpu')\n", "print('best available device:', get_device())\n", "DEVICE = torch.device('cpu') # these models are tiny: the CPU is faster than moving batches to a GPU\n", "FIG = 'figures_0929'; os.makedirs(FIG, exist_ok=True)\n", "bce = nn.BCEWithLogitsLoss() # sigmoid + binary cross-entropy = the logistic-regression loss\n", "def mlp(i, h, o): # the Week 9 recipe: Linear + nonlinearity, stacked\n", " return nn.Sequential(nn.Linear(i, h), nn.LeakyReLU(0.2), nn.Linear(h, h), nn.LeakyReLU(0.2), nn.Linear(h, o))" ] }, { "cell_type": "markdown", "id": "20a3e637", "metadata": {}, "source": [ "## 2. A generator is just a sampler: $x = G(z)$, $z\\sim\\mathcal N(0,1)$\n", "A linear $G(z)=az+b$ can only produce $\\mathcal N(b,a^2)$ (the reparameterization $x=\\mu+\\sigma\\epsilon$ from the VAE lecture!).\n", "A nonlinear $G$ can *stretch* some regions of $z$ and *squeeze* others, and so produce any shape — e.g. two bumps." ] }, { "cell_type": "code", "execution_count": 2, "id": "b77724f1", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:51.777432Z", "iopub.status.busy": "2026-09-29T22:25:51.777186Z", "iopub.status.idle": "2026-09-29T22:25:52.326690Z", "shell.execute_reply": "2026-09-29T22:25:52.326168Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAEiCAYAAAAoMGGMAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAARhpJREFUeJzt3Qt0FOX5+PEngAkgd5FLkBoQNFIgYCApForWlOiPqrRggdqC/Cm2KFYbLxDFBCptAiKmakoqFkELQj2tnlZt0FKwtQajidQCxoKVEi5JCC1EQg00mf953v52f7thN9kku5ud2e/nnIHsZDI7s7P7PjvPe4uxLMsSAAAAAAAAIIw6hPPJAAAAAAAAAEVSCgAAAAAAAGFHUgoAAAAAAABhR1IKAAAAAAAAYUdSCgAAAAAAAGFHUgoAAAAAAABhR1IKAAAAAAAAYUdSCgAAAAAAAGFHUgoAAAAAAABhR1IKtrNs2TIZM2aMRKsvfelLsnnz5pA+x9mzZyUhIUHee++9kD4PgNDbvn27XHnllVJfX9/sttXV1dKvXz85fPgwlwbNxolhw4bJ22+/bbtX6sCBA9K/f3/p2rWr/PnPf27VPvisAO2L2BZ5brvtNpk2bVqz23300UcyYMAA+fTTT4PyvPv27ZNLLrlEamtrg7I/hB9JKdjOfffdZwKRU1xzzTUSExMjW7Zs8Vqfl5dnEkOefvOb30hlZaXMmjXLve6zzz6TO++8Uy666CLp1q2bTJ8+3WzTlF//+tcyZcoU8zf63Lt37/b6fWxsrHmdFy9eHJRzBBBcFRUVcvfdd5ukQOfOnc0N9he/+EVZu3atnDlzxmvbBx54QJYuXSodO3Zsdr99+/aVOXPmSHZ2dkgvmZZb+uV11KhR0qlTp4C+xCotE7XM8lxyc3Mlknz/+9+X5ORkiYuLs10Fiuv13bVrl9f6e+65x8QqTwUFBTJkyBC5+uqr3et+9KMfmcea7OnVq1erjuHYsWPyzW9+Uy6//HLp0KGDee5ANH5f+Iqr6ujRo/KVr3xFJk6cKPPnz5evfvWr8te//tVrm3Pnzpn4p+/PCy+8UOLj483nQv823J8VIJrYPbaF27p162TSpEnSu3dvs6SlpUlxcXHEV+5nZmbKXXfdJd27d3cnqa699lpzvfW6Dx061FxbLYsDMWLECPnCF74ga9asCfGRI1RISsF2NPGiyRQn0QI4kML3iSeekHnz5pkv6i4/+MEP5Le//a28+OKL8uabb5ovzV//+teb3I/WJOgX8pUrV/rd5tZbb5W33npL9u7d24ozAhAqf//732Xs2LHy+uuvy49//GN5//33paioyHxBf+WVV+T3v/+9e1v9DH/88ccmWR0oLWM2bdok//znP0N0BmJabXXp0sUkcPRLdEv88Ic/NIkL16JfbENl586d51UOBOL//b//JzNnzpRQJ/aOHz8eknjUXIWEZVny1FNPmaRO49ZTt9xyiyxcuLDVz19XVycXX3yxiYlJSUkt+ttnn33W673RONn5r3/9S9LT081N3C9/+Ut58skn5Xvf+55Z98knn7i305vf0tJSefjhh83/WpGjN0033XRT2D8rQLRwQmxrK62s0aRRS2LU7NmzZceOHea1Gjx4sKl0PnLkiESqQ4cOmeup5+pywQUXmKShXnsta7ViXhNuLUki6vXV5OV//vOfEB05QsoCwmjy5MnWXXfdZd1///1W7969rf79+1vZ2dle2/zjH/+wbrrpJuvCCy+0unfvbt1yyy1WRUWF+/e6fVJSkvvxjh07rPHjx1tdu3a1evbsaV199dXWwYMH3b9/+eWXrbFjx1pxcXHWkCFDrGXLllnnzp3ze4z6sWi8XHrppVYoX5N58+ZZF110kZWfn+9e//jjj3s9b1VVlRUTE2Pt2bPHve7kyZPWBRdcYL344ovudR9++KE55qKiomaf+5NPPjHbvv/++z5/f+2111pLly5tw9kBCLb09HTrkksusU6fPu3z9w0NDe6f77zzTmvGjBlev9dyxVc550nLymeeeSYsF2/u3LnWzTffHNC2euxaNgbq2Wef9XmujeOOPxpfWlv+N45VwaZxTst/fe1+/etfW2fPnm3zPvVcv//971uxsbHWq6++6l5/9913m1jl8u6771odOnSwampq/L7uGo/bSp9TnzsQel1feuklv7+vra21JkyYYH33u9/1+oyoFStWWMOGDbMqKyv9/n1xcbF5Dv2O0l6fFcDJnBDbtMzydQz6fTvQeBhofPLlP//5j7l32rhxY8AxUdepxx57zBo5cqS5n9LrsHDhQuvTTz89r1wvLCy0EhMTzX2aXrOjR496Hb/GpEcffdQaMGCA1adPH+uOO+7wik/6u3HjxjV7Lj/4wQ+siRMnBnx/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "z = torch.randn(200000)\n", "G_lin = lambda z: 1.5*z + 1.0\n", "G_bump = lambda z: z + 2*torch.tanh(3*z) # steep near z=0: few x's land near 0 -> two bumps\n", "fig, ax = plt.subplots(1, 3, figsize=(12, 3))\n", "for a, (x, t) in zip(ax, [(z, 'noise z ~ N(0,1)'), (G_lin(z), 'G(z) = 1.5 z + 1 -> N(1, 1.5^2)'), (G_bump(z), 'G(z) = z + 2 tanh(3z)')]):\n", " a.hist(x.numpy(), bins=200, density=True, color='C0'); a.set_title(t, fontsize=10); a.set_xlim(-6, 6)\n", "plt.tight_layout(); plt.savefig(f'{FIG}/fig_pushforward.png', dpi=130); plt.show()" ] }, { "cell_type": "markdown", "id": "bcdd260a", "metadata": {}, "source": [ "## 3. The optimal discriminator on a 3-point space (the board example)\n", "$p_{data}=(0.5,0.5,0)$, $p_g=(0.25,0.25,0.5)$ on $x\\in\\{1,2,3\\}$." ] }, { "cell_type": "code", "execution_count": 3, "id": "3dfb6f0a", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:52.329285Z", "iopub.status.busy": "2026-09-29T22:25:52.329106Z", "iopub.status.idle": "2026-09-29T22:25:52.334656Z", "shell.execute_reply": "2026-09-29T22:25:52.333816Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "D* = [0.6667 0.6667 0. ]\n", "V(D*, G) = -0.9548 -log 4 = -1.3863 JSD = 0.2158 check: -log4 + 2 JSD = -0.9548\n", "if p_g = p_data: D* = [0.5 0.5] V = -1.3863\n" ] } ], "source": [ "p = np.array([.5, .5, 0.]); q = np.array([.25, .25, .5])\n", "Dstar = p/(p+q)\n", "def xlogy(a, b): return np.where(a > 0, a*np.log(np.where(b > 0, b, 1)), 0.)\n", "V = xlogy(p, Dstar).sum() + xlogy(q, 1-Dstar).sum()\n", "m = (p+q)/2; KL = lambda a, b: xlogy(a, a).sum() - xlogy(a, b).sum()\n", "JSD = 0.5*KL(p, m) + 0.5*KL(q, m)\n", "print('D* =', Dstar.round(4))\n", "print(f'V(D*, G) = {V:.4f} -log 4 = {-math.log(4):.4f} JSD = {JSD:.4f} check: -log4 + 2 JSD = {-math.log(4)+2*JSD:.4f}')\n", "q2 = p.copy(); print('if p_g = p_data: D* =', (p/(p+q2+1e-300)).round(3)[:2], ' V =', round(xlogy(p, np.full(3, .5)).sum()*2, 4))" ] }, { "cell_type": "markdown", "id": "72907376", "metadata": {}, "source": [ "## 4. \"The discriminator is a logistic regression\"\n", "Real $\\sim\\mathcal N(0,1)$, fake $\\sim\\mathcal N(2,1)$. Theory: $D^*(x)=\\dfrac{p(x)}{p(x)+q(x)}=\\sigma(2-2x)$ — linear log-odds,\n", "exactly the equal-variance GDA/LDA result from HW4. A 1-parameter-pair logistic regression, trained with BCE, should find weight $\\approx-2$, bias $\\approx 2$." ] }, { "cell_type": "code", "execution_count": 4, "id": "b499908e", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:52.336891Z", "iopub.status.busy": "2026-09-29T22:25:52.336681Z", "iopub.status.idle": "2026-09-29T22:25:53.484979Z", "shell.execute_reply": "2026-09-29T22:25:53.484192Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "learned w = -2.029, b = 1.960 (theory: -2, 2); final D loss 0.656\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "torch.manual_seed(0)\n", "D = nn.Linear(1, 1) # logistic regression: logit = w x + b\n", "opt = torch.optim.Adam(D.parameters(), lr=0.05)\n", "for t in range(1500):\n", " real, fake = torch.randn(512, 1), 2 + torch.randn(512, 1)\n", " loss = bce(D(real), torch.ones(512, 1)) + bce(D(fake), torch.zeros(512, 1))\n", " opt.zero_grad(); loss.backward(); opt.step()\n", "print(f'learned w = {D.weight.item():.3f}, b = {D.bias.item():.3f} (theory: -2, 2); final D loss {loss.item():.3f}')\n", "xs = torch.linspace(-3, 5, 400)[:, None]\n", "dens = lambda x, mu: torch.exp(-(x-mu)**2/2)/math.sqrt(2*math.pi)\n", "fig, ax = plt.subplots(figsize=(6.5, 3.2))\n", "ax.plot(xs, dens(xs, 0), 'C0', label='real p(x) = N(0,1)'); ax.plot(xs, dens(xs, 2), 'C3', label='fake q(x) = N(2,1)')\n", "ax.plot(xs, torch.sigmoid(2-2*xs), 'k--', label='D*(x) = p/(p+q)'); ax.plot(xs, torch.sigmoid(D(xs)).detach(), 'C2', alpha=.7, lw=3, label='learned logistic regression')\n", "ax.legend(fontsize=8); ax.set_xlabel('x'); plt.tight_layout(); plt.savefig(f'{FIG}/fig_dstar.png', dpi=130); plt.show()" ] }, { "cell_type": "markdown", "id": "56f4b545", "metadata": {}, "source": [ "## 5. Saturating vs. non-saturating generator loss\n", "With $s$ = D's logit on a fake and $D=\\sigma(s)$: saturating loss $\\log(1-\\sigma(s))$ has $|\\partial/\\partial s|=D$; non-saturating $-\\log\\sigma(s)$ has $|\\partial/\\partial s| = 1-D$." ] }, { "cell_type": "code", "execution_count": 5, "id": "4b6116c8", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:53.486771Z", "iopub.status.busy": "2026-09-29T22:25:53.486598Z", "iopub.status.idle": "2026-09-29T22:25:53.489617Z", "shell.execute_reply": "2026-09-29T22:25:53.489083Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " D(G(z)) |grad| saturating |grad| non-saturating ratio\n", " 0.001 0.001 0.999 999.0\n", " 0.010 0.010 0.990 99.0\n", " 0.100 0.100 0.900 9.0\n", " 0.500 0.500 0.500 1.0\n", " 0.900 0.900 0.100 0.1\n" ] } ], "source": [ "print(' D(G(z)) |grad| saturating |grad| non-saturating ratio')\n", "for Dv in [.001, .01, .1, .5, .9]:\n", " print(f'{Dv:8.3f} {Dv:12.3f} {1-Dv:12.3f} {(1-Dv)/Dv:7.1f}')" ] }, { "cell_type": "code", "execution_count": 6, "id": "6328155b", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:53.491861Z", "iopub.status.busy": "2026-09-29T22:25:53.491677Z", "iopub.status.idle": "2026-09-29T22:25:55.312232Z", "shell.execute_reply": "2026-09-29T22:25:55.311592Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "saturating step 0: D(G(z)) = 0.0039, |grad G| = 0.019; step 100: D(G(z)) = 0.002, mean G(z) = 5.72\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "non-saturating step 0: D(G(z)) = 0.0039, |grad G| = 4.601; step 100: D(G(z)) = 0.516, mean G(z) = -0.25\n" ] }, { "data": { "image/png": "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nYTy5cub+dx0003Izs6O8NbENuPHj0enTp3M+cihV69e+Oabb/I/134ODw8//LC5hlx77bXa1yFm9OjRZt86hzZt2mg/RwG1OUqO2h2RQe2OyKA2R3RQmyN8lKo2hytOef/9912pqamuV1991fXvv/+6RowY4apatapr06ZN0V61UsOkSZNcd9xxh+uTTz5hhSHXp59+6vH5ww8/7KpSpYrrs88+c/3111+uU045xdWsWTPXgQMH8qc54YQTXIceeqjrjz/+cP3666+uli1buoYOHRqFrYldBgwY4Hrttddc8+fPd82bN881cOBAV+PGjV179+7Nn+byyy93NWrUyDV58mTX7NmzXYcffrird+/e+Z9nZ2e7OnTo4OrXr5/rzz//NMeuZs2arttuuy1KWxWbfPHFF66vv/7atXjxYteiRYtct99+uyslJcXse6L9HHpmzpzpatq0qatTp06ua665Jn+89nVouOeee1zt27d3bdiwIX/YsmWL9nOEUZsjNKjdERnU7ogManNEHrU5wss9pajNEbciSI8ePVxXXnll/vucnBxX/fr1XWPGjInqepVWvEWQ3NxcV926dV2PPfZY/ridO3e60tLSXO+99555/99//5nvzZo1K3+ab775xpWQkOBat25dhLeg9LB582az36ZOnZq/X9lR//DDD/OnWbBggZlm+vTp5j0vIomJia6NGzfmTzN+/HhX5cqVXRkZGVHYitJDtWrVXC+//LL2cxjYs2ePq1WrVq4ffvjB1bdv33wRROd0aBskFJp9of0cOdTmCD1qd0QOtTsih9oc4UNtjvBzTylqc8RlOkxmZibmzJlj0jNsEhMTzfvp06dHdd3KCitWrMDGjRs99nGVKlVM2pG9j/mXKTDdunXLn4bT81jMmDEjKutdGti1a5f5W716dfOX53JWVpbHvmboWePGjT32dceOHVGnTp38aQYMGIDdu3fj33//jfg2lAZycnLw/vvvY9++fSYtRvs59DAkkiGPznOXaF+HFqYhMm2xefPmJv2Qoabaz5FDbY7IoHZH+FC7I/yozRF+1OaIDEtKSZsjGXHI1q1bzcXGuYMJ3y9cuDBq61WWoABCfO1j+zP+Za6Xk+TkZNO5t6cRnuTm5hrfhD59+qBDhw75+zE1NdUISoXta1/HwnmshMU///xjRA/mLTJf8dNPP0W7du0w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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def two_modes(n):\n", " return (torch.randint(0, 2, (n, 1)).float()*4 - 2) + 0.4*torch.randn(n, 1)\n", "\n", "def saturation_run(loss_type, steps=500, B=256):\n", " torch.manual_seed(0)\n", " G, D = mlp(1, 32, 1), mlp(1, 32, 1)\n", " with torch.no_grad(): G[-1].bias += 6.0 # G starts far from the data (near x = +6) ...\n", " oD = torch.optim.Adam(D.parameters(), lr=1e-3)\n", " for t in range(300): # ... and D gets a head start: it rejects fakes confidently\n", " lD = bce(D(two_modes(B)), torch.ones(B, 1)) + bce(D(G(torch.randn(B, 1)).detach()), torch.zeros(B, 1))\n", " oD.zero_grad(); lD.backward(); oD.step()\n", " oG, oD = torch.optim.SGD(G.parameters(), lr=0.05), torch.optim.SGD(D.parameters(), lr=0.05) # plain SGD: gradient size matters\n", " log = []\n", " for t in range(steps):\n", " lD = bce(D(two_modes(B)), torch.ones(B, 1)) + bce(D(G(torch.randn(B, 1)).detach()), torch.zeros(B, 1))\n", " oD.zero_grad(); lD.backward(); oD.step()\n", " s = D(G(torch.randn(B, 1)))\n", " lG = bce(s, torch.ones(B, 1)) if loss_type == 'non-saturating' else -bce(s, torch.zeros(B, 1))\n", " oG.zero_grad(); lG.backward()\n", " gnorm = torch.sqrt(sum((p.grad**2).sum() for p in G.parameters())).item(); oG.step()\n", " log.append((torch.sigmoid(s).mean().item(), gnorm, G(torch.randn(2000, 1)).mean().item()))\n", " return np.array(log)\n", "\n", "fig, ax = plt.subplots(1, 2, figsize=(11, 3.2))\n", "for lt in ['saturating', 'non-saturating']:\n", " L = saturation_run(lt)\n", " print(f'{lt:15s} step 0: D(G(z)) = {L[0,0]:.4f}, |grad G| = {L[0,1]:.3f}; step 100: D(G(z)) = {L[100,0]:.3f}, mean G(z) = {L[100,2]:.2f}')\n", " ax[0].plot(L[:, 0], label=lt); ax[1].plot(L[:, 2], label=lt)\n", "ax[0].set_title('mean D(G(z)) (0.5 = D fooled half the time)'); ax[1].set_title('mean of generated x (data mean = 0)')\n", "for a in ax: a.set_xlabel('G step'); a.legend()\n", "plt.tight_layout(); plt.savefig(f'{FIG}/fig_saturation.png', dpi=130); plt.show()" ] }, { "cell_type": "markdown", "id": "460813aa", "metadata": {}, "source": [ "**Remark.** With the Adam optimizer the difference is much smaller, because Adam divides each gradient by its own running size —\n", "one reason practical GANs (and HW5) use Adam *and* the non-saturating loss.\n", "\n", "## 6. A full 1-D GAN on two bumps\n", "Alternate: one D step (real → 1, fake → 0, fakes **detached**), one G step (non-saturating: fakes → 1, D frozen)." ] }, { "cell_type": "code", "execution_count": 7, "id": "f27d1004", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:55.314684Z", "iopub.status.busy": "2026-09-29T22:25:55.314456Z", "iopub.status.idle": "2026-09-29T22:25:59.422456Z", "shell.execute_reply": "2026-09-29T22:25:59.421340Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABb8AAAEOCAYAAACpXGogAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAU8RJREFUeJzt3Qd8FGX6wPEnHUIJvQkBFBQRCAjoISqgiKLHX8WzH4diF04UBcHzRM6C7VBUVDxPOCzYTlDsejQLKkRAsVCUXoOUkACp8/88bzLLJtkNm7BtZn/fz2eSLe/Ozs7uvDv7zDPPG2dZliUAAAAAAAAAALhIfKQXAAAAAAAAAACAYCP4DQAAAAAAAABwHYLfAAAAAAAAAADXIfgNAAAAAAAAAHAdgt8AAAAAAAAAANch+A0AAAAAAAAAcB2C3wAAAAAAAAAA1yH4DQAAAAAAAABwHYLfAAAAAAAAAADXIfgNAAAAAAAAhMn8+fMlLi7O/I82xcXF0qlTJ3nggQci8vz33nuvWTfh9tFHH0nXrl2lRo0a5vn37NkT8GOvuuoqqV27trhZQUGBtGrVSp555hlxGoLfLvLqq6/KE088EenFkH//+99y/PHHmw6jffv28tRTT0V6kQDESD+0ceNGmTBhgpx00klSv359adSokfTt21c+++wzn+11h+b666+Xxo0bS61ataRfv37y3Xff+Wz77rvvyoknnmj6tvT0dBk/frwUFhaG+BUBcHq/pJ599lm5+OKLTd+hP6b0B5I/oeiXqjJPALHbXx04cECuueYaE/RKS0szgZyMjAyZPHmyCXqUR3+FWDR9+nTzXW5P+h3cokULOfvss+XJJ5+Uffv2idPNnDnT/K4aMWKExIrff/9dLrnkEqlZs6ZMmTJFXnrpJbPPFE3atGlT4bOnMbfRo0fLrl27fD5m1qxZMnDgQPO7ODk52XxW9XXOnTu3woEYf9Nrr71m2iUlJcmoUaPMQZGDBw+KkyRGegEQ3J2lFStWyK233hqx1Tp16lS58cYb5aKLLjIbxeeffy633HKL7N+/X+68886ILReA2OiH3nnnHXn44YflggsukKFDh5og0IwZM+Sss86SF198Ua6++uoyGQ3nnXeeLF++3Oww6A6BHsXWYHlmZqbZkbB9+OGHZp56nx7Q++GHH+T++++XHTt2mKAWgOgV6X5Jab+kP4b1wNzWrVv9tgtFv1SVeQKI7f5Kg98//vijnHvuuSbIEh8fL1999ZXcdttt8s0335jls9FfIdb94x//kLZt25oDQ9u2bTMBRN12J02aZA5Od+nSRZzq0Ucflcsuu8wcBIsVixcvNvtq9913n/Tv31+ilWam33777eayBqB1X04Pmi5YsEC+/fZbTzvLsmTYsGHmYE23bt1MfK5Zs2ZmP1QD4meeeaZ8+eWXcsopp3geo7G7nj17VnjOXr16eS7r7+mxY8ea7wOdv2NYcI3zzjvPat26dcSef//+/VbDhg3Ncni78sorrVq1alm7du2K2LIBiI1+aMWKFVZWVlaZ2w4ePGh16NDBatmyZZnbX3/9dUu/Bt98803PbTt27LDq1atnXX755WXaduzY0crIyLAKCgo8t/3tb3+z4uLirJ9//jlkrweA8/sltW7dOqu4uNhc1n2ioUOH+mwXin6pKvMEEFnR0F/5MmLECNOPbN261XMb/RVi1bRp08z2sHjx4gr3/e9//7Nq1qxptmONj1Rm3rx5Zj76P5p89913Zrk+++yzw7bNyckJyTKMHz/eLEN16OP0Paqq//znP37f10Dovp3u44WSfq7Kx9vUHXfcYZZ91apVntseffRRc9utt97q2Qf1NmPGDOubb74p81n03leszB//+EfrtNNOs5yEsicOoUeg9CiiHoFPSUmRJk2amExG+5RVzd55//33Zf369Z5TE7StLS8vz5wK265dO/N4rdMzZswYc7s3fZye2vLKK6/IcccdZ06j6N69uyxcuPCwyzhv3jxzqsjNN99c5vbhw4dLbm6uWT4AzuWEfuiEE04wWY3e9Lk0g2nTpk1lTkN86623pGnTpjJ48GDPbVoSQE8D0wxye7l++uknM2nJgMTEQydMaV+n+1c6HwCR4YR+SbVu3Tqg2pWh6JcCnSeA0HJKf+WLvRze9W/pr4CKzjjjDPn73/9utuOXX365WqvozTffNNuslt/Q3zV//vOfZfPmzWXaaKa5ZuC2bNnS9AfNmzeX888/X9atW+dps2TJElOKReeh89Is9UAydWfPnm3KY5x++uk+63Dr/scVV1xhSkyeeuqpnvv19drL3aBBA5M5rqVTvGllALsMnN2P6ZkletZJJGn/q2cNK8189i5RdyTLvGzZMrPPpfPPyckxt+l7qe+D7pvp/PT3q56h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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "fraction of G(z) < 0: 0.50 (data: 0.50); mean D loss over last 500 steps: 1.383; 4s\n" ] } ], "source": [ "def train_gan(sampler, seed, steps=3000, lr=1e-3, B=256, snaps=(0, 200, 1000, 3000)):\n", " torch.manual_seed(seed)\n", " G, D = mlp(1, 32, 1), mlp(1, 32, 1)\n", " oG = torch.optim.Adam(G.parameters(), lr=lr, betas=(0.5, 0.999)); oD = torch.optim.Adam(D.parameters(), lr=lr, betas=(0.5, 0.999))\n", " shots, dloss = {}, []\n", " for t in range(steps + 1):\n", " if t in snaps: shots[t] = G(torch.randn(20000, 1)).detach().numpy().ravel()\n", " if t == steps: break\n", " x, fake = sampler(B), G(torch.randn(B, 1)).detach()\n", " lD = bce(D(x), torch.ones(B, 1)) + bce(D(fake), torch.zeros(B, 1))\n", " oD.zero_grad(); lD.backward(); oD.step()\n", " lG = bce(D(G(torch.randn(B, 1))), torch.ones(B, 1))\n", " oG.zero_grad(); lG.backward(); oG.step()\n", " dloss.append(lD.item())\n", " return shots, np.array(dloss)\n", "\n", "t0 = time.time(); shots, dloss = train_gan(two_modes, seed=0)\n", "real = two_modes(20000).numpy().ravel()\n", "fig, ax = plt.subplots(1, 5, figsize=(15, 2.8))\n", "for a, (t, g) in zip(ax, shots.items()):\n", " a.hist(real, bins=120, density=True, alpha=.4, color='gray', label='real'); a.hist(g, bins=120, density=True, alpha=.6, color='C1', label='G(z)')\n", " a.set_xlim(-5, 5); a.set_title(f'step {t}'); a.set_yticks([])\n", "ax[0].legend(fontsize=8)\n", "ax[4].plot(np.convolve(dloss, np.ones(50)/50, 'valid')); ax[4].axhline(math.log(4), color='k', ls='--', label='log 4 = 1.386')\n", "ax[4].set_title('D loss (real + fake BCE)'); ax[4].legend(fontsize=8)\n", "plt.tight_layout(); plt.savefig(f'{FIG}/fig_gan_snapshots.png', dpi=130); plt.show()\n", "print(f'fraction of G(z) < 0: {(shots[3000] < 0).mean():.2f} (data: 0.50); mean D loss over last 500 steps: {dloss[-500:].mean():.3f}; {time.time()-t0:.0f}s')" ] }, { "cell_type": "markdown", "id": "7f0da4b9", "metadata": {}, "source": [ "## 7. Mode collapse: same code, three bumps, two seeds\n", "Nothing in the GAN objective rewards *diversity* — only fooling the current D. Some runs cover all modes; others settle on a subset.\n", "(Which seed collapses can differ across machines/library versions; the phenomenon doesn't.)" ] }, { "cell_type": "code", "execution_count": 8, "id": "efa24a58", "metadata": { "execution": { "iopub.execute_input": "2026-09-29T22:25:59.424511Z", "iopub.status.busy": "2026-09-29T22:25:59.424376Z", "iopub.status.idle": "2026-09-29T22:26:06.241789Z", "shell.execute_reply": "2026-09-29T22:26:06.241095Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAEOCAYAAAB/zM8tAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJmRJREFUeJzt3Qm4XeO9P/A3g0giiRpiiCSkxCyCiqeG0ivmqrSuoUhNF3VFTS31r6e0NY8l3Fv0il7Vcl2lFFXXEL1KaRraUENISlCCVEINkaz/83t793HOcU5yzslZ2fuc/fk8z8nJ2WsPa7977fVb3zW8b4+iKIoEAAAAlKJnOU8LAAAACN4AAABQMke8AQAAoESCNwAAAJRI8AYAAIASCd4AAABQIsEbAAAASiR4AwAAQIkEbwAAACiR4E2DQw45JI0bN06LdGPXXntt+tSnPlX15axHjx7559Zbb63qvLDoZaXyOR1//PGaCuqUbYPuz7ZBeXbYYYeGWvr444+X+Ep0BYI37fLHP/4xbbfddqlv375p2LBh6fzzz9eCtNuuu+6aXn311bTbbrs13PbWW2+lAw88MA0aNCjvHDj88MPTO++8s8jnOeqoo9Laa6+d+vXrlwYPHpz22muv9PTTT7d43zfffDMNHTo0F7+//e1vi3ze7j4vTzzxRPrKV76Sv8Nxnw022CBdeumlTZ5jv/32y5/RZz/72UW+FlDfHnjggbyOWX311dNyyy2XRo8ena6//vpqzxZ1vG3Qkptuuimtv/76eft1k002SXfeeWe7n+Oss85KW2+9derfv3+bD2L8/Oc/T48++mi7X4vuSfCmzebOnZt23nnntOaaa6YpU6akCy64IJ1xxhnpqquu0opt8OGHH2qn/7Psssum1VZbLf+uiML65JNPpnvuuSf98pe/TA8++GA68sgjF9lmW2yxRZo0aVL685//nO6+++5UFEVeRhcsWPCJ+0axHjVqVJs+g+4+L/H9XWWVVdJPfvKT/Nzf/va306mnnpouv/zyhueIQB6fUZ8+fdo0n0B9+u1vf5vXZzfffHPeOX/ooYemr371q3l9xeLZNuj8bYOWltHY2Ry1d+rUqfnszviZNm1auz+rffbZJx199NFtfsyKK66Yd4BDVlCTbrrppmLjjTcu+vbtW6y44orFjjvuWLzzzjsN06+++upi/fXXL5ZddtlivfXWK6644oomj3/xxReLffbZp1h++eWLFVZYofjiF79YzJgxo2H6Rx99VJxwwgl5ejz/N7/5zeKrX/1qsddee7U6T//2b/+Wn+uDDz5ouO2UU07Jr98eBx98cH6ds846q1hllVXyPHz3u98t5s+fX3zjG9/Ir7HGGmsU11xzTZPHnXzyycXIkSOLfv36FSNGjChOO+204sMPP2yY/vjjjxc77LBDMWDAgGLgwIHF5ptvXjz22GN52syZM4svfOELxac+9amif//+xYYbbljccccdrc7jmmuuWXzve98r9t9//3z/IUOGFJdffnmT+8yZM6c4/PDDi5VXXjm/3uc///k8DxWnn356semmm+bPaq211ip69OjR4mtNmjQpt8Htt99erLvuuvn97b333sW7775bXHvttXleYr6PPfbY/LlVvPXWW8X48ePztHjMrrvuWjz77LOfeO5hw4bl6ePGjSsuvPDC/FqN3XrrrcVmm22Wl6Vo1zPOOCN/FmWpfP6NPfXUU0WsjiqfV7jrrrtym7388sttfu4nnngiP8/06dM/sexuv/32xb333punx2fXmnqal8b+9V//NS/DzcW8HnfccW1+LaC+tg1asvvuuxeHHnpoux5j26Ap2wadVwP33XffYo899mhy21ZbbVUcddRR7VpGm382bRXfsXgfU6dO7dDr0X0I3jXolVdeKXr37l1cfPHF+cv6xz/+MRfPefPm5ek/+clPitVXX724+eabixdeeCH/jgIZIS1EGN1ggw2Kww47LD82VlwHHHBALsKV0HzeeeflohuPjekRICM8Lqq4RshrPv2+++7LK5MIgeH+++/Pfzcu5C0V13itY445pnj66aeL//iP/8iP2WWXXXIYj/D4/e9/v1hmmWWKl156qeFxcdtDDz2Un/u2224rVl111fw+KjbaaKPioIMOKv785z/n5/iv//qvhiAcK9yddtopt8fzzz+fQ+7kyZNbnccIuzGP55xzTvHMM88Ul112WdGrV6/i17/+dcN9xo4dW+y55565IMTrnXTSScVKK61UvPnmmw3Be7nllsuB+A9/+EMOP62twOO9xvzF/WK+4nl23nnnXCyefPLJPL99+vQpbrjhhobHxQZTfM4PPvhgfp/Rfuuss07DzohHHnmk6NmzZ26jeA+XXnppDumNi0U8dtCgQXnZiXaJ9xc7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XJNWWGGFhtvHjh2b9ttvv7xn/MYbb0x77713vv3OO+/Me9UrP1HAf/zjH+dp+++/f7r66qtTURTaGQDqtF4L3gDQTOwtX2edddKKK67YYts89thjacSIEal///7579133z09/vjj+ecb3/hG2mCDDdKXv/zlPG211VZL/fr1y3vhAYD6rNeCNwAsxvPPP5/3jK+33nr5lLZZs2alVVdd9RP3i2vD4pqyO+64Iw0cOLDh9ijm8RgAoD7rteANAM1sttlmafr06WnOnDn577XXXjvvHT/11FPzbbHnPE5fa2zatGnpsMMOS7/4xS/SkCFDmkyL+8ZedACgPuu14A0AzYwcOTLttdde6fDDD09/+9vfGm5/99138+9Ro0Y1dNoSXn755TRu3Lg0adKktNFGGzV5rgULFuQ98Jtssol2BoA6rdeCNwC04Nprr83Fd6uttsrFedttt03/8z//k0455ZR8vVicula5DuxHP/pRmj17djrhhBMaOmy57bbb8rT//d//TVtuuWWr158BAN2/Xvco2tBt29y5c/N4Zm+//XYaNGhQKTMCLIXxFdsxhjEsLXFa14wZM3JxjN5Fu4qbbropPfDAA+mKK65Y5P2il9TYE7/TTju1+b0vSd1VswEog3o9Y4nqdW+LJQC03z777JNee+21tHDhwlbHBo2NlO23377F0A0A1E+9FrwBoIMmTJiwyOmxV/zoo4/WvgBQ5/XaNd4AAABQIsEbgJrQhi5Hup16fM8AdG31WLuKTnjPTjUHoKqWWWaZ1KNHj9zL6ODBg/P/66WIx3uO9xttAAC1TL3usUT1WvAGoKp69eqVhg4dmmbNmpVmzpxZV59GhO5479EGAFDL1OuhS1SvBW8Aqm7AgAFp5MiRaf78+amexJ5zoRuArkK97jjBG4BFj/++lMaAjwAqhAJAbVOvO0bnagAAAFAiwRsAAABKJHgDAABAiQRvAAAAKJHgDQAAACUSvAEAAKBEgjcAAACUSPAGAACAEgneAAAAUCLBGwAAAEokeAMAAECJBG8AAAAokeANAAAAJRK8AQAAoESCNwAAAJRI8AYAAIASCd4AAABQIsEbAAAASiR4AwAAgOANAAAAXZMj3gAAAFAiwRsAAABKJHgDAABAiQRvAAAAKJHgDQAAACUSvAEAAKBEgjcAAACUSPAGAACAEgneAAAAUCLBGwAA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S/Bedtll0+mnn55/o50sS75ztcB6STtZlnw3rD+sZ6tNLdJOlqXu/51rU+dqAAAAQMc41RwAAABKJHgDAABAiQRvAAAAKJHgDQAAAN05eN9xxx1pq622Sv369UsrrLBCGjduXLVnqSZ98MEHafTo0alHjx7p8ccfr/bs1JSZM2emww8/PI0YMSIvR2uvvXbupfDDDz9M9eyKK65Ia621Vurbt2/+jj366KPVnqWacs4556Qtt9wyDRw4MK2yyip53fPMM89Ue7Zq2rnnnpvXQccff3y1Z6XmvPzyy+mggw5KK620Ul4PbbLJJun3v/996k7U67ZTs1umXrdOzW6det1+6nVt1uuqBu+bb745jR8/Ph166KHpiSeeSA899FA64IADqjlLNevkk09OQ4YMqfZs1KSnn346LVy4MF155ZXpySefTJdcckn64Q9/mP7f//t/qV7deOON6cQTT8w7IP7whz+kTTfdNO2yyy7p9ddfr/as1YzJkyenY445Jj3yyCPpnnvuSfPnz08777xzevfdd6s9azXpsccey9+xUaNGVXtWas6cOXPSNttsk5ZZZpl01113paeeeipddNFFeWdyd6Fet4+a3TL1umVq9qKp1+2jXtdwvS6qZP78+cUaa6xR/OhHP6rWLHQZd955Z7H++usXTz75ZAz9VkydOrXas1Tzzj///GLEiBFFvRozZkxxzDHHNPy9YMGCYsiQIcU555xT1fmqZa+//nr+fk2ePLnas1Jz5s2bV4wcObK45557iu2337447rjjqj1LNeWUU04ptt1226K7Uq/bR81un3qv10HNbh/1unXqdW3X66od8Y6jcHGov2fPnmmzzTZLq6++etptt93StGnTqjVLNem1115LRxxxRLruuutS//79qz07Xcbbb7+dVlxxxVSP4hT7KVOmpLFjxzbcFt+z+Pvhhx+u6rzV+jIT6nW5WZQ4M2CPPfZoskzxsdtuuy195jOfSfvss0++bCFq2tVXX91tmki9bjs1u/3quV4HNbv91OvWqde1Xa+rFrxfeOGF/PuMM85Ip512WvrlL3+ZD/PvsMMO6a233qrWbNWUoijSIYcckr72ta/lhYS2mT59epo4cWI66qij6rLJ3njjjbRgwYK06qqrNrk9/v7rX/9atfmqZXGpQly3HKcfbbzxxtWenZpyww035OAV19jRej3793//9zRy5Mh09913p6OPPjp9/etfTz/+8Y+7RZOp122jZrdfvdfroGa3j3rdOvW69ut1pwfvb33rW7nznUX9VK7xCd/+9rfT3nvvnbbYYos0adKkPP2mm25K3Vlb2yiK0bx589Kpp56a6lFb26mxOIti1113zXuy4kwBaOse4jjbJooWH3vppZfScccdl66//vrcSR8ti3q2+eabp7PPPjvvPT/yyCPz+if6mqhl6nXntlM912z1mqVFvW6Zet016nXvzn7Ck046KR+lXZRPf/rT6dVXX83/33DDDRtuX3bZZfO0F198MXVnbW2j++67L58aHO3SWBz9PvDAA7vN0ZQlbaeKV155JX3+859PW2+9dbrqqqtSvVp55ZVTr1698imPjcXfq622WtXmq1ZNmDAhn3Hz4IMPpqFDh1Z7dmpKXLIQHfJFkaqIsymirS6//PLcc3Msa/UuLpVqXMvCBhtskDskq2Xqdee2Uz3XbPW649TstlOvW6ded4163enBe/DgwflnceIIdxSnGL5n2223zbdFr8Ix1MSaa66ZurO2ttFll12WzjzzzCbBMnqmjt4vY3io7q6t7VQ50h2hu3LmRFzTXK/69OmT2+Hee+9tGJ4v9vDF31G0+Pi00GOPPTbdcsst6YEHHsjD0dHUjjvumP70pz81uS1GoVh//fXTKaecInT/n7hEoflQdM8++2zN1zL1unPbqZ5rtnrdcWr24qnXi6ded4163enBu60GDRqUr12O4Y6GDRuW3/AFF1yQp8VpwqQ0fPjwJs0wYMCA/DvGqXZkrmnojr4BYhm68MIL0+zZsxum1esR3hhK7OCDD85HWsaMGZN+8IMf5GGyIjTx8elqP/3pT9MvfvGLPJZ35fr35ZdfPo/rSMrt0vya9+WWWy6Pfela+I+dcMIJ+UybOHVt3333TY8++mg+66a7nHmjXreNmr146nXL1OxFU68XT73uIvW6av2pF0Xx4YcfFieddFKxyiqrFAMHDizGjh1bTJs2rZqzVNNmzJhhOLEWTJo0KbdLSz/1bOLEicXw4cOLPn365KFKHnnkkWrPUk1pbZmJ5YnWGU6sZbfffnux8cYbF8suu2we/vGqq67qVouRet1+avYnqdetU7Nbp153jHpde/W6R/yzdCI+AAAA1J/6vRAWAAAAlgLBGwAAAEokeAMAAECJBG8AAAAokeANAAAAJRK8AQAAoESCNwAAAJRI8AYAAIASCd4AAABQIsEbAAAASiR4AwAAQIkEbwAAAEjl+f9OPgaQ3Uap9wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def three_modes(n):\n", " return (torch.randint(0, 3, (n, 1)).float() - 1)*4 + 0.25*torch.randn(n, 1)\n", "real3 = three_modes(20000).numpy().ravel()\n", "fig, ax = plt.subplots(1, 2, figsize=(10, 2.8))\n", "for a, seed in zip(ax, [0, 2]):\n", " shots, _ = train_gan(three_modes, seed=seed, snaps=(3000,))\n", " g = shots[3000]; frac = [((g > lo) & (g < hi)).mean() for lo, hi in [(-6, -2), (-2, 2), (2, 6)]]\n", " a.hist(real3, bins=150, density=True, alpha=.4, color='gray', label='real'); a.hist(g, bins=150, density=True, alpha=.6, color='C1', label='G(z)')\n", " a.set_xlim(-6.5, 6.5); a.set_yticks([]); a.set_title(f'seed {seed}: mass per mode = {np.round(frac, 2)}', fontsize=10); a.legend(fontsize=8)\n", "plt.tight_layout(); plt.savefig(f'{FIG}/fig_mode_collapse.png', dpi=130); plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.14.0" } }, "nbformat": 4, "nbformat_minor": 5 }