CS236 第 10 講 · f-GAN、WGAN 與 BiGAN
Stanford CS236 · Fall 2023 · Lecture 10

f-GAN、Wasserstein GAN 與 BiGAN:minimax 的框架能最佳化哪些距離?

上一講的 GAN 在理想條件下最小化 JSD。這講把同一招推廣:用 Fenchel conjugate 把任何 f-divergence 寫成「對 discriminator 取最大值」的變分形式(f-GAN)。f-divergence 在兩個分佈的支撐集不重疊時會失去梯度,所以改用 Wasserstein(earth mover)距離,透過 Kantorovich–Rubinstein 對偶得到 WGAN。最後,GAN 沒有 encoder,BiGAN 讓 discriminator 看 \((\mathbf x,\mathbf z)\) 配對來學一個。

讀完這頁你應該能夠

  1. 寫出 f-divergence 的定義與條件,用 Jensen 不等式證明它非負,並說出 KL、reverse KL 對應的 \(f\)。
  2. 寫出 Fenchel conjugate 的定義,證明 \(f^{**}\le f\),並用「支撐線」的圖像解釋它。
  3. 推導 f-GAN 的變分下界 \(D_f(p,q)\ge\sup_T\mathbb E_p[T] - \mathbb E_q[f^*(T)]\),說明為什麼它不需要 likelihood,以及為什麼是下界。
  4. 用兩個點質量的例子說明 KL 和 JS 在支撐集不重疊時沒有梯度,而 Wasserstein 距離有。
  5. 寫出 Wasserstein 距離的 coupling 定義與 Kantorovich–Rubinstein 對偶,說明 WGAN 怎麼近似 1-Lipschitz 限制。
  6. 說明 BiGAN 的架構:encoder、generator,以及 discriminator 看的是什麼。

前置知識檢查

  • 第 9 講:GAN 的 minimax 目標、最佳 discriminator、\(2D_{\mathrm{JSD}}-\log 4\)、non-saturating loss、mode collapse。
  • 第 4 講:KL 非負的證明(Jensen 不等式);第 5 講:ELBO 是下界、用最佳化去逼近它。
  • 凸函數的定義、切線在凸函數下方。
  • 聯合分佈與邊際分佈(Wasserstein 距離要用到)。

本頁對照過投影片圖片;標「出處」的補充來自 Nowozin et al. (2016) f-GAN 原文(TeX 原始檔)、Lilian Weng〈From GAN to WGAN〉、Arjovsky et al. (2017)、Gulrajani et al. (2017)、Lai et al. (2026)(arXiv 2510.21890v3)§1.1.1 與 §7.2.1。

01回顧與今天的計畫(投影片 2–3)

GAN 的好處是 likelihood-free:不用為了能算 \(p_\theta(\mathbf x)\) 而選特殊架構。訓練一個分類器分辨真假樣本,它的表現就是「模型有多像資料」的指標。在最佳 discriminator 之下,generator 最小化的是 \(2D_{\mathrm{JSD}}(p_{\text{data}},p_G) - \log 4\)。00:04

課堂問答 · 04:14\(2\times\) 和 \(-\log 4\) 重要嗎?不重要,只是推導時剛好出現的縮放和平移。對 generator 來說最佳解完全一樣。04:14

投影片 3 指向 The GAN Zoo,那裡列了數百種有名字的 GAN。今天的四個主題:05:52

  1. 用 f-GAN 得到一大類 likelihood-free 的目標。
  2. Wasserstein GAN。
  3. 用 BiGAN 推斷潛在表示。
  4. 應用:用 CycleGAN 做影像轉換(課堂上沒時間講,見第 8 節)。

02f-divergence(投影片 4–7)

第一部分的模型都用 KL,因為它和 likelihood 配合得很好;GAN 近似地用了 JSD。還有哪些選擇?07:27

F-DIVERGENCE $$D_f(p,q) = \mathbb E_{\mathbf x\sim q}\Big[f\Big(\frac{p(\mathbf x)}{q(\mathbf x)}\Big)\Big]$$ 其中 \(f\) 是任何凸、下半連續、且 \(f(1)=0\) 的函數。08:00
  • 凸:圖形上任兩點的連線在函數上方。
  • 下半連續:技術條件,類似連續;如果有跳躍,函數值要在跳躍的較低側或更低。不重要。09:05
  • 直覺:逐點看密度比 \(p/q\),用 \(f\) 決定「比值偏離 1 時懲罰多少」。比值等於 1 的地方懲罰為 0。

投影片 5 的圖:一條向上彎的凸曲線,上面取兩點連成一條直線段,直線段整段在曲線上方;x 軸上標了一點 \(x_0\),示意下半連續的定義。

非負性:和第 4 講證明 KL 非負的方法一樣,用 Jensen 不等式(\(f\) 凸):11:15

$$\mathbb E_q\Big[f\Big(\frac{p}{q}\Big)\Big]\ \ge\ f\Big(\mathbb E_q\Big[\frac{p}{q}\Big]\Big) = f\Big(\int q(\mathbf x)\frac{p(\mathbf x)}{q(\mathbf x)}d\mathbf x\Big) = f\Big(\int p(\mathbf x)d\mathbf x\Big) = f(1) = 0$$

而 \(p = q\) 時處處比值為 1,\(D_f = 0\)。所以它是一個合理的訓練目標。

換 f,得到不同的散度

名稱\(D_f(p\Vert q)\)\(f(u)\)
KL\(\int p\log\frac pq\)\(u\log u\)
Reverse KL\(\int q\log\frac qp\)\(-\log u\)
Pearson \(\chi^2\)\(\int\frac{(p-q)^2}{q}\)\((u-1)^2\)
Squared Hellinger\(\int(\sqrt p-\sqrt q)^2\)\((\sqrt u-1)^2\)
Total variation\(\frac12\int|p-q|\)\(\frac12|u-1|\)
Jensen–Shannon\(\frac12 D_{\mathrm{KL}}(p\Vert m)+\frac12 D_{\mathrm{KL}}(q\Vert m)\),\(m=\frac{p+q}2\)\(\frac12\big[u\log u-(u+1)\log\frac{u+1}{2}\big]\)
GAN\(2D_{\mathrm{JSD}} - \log 4\)\(u\log u-(u+1)\log(u+1)\)

投影片 6 的表(Nowozin et al. 2016):列出約 12 種 f-divergence,包括 total variation、KL、reverse KL、Pearson \(\chi^2\)、Neyman \(\chi^2\)、squared Hellinger、Jeffrey、Jensen–Shannon、加權 JS、GAN、α-divergence,每列有積分形式和生成函數 \(f(u)\)。上表是其中幾列,並依 \(D_f(p\Vert q)=\mathbb E_q[f(p/q)]\) 重新核對過,見下方說明。13:54

投影片表格的兩個筆誤:表格照抄 Nowozin et al. 的原表。依定義代入:(1) Pearson \(\chi^2\) 那列 \(f=(u-1)^2\) 給出 \(\int(p-q)^2/q\),分母是 \(q\) 而不是表中寫的 \(p\);(2) JS 那列的 \(f = u\log u-(u+1)\log\frac{1+u}{2}\) 代入後等於 \(D_{\mathrm{KL}}(p\Vert m)+D_{\mathrm{KL}}(q\Vert m) = 2D_{\mathrm{JSD}}\),要乘 \(\frac12\) 才是表中寫的 JSD(Lai et al. 的書用的就是加了 \(\frac12\) 的版本)。這些常數不影響最佳解,但自己驗算時會對不上。
課堂問答 · 21:36為什麼 KL 是 \(u\log u\) 而不是 \(\log u\)?KL 是對 \(p\) 取期望,但 f-divergence 的定義是對 \(q\) 取期望。前面多乘一個 \(u = p/q\),就把「對 q 期望」換成「對 p 期望」:\(\mathbb E_q[\frac pq\log\frac pq] = \mathbb E_p[\log\frac pq]\)。reverse KL 本來就對 \(q\) 取期望,所以是 \(-\log u\)。21:36

問題:密度比算不出來

想訓練模型,可以最小化 \(D_f(p_\theta,p_{\text{data}})\) 或 \(D_f(p_{\text{data}},p_\theta)\):15:56

$$D_f(p_\theta,p_{\text{data}}) = \underbrace{\mathbb E_{\mathbf x\sim p_{\text{data}}}}_{\text{用樣本近似}}\Big[f\Big(\underbrace{\frac{p_\theta(\mathbf x)}{p_{\text{data}}(\mathbf x)}}_{\text{未知}}\Big)\Big],\qquad D_f(p_{\text{data}},p_\theta) = \underbrace{\mathbb E_{\mathbf x\sim p_\theta}}_{\text{用樣本近似}}\Big[f\Big(\underbrace{\frac{p_{\text{data}}(\mathbf x)}{p_\theta(\mathbf x)}}_{\text{未知}}\Big)\Big]$$

期望可以用樣本近似,但密度比需要 \(p_{\text{data}}(\mathbf x)\)。就算模型的 likelihood 算得出來,資料的密度也永遠算不出來。目標是把它改寫成只需要兩邊樣本的形式:這樣就回到 GAN 的設定,generator 可以是任意網路。18:00

課堂問答 · 22:42那原本的 GAN 怎麼辦到的?靠最佳 discriminator:它幫你算了密度比(\(D^* = p/(p+q)\))。等於把「估計密度比」這個難題外包給一個分類器,而神經網路很擅長分類。接下來的推導就是把這個想法一般化。22:42
課堂問答 · 19:01\(p_{\text{data}}\) 是訓練集上的均勻分佈嗎?不是。它是產生資料的真實過程;訓練集是從它抽出的樣本。訓練集上的經驗分佈可以看成 \(p_{\text{data}}\) 的一種很粗糙的核密度估計,但在高維度會嚴重 overfit。19:01

03Fenchel conjugate(投影片 8)

CONVEX CONJUGATE $$f^*(t) = \sup_{u\in\mathrm{dom}_f}\big(ut - f(u)\big)$$ 24:19
  • \(f^*\) 一定是凸的(即使 \(f\) 不是):對每個固定的 \(u\),\(ut-f(u)\) 是 \(t\) 的線性函數;一堆線性函數的上確界(pointwise supremum)是凸的。25:23
  • \(f^{**}\le f\):由定義,對所有 \(t,u\),\(f^*(t)\ge ut-f(u)\),移項得 \(f(u)\ge ut - f^*(t)\)。這對所有 \(t\) 成立,所以 \(f(u)\ge\sup_t\big(ut-f^*(t)\big) = f^{**}(u)\)。26:26
  • Strong duality:當 \(f\) 凸且下半連續時,\(f^{**} = f\)。conjugate 兩次就回到原函數。27:59

老師把接下來的策略比作 ELBO:把 \(f\) 改寫成一個最佳化問題(\(f = f^{**} = \sup_t\ldots\)),再用「不完全最佳化」得到一個下界。

幾何直覺:支撐線(supporting lines)

固定 \(t\),直線 \(y = tu - f^*(t)\) 是斜率為 \(t\)、而且「剛好碰到 \(f\) 圖形、但不穿過它」的那條直線:\(f^*(t)\) 正是讓直線往上推到碰到曲線為止所需的截距(取負號)。所以 \(f^{**}(u) = \sup_t\big(tu - f^*(t)\big)\) 的意思是:在點 \(u\) 上,看所有斜率的支撐線,取最高的那條。凸函數就是它所有切線的上包絡,所以 \(f^{**} = f\);非凸函數則會被「凸包」取代,所以只有 \(f^{**}\le f\)。課堂上老師也這樣說:這是在用一族支撐超平面描述函數圖形的凸包。40:01

最佳的 t:如果 \(f\) 可微,\(\sup_u(ut - f(u))\) 的一階條件是 \(t = f'(u)\)。反過來,給定 \(u\),達到 \(\sup_t(tu - f^*(t))\) 的 \(t\) 就是 \(t^* = f'(u)\):在 \(u\) 的切線斜率。這在下一節會變成「最佳 discriminator」。

例:\(f(u) = u\log u\)。\(\frac{d}{du}(ut - u\log u) = t - \log u - 1 = 0\Rightarrow u = e^{t-1}\),代回得 \(f^*(t) = te^{t-1} - e^{t-1}(t-1) = e^{t-1}\)。

Demo AConjugate 與支撐線

灰線是 \(f(u)\)。細線是一族支撐線 \(y = tu - f^*(t)\)(取不同斜率 \(t\)),它們全部在 \(f\) 下方,而它們的上包絡就是 \(f\)。拖動 \(u_0\):粗線是在 \(u_0\) 達到上確界的那條,斜率 \(t^* = f'(u_0)\)。

f(u)支撐線 tu − f*(t)在 u₀ 達到上確界的線

Total variation 的 \(f\) 在 \(u=1\) 有尖角,那裡的切線不唯一(斜率可以是 \([-\frac12,\frac12]\) 中任一個);而且它的 conjugate 定義域只有 \(|t|\le\frac12\),這就是為什麼 f-GAN 需要針對每個 \(f\) 設計 discriminator 的輸出範圍(見第 4 節的補充)。

04f-GAN:變分散度最小化(投影片 9–11)

把 \(f\) 換成 \(f^{**}\),再把它的定義展開:29:02

$$\begin{aligned} D_f(p,q) &= \mathbb E_{\mathbf x\sim q}\Big[f\Big(\frac{p(\mathbf x)}{q(\mathbf x)}\Big)\Big] = \mathbb E_{\mathbf x\sim q}\Big[f^{**}\Big(\frac{p(\mathbf x)}{q(\mathbf x)}\Big)\Big] = \mathbb E_{\mathbf x\sim q}\Big[\sup_{t\in\mathrm{dom}_{f^*}}\Big(t\,\frac{p(\mathbf x)}{q(\mathbf x)} - f^*(t)\Big)\Big]\\ &= \mathbb E_{\mathbf x\sim q}\Big[T^*(\mathbf x)\frac{p(\mathbf x)}{q(\mathbf x)} - f^*\big(T^*(\mathbf x)\big)\Big] = \int_{\mathcal X}\Big[T^*(\mathbf x)\,p(\mathbf x) - f^*\big(T^*(\mathbf x)\big)\,q(\mathbf x)\Big]d\mathbf x\\ &= \sup_T\int_{\mathcal X}\Big[T(\mathbf x)\,p(\mathbf x) - f^*\big(T(\mathbf x)\big)\,q(\mathbf x)\Big]d\mathbf x \ \ge\ \sup_{T\in\mathcal T}\Big(\mathbb E_{\mathbf x\sim p}\big[T(\mathbf x)\big] - \mathbb E_{\mathbf x\sim q}\big[f^*\big(T(\mathbf x)\big)\big]\Big) \end{aligned}$$
  1. 第一行:\(f\) 凸且下半連續,所以 \(f = f^{**}\);再代入 \(f^{**}\) 的定義。關鍵變化:密度比原本在 \(f\) 的裡面,現在變成和 \(t\) 線性相乘。29:37
  2. 第二行:每個 \(\mathbf x\) 有不同的密度比,因此有不同的最佳 \(t\),記為 \(T^*(\mathbf x)\)。把期望寫成積分,\(q(\mathbf x)\) 和分母的 \(q(\mathbf x)\) 約掉。30:37
  3. 第三行,等號:「對每個 \(\mathbf x\) 各自選最佳的 \(t\)」等價於「選一個函數 \(T:\mathcal X\to\mathbb R\)」,只要函數可以任意複雜(把每個 \(\mathbf x\) 的答案存進一張表就行)。這和 VAE 的 amortized inference 是同一個味道。34:16
  4. 第三行,不等號:只在一族函數 \(\mathcal T\)(例如某種架構的神經網路)中最佳化,可能達不到最佳,所以得到下界。\(\mathcal T\) 越有彈性,下界越緊。35:19
關鍵下界只是兩個期望之差:一個對 \(p\)、一個對 \(q\),都能用樣本估計。對 \(p\) 和 \(q\) 都是 likelihood-free 的。
F-GAN 目標選任一個 f-divergence,令 \(p = p_{\text{data}}\)、\(q = p_{G_\theta}\),用 \(\phi\) 參數化 \(T\): $$\min_\theta\max_\phi\;F(\theta,\phi) = \mathbb E_{\mathbf x\sim p_{\text{data}}}\big[T_\phi(\mathbf x)\big] - \mathbb E_{\mathbf x\sim p_{G_\theta}}\big[f^*\big(T_\phi(\mathbf x)\big)\big]$$ Generator \(G_\theta\) 想把散度的估計值壓低;discriminator \(T_\phi\) 想把下界拉緊。45:15
課堂問答 · 38:26 / 38:56discriminator 一定要是最佳的嗎?不用;不是最佳的仍然是下界,最佳時才等於真正的 f-divergence。但這也帶來問題:generator 在外層最小化一個下界,這不一定把真正的散度往下推。38:26
課堂問答 · 40:32能不能改成上界?最小化上界會更自然,但上界難得多。估計 mutual information 也需要估計密度比,那邊的文獻試過各種上下界,沒有特別好用的。40:32
課堂問答 · 41:04這比直接用 KL 好在哪?不需要 likelihood;而且 KL 本質上是壓縮,這不一定是你要的。其他 f 用不同方式衡量密度比的偏離,給你更多選擇損失函數的自由。41:04

投影片 11 的總結:KL 對應 autoregressive 與 flow;JSD(縮放平移後、近似地)對應原始 GAN;任何其他 f-divergence(近似地)對應 f-GAN。48:22

f-GAN 原論文的 MNIST 實驗(Table 4,用 16,384 個樣本做 kernel density 估計 test log-likelihood):KL 416、Pearson χ² 429、Jensen–Shannon 367、GAN 305 nats。作者自己提醒這個估計在 784 維很不可靠,重複實驗的差異可達 50 nats,結論「並不完全確定」;他們只說 KL 訓練的模型比 GAN 有較高的 holdout likelihood「令人安心」。出處:Nowozin et al. (2016) §4「MNIST Digits」段落與 Table 4,已對照 TeX。

最佳的 T 是什麼?為什麼原始 GAN 是特例?

由上一節的支撐線觀點,對每個 \(\mathbf x\),達到上確界的 \(t\) 是在 \(u = p(\mathbf x)/q(\mathbf x)\) 的切線斜率:

$$T^*(\mathbf x) = f'\Big(\frac{p(\mathbf x)}{q(\mathbf x)}\Big)$$

所以 discriminator 其實在學密度比的某個函數。例:KL 的 \(T^* = 1 + \log\frac pq\);Pearson 的 \(T^* = 2(\frac pq - 1)\)。

原始 GAN:取 \(f(u) = u\log u - (u+1)\log(u+1)\),它的 conjugate 是 \(f^*(t) = -\log(1-e^t)\)(定義域 \(t<0\))。令 \(T = \log D\),\(D\in(0,1)\):

$$\mathbb E_p[T] - \mathbb E_q[f^*(T)] = \mathbb E_p[\log D] - \mathbb E_q[-\log(1-D)] = \mathbb E_p[\log D] + \mathbb E_q[\log(1-D)]$$

正是第 9 講的 \(V(G,D)\)。最佳的 \(T^* = f'(u) = \log\frac{u}{1+u}\),所以 \(D^* = e^{T^*} = \frac{u}{1+u} = \frac{p}{p+q}\),和第 9 講推出的最佳 discriminator 一樣。44:44

輸出活化函數:\(T\) 的值必須落在 \(f^*\) 的定義域。f-GAN 把 \(T_\phi(\mathbf x) = g_f(V_\phi(\mathbf x))\) 寫成「無限制的網路輸出 \(V_\phi\) 再接一個活化函數 \(g_f\)」,例如 KL 用 \(g_f(v) = v\),reverse KL 用 \(-e^{-v}\)(必須為負),GAN 用 \(-\log(1+e^{-v})\)(必須為負),squared Hellinger 用 \(1-e^{-v}\)(必須小於 1)。Demo B 就照這張表實作。

出處:Nowozin, Cseke & Tomioka (2016), "f-GAN", arXiv 1606.00709(TeX 原始檔的 Table 1、Table 2 與 §2.4「Representation for the Variational Function」);Lai et al. (2026) §1.1.1 "Beyond KL"。

Demo B訓練 T,估計 f-divergence 的下界

固定 \(p = \mathcal N(0,1)\)(資料,橘)和 \(q = \mathcal N(1,1.2^2)\)(模型,綠),各 2,000 個訓練樣本。訓練一個 1→16→16→1 的網路 \(V_\phi\),接上對應的 \(g_f\),最大化 \(\mathbb E_p[T] - \mathbb E_q[f^*(T)]\)。藍線是學到的 \(T(x)\),虛線是理論最佳 \(T^*(x) = f'(p/q)\)。下界有兩種算法:用數值積分算 \(\mathbb E_p[T]\) 和 \(\mathbb E_q[f^*(T)]\)(精確的期望,所以一定是下界),以及用 4,000 + 4,000 個 held-out 樣本估計。真值也用數值積分。

p 的密度q 的密度學到的 T(x)T*(x) = f′(p/q)(虛線)
學到的 T 給出的下界(數值積分)真正的 D_f(虛線)
  • 五種 \(f\) 用數值積分算出的下界都在真值下方,差距約 0.2%–2%(實測:GAN 0.2%、reverse KL 0.9%、Pearson 1.6%、squared Hellinger 1.7%、KL 1.8%):學到的 \(T\) 不是 \(T^*\),所以只能得到下界,這裡的小網路已經很接近。
  • 但同一個 \(T\) 用 held-out 樣本估計時,五種 \(f\) 的估計值反而都比真值高 1%–12%(這組 held-out 樣本恰好偏向一邊,五種 \(f\) 共用同一組樣本,所以一起偏高)。「下界」是對期望而言;實際訓練時只有有限樣本,估計值帶著抽樣誤差,可能落在真值兩側。f-GAN 的 discriminator 也同樣只看得到有限樣本。
  • 在 \(p\) 和 \(q\) 都有很多樣本的區域,藍線貼近虛線;在兩側的尾巴,樣本很少,\(T\) 和 \(T^*\) 可能差很多。Reverse KL 的 \(T^* = -q/p\) 在右側尾巴(\(p\) 很小)會急遽往負無窮走,最難學。
  • GAN 那一項的真值是 \(2D_{\mathrm{JSD}}-\log 4\approx -1.19\),所以 \(D_{\mathrm{JSD}}\approx 0.098\)。

05支撐集不重疊的問題,與 Wasserstein 距離(投影片 12–13)

f-divergence 很強大,但當 \(p\) 和 \(q\) 的支撐集(機率非零的點的集合)不重疊時會出問題。這在訓練初期很常見:generator 的樣本可能和訓練集差非常遠。48:54

定義 \(D_f(p,q) = \mathbb E_q[f(p/q)]\) 要求 \(q\) 的支撐集涵蓋 \(p\) 的,否則會出現不連續。最簡單的例子:\(p\) 是 0 點上的點質量,\(q_\theta\) 是 \(\theta\) 點上的點質量。49:56

$$D_{\mathrm{KL}}(p,q_\theta) = \begin{cases}0, & \theta = 0\\ \infty, & \theta\ne 0\end{cases}\qquad D_{\mathrm{JS}}(p,q_\theta) = \begin{cases}0, & \theta = 0\\ \log 2, & \theta\ne 0\end{cases}$$

對 \(\theta\) 而言兩者都沒有梯度:沒有任何訊號告訴你 \(\theta = 0.5\) 比 \(\theta = 10\) 好。我們需要一個在支撐集不重疊時仍有定義、而且會隨 \(\theta\) 平滑變化的距離。51:00

Earth mover(Wasserstein)距離

把機率質量想成一堆堆的土。把 \(p\) 的土堆形狀搬成 \(q\) 的形狀,最少要做多少功?搬得越遠越費力。兩個分佈都歸一化,所以土的總量一樣。51:36

投影片 13 的圖:左邊 \(p\) 是 x 軸上幾座高低不同的棕色土堆,右邊 \(q\) 是另一種排列的土堆,中間一把鏟子,示意把左邊的土搬成右邊的形狀。

WASSERSTEIN 距離 $$D_w(p,q) = \inf_{\gamma\in\Pi(p,q)}\mathbb E_{(\mathbf x,\mathbf y)\sim\gamma}\big[\Vert\mathbf x-\mathbf y\Vert_1\big]$$ \(\Pi(p,q)\) 是所有 \(\mathbf x\) 的邊際為 \(p\)、\(\mathbf y\) 的邊際為 \(q\) 的聯合分佈(coupling)。54:14
  • \(\gamma(\mathbf x,\mathbf y)\):從 \(\mathbf x\) 搬到 \(\mathbf y\) 的土量。\(\gamma(\mathbf y\mid\mathbf x)\):位置 \(\mathbf x\) 的土要分給哪些 \(\mathbf y\),是一個機率化的搬運計畫。
  • 邊際 \(\int\gamma\,d\mathbf y = p(\mathbf x)\):不能搬走比原本更多的土(起始條件)。邊際 \(\int\gamma\,d\mathbf x = q(\mathbf y)\):搬完之後要剛好是目標形狀(終止條件)。55:49
  • \(\Vert\mathbf x-\mathbf y\Vert_1\) 是搬一單位土的成本(一維就是 \(|x-y|\)):從這裡搬到 Palo Alto 比搬到舊金山便宜。61:05
  • 點質量的例子:所有土都要從 0 搬到 \(\theta\),所以 \(D_w(p,q_\theta) = |\theta|\),隨 \(\theta\) 線性變化,處處有有用的梯度。57:53
課堂問答 · 60:32同樣的邊際,怎麼會有很多聯合分佈?想兩個二元隨機變數:它們可以獨立、也可以高度相關,邊際都一樣。聯合分佈描述兩者如何耦合,在這裡就是「哪裡的土搬到哪裡」。60:32
一維的 Wasserstein 距離有封閉解

在一維,最佳搬運計畫是「按順序配對」:\(p\) 的第 \(\alpha\) 分位數搬到 \(q\) 的第 \(\alpha\) 分位數,不交叉。因此

$$W_1(p,q) = \int_0^1\big|F_p^{-1}(\alpha) - F_q^{-1}(\alpha)\big|\,d\alpha = \int_{-\infty}^{\infty}\big|F_p(x) - F_q(x)\big|\,dx$$

兩組各 \(n\) 個樣本時,就是把兩組都排序,再對應相減取絕對值平均。高維度就沒有這麼簡單了,一般要解一個線性規劃,這也是為什麼要用下一節的對偶形式。Lai et al. 的書第 7 章從 OT 的觀點連到 diffusion 與 flow matching(Monge–Kantorovich 形式、\(W_2\)、Schrödinger bridge)。

出處:Lai et al. (2026) §7.2.1 "Optimal Transport"(coupling 的定義與離散情況的矩陣表示);Lilian Weng〈From GAN to WGAN〉"What is Wasserstein distance?"(離散土堆的例子)。

Demo CKL、JS、W 隨位移的變化

投影片的點質量例子的平滑版:\(p = U[-w,w]\)、\(q_\theta = U[\theta-w,\theta+w]\),兩個寬度相同的均勻分佈。只要 \(\theta\ne0\),\(p\) 就有一部分落在 \(q\) 為 0 的地方,所以 \(D_{\mathrm{KL}}(p\Vert q_\theta) = \infty\)。JSD 等於 \((1-o)\log 2\),\(o\) 是重疊比例;\(W_1 = |\theta|\)。

KL(θ ≠ 0 時為 ∞,畫在頂端)JSDWasserstein W₁

把 \(w\) 調小(例如 0.05),就逼近投影片的點質量:JSD 在 \(|\theta|>2w\) 的地方完全平坦(梯度 0),只有在 \(\theta\) 非常靠近 0 的窄窄一段才有斜率;W 則不管 \(w\) 多小都是一個 V 字形,任何位置都指向正確方向。

06Wasserstein GAN(投影片 14–15)

和 f-divergence 一樣,定義本身用到 \(p\)、\(q\) 的密度,沒辦法直接算。但有一個變分(對偶)形式:64:15

KANTOROVICH–RUBINSTEIN 對偶 $$D_w(p,q) = \sup_{\Vert f\Vert_L\le 1}\;\mathbb E_{\mathbf x\sim p}[f(\mathbf x)] - \mathbb E_{\mathbf x\sim q}[f(\mathbf x)]$$ \(\Vert f\Vert_L\le1\):\(f\) 的 Lipschitz 常數為 1,即 \(\forall\mathbf x,\mathbf y:\ |f(\mathbf x)-f(\mathbf y)|\le\Vert\mathbf x-\mathbf y\Vert_1\)。直覺:\(f\) 不能變化太快。
  • 這裡沒有 \(f^*\),就只是兩個期望之差。64:46
  • 如果沒有 Lipschitz 限制,只要找一個 \(p\ne q\) 的點,把 \(f\) 在那裡無限拉高,目標就會發散。限制讓 \(f\) 只能「平緩地」在 \(p\) 多的地方高、\(q\) 多的地方低。這個 \(f\) 叫 critic 或 witness function。65:16
WGAN 目標 $$\min_\theta\max_\phi\;\mathbb E_{\mathbf x\sim p_{\text{data}}}\big[D_\phi(\mathbf x)\big] - \mathbb E_{\mathbf z\sim p(\mathbf z)}\big[D_\phi(G_\theta(\mathbf z))\big]$$ 沒有 cross-entropy,也沒有 sigmoid。\(D_\phi\) 的 Lipschitz 性質用 weight clipping 或對 \(\nabla_{\mathbf x}D_\phi(\mathbf x)\) 加 gradient penalty 來近似。67:18

和 f-GAN 不同,這不保證是下界:Lipschitz 限制只是近似地強制,只能說是一個近似。69:25

課堂問答 · 69:55推導都不一樣,最後的目標卻都長得很像?對。它們都在找一個 witness function(discriminator、critic、分類器)來分辨 \(p\) 和 \(q\) 的樣本,差別在於怎麼限制它、以及怎麼給它打分數。限制它 1-Lipschitz,得到 Wasserstein;不限制但用 \(f^*\) 打分數,得到 f-divergence。WGAN 的主要優點是實務上好訓練得多,所以很常用。69:55

投影片 15 的圖(Arjovsky et al. 2017 Figure 2):x 軸從 −8 到 8。藍色是真實資料的高斯(中心約 −5),綠色是假樣本的高斯(中心約 +5),兩者幾乎不重疊。紅色是一般 GAN 的 discriminator:在 0 附近從 1 陡降到 0,在兩團樣本所在處都完全平坦,標註「regular GAN 的梯度消失」。青色是 WGAN 的 critic:一條幾乎是直線的斜線,標註「WGAN 的線性梯度」。結論:訓練更穩定、mode collapse 較少。70:59

老師的解釋:discriminator 很容易分開這兩團,結果是一條極陡的 sigmoid,在假樣本附近幾乎是平的,generator 不知道該把樣本往哪移。WGAN 的 critic 幾乎是線性的,在假樣本處有清楚的斜率,generator 知道往左移就會更好,而且知道「這裡的點比那裡的點好」。71:29

課堂問答 · 73:31學生問:critic 的斜線往右上升,不是應該往真實資料那邊高嗎?老師當場猜可能是畫的是「假的機率」。比較可能的解釋是原始實作的正負號慣例(critic 被訓練成在假樣本上高、在真樣本上低,generator 再相應地反向),斜線的方向不重要,重要的是它在假樣本處有不為零的斜率。73:31
課堂問答 · 75:36WGAN 是一個更強的 two-sample test 嗎?一般而言很難證明哪個更好,要看 \(p\)、\(q\) 的假設。如果有無限強的 discriminator,兩者大概都行。實務上永遠有近似、受限的 discriminator 家族、解不到最佳的 minimax,而 Wasserstein 型的目標實際上穩定得多。75:36
怎麼強制 Lipschitz?weight clipping、gradient penalty、spectral normalization
  • Weight clipping(原始 WGAN):每次更新 critic 之後,把所有權重截斷到 \([-c,c]\)(例如 \(c = 0.01\)),讓函數的斜率有上界。原論文自己承認這是「強制 Lipschitz 的糟糕方法」:\(c\) 太大收斂慢,\(c\) 太小梯度消失。
  • Gradient penalty(WGAN-GP):在真假樣本之間隨機內插的點 \(\hat{\mathbf x}\) 上,加 \(\lambda(\Vert\nabla_{\hat{\mathbf x}}D(\hat{\mathbf x})\Vert_2 - 1)^2\),常用 \(\lambda = 10\)。理由:最佳 critic 在最佳搬運路徑上的梯度範數恰好是 1。Petzka et al. (2018) 建議只懲罰「大於 1」的部分(one-sided)。
  • Spectral normalization(Miyato et al. 2018):把每層權重矩陣除以它的最大奇異值,讓每層都 1-Lipschitz,整個網路也就 1-Lipschitz(leaky ReLU 本身是 1-Lipschitz)。

Gradient penalty 的梯度要對「\(\nabla_{\mathbf x}D\)」再對參數微分(二階導數),本頁 demo 手寫的小網路沒有這個功能,所以改用差分商近似:在內插點 \(\mathbf a\) 和 \(\mathbf a + h\mathbf u\)(\(\mathbf u\) 是隨機單位向量,\(h = 0.05\))上算 \(D\),懲罰 \(\lambda\max(0,|D(\mathbf a+h\mathbf u)-D(\mathbf a)|/h - 1)^2\)。這是 one-sided penalty 的有限差分版本,只需要一階梯度。

出處:Arjovsky, Chintala & Bottou (2017), "Wasserstein GAN";Gulrajani et al. (2017), "Improved Training of Wasserstein GANs";Petzka, Fischer & Lukovnicov (2018), "On the regularization of Wasserstein GANs";Miyato et al. (2018), "Spectral Normalization";Lilian Weng〈From GAN to WGAN〉。

Demo D重現投影片 15:誰給 generator 有用的梯度?

真實樣本 \(\mathcal N(-5,1)\)(橘),假樣本 \(\mathcal N(5,0.7^2)\)(綠),兩者都固定。同時訓練兩個 1→32→32→1 的網路:一個用 cross-entropy 當 discriminator(藍,畫 \(D(x)\)),一個用 WGAN 目標加 Lipschitz 懲罰當 critic(紫,畫 \(f(x)\),縮放後畫在同一張圖)。下方小箭頭是每個假樣本收到的梯度方向與大小。

真實樣本假樣本GAN discriminator D(x)WGAN critic f(x)(縮放)
  • 原始(saturating)generator loss \(\log(1-D(G(\mathbf z)))\):在假樣本處 \(D\approx 0\),梯度是 \(D\cdot|\partial_x s|\),實測約 \(10^{-5}\),箭頭小到看不見,就是投影片說的梯度消失。
  • Non-saturating loss(第 9 講補充):梯度是 \((1-D)\cdot|\partial_x s|\),比原始 loss 大好幾個數量級(實測約 0.09),但仍比 WGAN 小。它的大小取決於 discriminator 的 logit \(s\) 在假樣本處有多陡:logit 在遠離決策邊界處常常變平,不同初始化差異很大(另一次離線實驗是 2.7)。所以「梯度消失」最嚴重的是原始 minimax loss;non-saturating 能緩解,但不保證,而且 Arjovsky & Bottou (2017) 指出它有另外的不穩定問題。
  • WGAN critic:在整個範圍幾乎是一條直線,斜率約 1.5(懲罰是軟性的,所以會略超過 1),每個假樣本都收到大小相近、指向真實資料的梯度。它的另一個好處在 Demo C:critic 的值本身就是距離的估計,會隨著兩團靠近而變小。

Demo EGAN vs WGAN:8 個高斯排成一圈

第 9 講 Demo D 的同一個資料(半徑 2、標準差 0.05 的 8 個高斯)。兩個模型用相同的架構(2 層 32 個隱藏單元)、相同的初始化種子,各訓練 4,800 步:左邊是 GAN(non-saturating loss),右邊是 WGAN(critic 每步更新 1 次,Lipschitz 懲罰 \(\lambda = 10\))。

GAN
WGAN
WGAN critic 的估計 E_data[f] − E_G[f](每 40 步平均)

我用同一份程式和設定在 Node.js 上跑了種子 1–6。GAN 訓練對極小的數值差異很敏感,瀏覽器和 Node.js 的浮點運算細節不同,所以同一個種子在這個頁面上的結果不會完全一樣(例如種子 1:頁面上 WGAN 的「最少/最多」是 81%,Node.js 上是 51%;GAN 兩邊都是 22%),但整體趨勢相同。到 4,800 步:

涵蓋的 mode 數最少的 mode 是最多的落在 mode 附近
GAN7–8(兩個種子漏掉 1 個)2%–73%,中位數約 17%69%–78%
WGAN6 個種子都是 820%–86%,中位數約 75%48%–76%
  • WGAN 的主要差別是分配均勻:GAN 常把大部分樣本放在幾個 mode,冷落其他的。這和投影片說的「較少 mode collapse」一致。
  • WGAN 前期比較慢:1,600 步時常常只涵蓋 1–6 個 mode,GAN 已經有 5–8 個。到 4,800 步時,落在 mode 附近的比例兩者差不多(GAN 69%–78%、WGAN 48%–76%),WGAN 沒有比較「銳利」。
  • 下方曲線是 WGAN critic 的估計 \(\mathbb E_{\text{data}}[f]-\mathbb E_G[f]\)。它先上升(critic 還在學),之後隨著樣本變好而下降;結果最差的種子 2,最後的估計值也最高(0.27,其他種子約 0.13–0.16)。這是 WGAN 的實際好處:loss 本身可以用來監看訓練,原始 GAN 的 loss 做不到。
  • 這只是一個小玩具,不要過度解讀。

07從 GAN 推回潛在表示:BiGAN(投影片 16–19)

GAN 的 generator 是有向的潛在變數模型 \(\mathbf z\to\mathbf x\)。給一個 \(\mathbf x\),能不能找回它的 \(\mathbf z\),當成特徵拿去做半監督學習、分群等下游任務?77:09

  • 不像 flow:\(G\) 不需要可逆,沒辦法直接反解。
  • 不像 VAE:沒有 inference network \(q(\mathbf z\mid\mathbf x)\)。
  • 解法 1:拿 discriminator 倒數第二層的 activation 當特徵。直覺:要分辨真假,它必須學到資料中有用的特徵,就像監督式學習的網路一樣,可以 fine-tune 到其他任務。78:12
  • 解法 2:要直接推出 generator 的 \(\mathbf z\),需要不同的學習演算法。改成比較 \((\mathbf x,\mathbf z)\) 的聯合分佈,而不只是 \(\mathbf x\)。模型生成的 \(\mathbf x\) 有對應的 \(\mathbf z\)(自己抽的),但資料的 \(\mathbf x\) 沒有,所以需要一個 encoder。79:15

投影片 18–19 的圖(Donahue et al. 2017):左上紫色框標 features,裡面的 \(\mathbf z\) 經過三角形 \(G\) 變成 \(G(\mathbf z)\),放在藍綠色 data 框中;左下 data 框裡的 \(\mathbf x\) 經過反向的三角形 \(E\) 變成 \(E(\mathbf x)\),放在 features 框中。兩個配對 \((G(\mathbf z),\mathbf z)\) 和 \((\mathbf x,E(\mathbf x))\) 都送進右邊的三角形 \(D\),輸出 \(P(y)\):這一對是來自 generator 還是 encoder?

BIGAN
  • Encoder \(E:\mathbf x\mapsto\mathbf z\):訓練時只看真實資料 \(\mathbf x\sim p_{\text{data}}\)。
  • Generator \(G:\mathbf z\mapsto\mathbf x\):訓練時只看先驗樣本 \(\mathbf z\sim p(\mathbf z)\)。
  • Discriminator 看配對(拼接起來):分辨 \((\mathbf z, G(\mathbf z))\) 和 \((E(\mathbf x),\mathbf x)\)。
  • 訓練完:用 \(G\) 生成新樣本,用 \(E\) 推斷真實資料的潛在表示。
80:15

如果 discriminator 分不出這兩種配對,代表 encoder 產生的 \(\mathbf z\) 和 generator 用來生成那個 \(\mathbf x\) 的 \(\mathbf z\) 很像:encoder 實際上在反轉 generator。這和 VAE 很像,但 \(E\) 是確定性的,而且不是用 ELBO 裡的 KL 訓練,而是用 discriminator 做的 two-sample test。82:15

課堂問答 · 83:50是不是有四種組合(真圖配 encoder 特徵、生成圖配 encoder 特徵……)?在 BiGAN 裡只有兩種:模型樣本配它的 \(\mathbf z\),真實資料配 encoder 的輸出。要求更強的一致性(例如 \(E(G(\mathbf z))\approx\mathbf z\))就接近 cycle consistency,本來要在後面的投影片講。83:50
課堂問答 · 85:52這不就是讓 encoder 把真實圖片對應到先驗那些 \(\mathbf z\) 嗎?對,和 VAE 同樣的直覺:encoder 的輸出要和你自己從先驗抽的 latent 分不出來。VAE 用 KL 衡量「分不出來」,BiGAN 用 discriminator。85:52
BiGAN 的理論保證

同一時間還有一篇幾乎一樣的工作 ALI(Dumoulin et al. 2017),差別是允許 encoder 和 generator 是隨機的。BiGAN 論文證明:在最佳 discriminator 下,目標等於兩個聯合分佈 \(p_E(\mathbf x,\mathbf z) = p_{\text{data}}(\mathbf x)\delta(\mathbf z - E(\mathbf x))\) 和 \(p_G(\mathbf x,\mathbf z) = p(\mathbf z)\delta(\mathbf x - G(\mathbf z))\) 之間的 JSD;全域最佳時兩個聯合分佈相同,此時 \(E = G^{-1}\)(在幾乎所有點上)。也就是說,理想情況下 encoder 恰好是 generator 的反函數,即使訓練時從沒直接要求過。

出處:Donahue, Krähenbühl & Darrell (2017), "Adversarial Feature Learning", arXiv 1605.09782(Theorem 1–2);Dumoulin et al. (2017), "Adversarially Learned Inference", arXiv 1606.00704。

08時間不夠沒講到的投影片:CycleGAN、AlignFlow、StarGAN(投影片 20–28)

影片在 BiGAN 的問答後結束;第 11 講直接開始講 energy-based model,沒有回頭講這部分。以下是投影片內容的整理。

跨領域的影像轉換(投影片 20)

給兩個領域 \(\mathcal X\)、\(\mathcal Y\) 的影像(例如照片和莫內的畫)。成對的例子(同一場景的照片與畫)很難取得;能不能只用不成對的兩堆圖,非監督地學 \(\mathcal X\leftrightarrow\mathcal Y\)?

投影片 20 的圖(Zhu et al. 2017):左邊「Paired」是一列列的配對,例如鞋子的線稿對應實拍照片;右邊「Unpaired」是兩欄互不對應的圖,一欄是風景照片、一欄是畫作。

CycleGAN(投影片 21–23)

  • 學兩個條件生成模型 \(G:\mathcal X\to\mathcal Y\) 與 \(F:\mathcal Y\to\mathcal X\)。
  • discriminator \(D_{\mathcal Y}\) 比較真實的 \(\mathcal Y\) 和 \(\hat{\mathcal Y} = G(\mathcal X)\);\(D_{\mathcal X}\) 比較真實的 \(\mathcal X\) 和 \(\hat{\mathcal X} = F(\mathcal Y)\)。
  • Cycle consistency:從 \(\mathcal X\) 經 \(G\) 到 \(\hat{\mathcal Y}\),應該能經 \(F\) 回到原圖:\(F(G(X))\approx X\);反之 \(G(F(Y))\approx Y\)。
$$\min_{F,G,D_{\mathcal X},D_{\mathcal Y}}\;\mathcal L_{\text{GAN}}(G,D_{\mathcal Y},\mathcal X,\mathcal Y) + \mathcal L_{\text{GAN}}(F,D_{\mathcal X},\mathcal X,\mathcal Y) + \lambda\underbrace{\Big(\mathbb E_X\big[\Vert F(G(X))-X\Vert_1\big] + \mathbb E_Y\big[\Vert G(F(Y))-Y\Vert_1\big]\Big)}_{\text{cycle consistency}}$$

(投影片把 discriminator 寫在 min 下面,實際上 \(D_{\mathcal X},D_{\mathcal Y}\) 要對 GAN 項取 max,和第 9 講一樣是 minimax。)

投影片 22–23 的圖(Zhu et al. 2017):(a) 兩個圓 \(X\)、\(Y\) 之間有 \(G\) 和 \(F\) 兩個方向的箭頭,各有一個 discriminator;(b)(c) 示意 \(x\to\hat y\to\hat x\) 和 \(y\to\hat x\to\hat y\) 兩個循環,回到原點的誤差就是 cycle-consistency loss。投影片 23 是結果:莫內的畫 ↔ 照片、斑馬 ↔ 馬、夏天 ↔ 冬天的優勝美地,以及同一張風景照轉成莫內、梵谷、塞尚、浮世繪風格。

為什麼需要 cycle consistency?

只有 GAN 項的話,\(G\) 只被要求「輸出看起來像 \(\mathcal Y\) 領域的圖」,它完全可以忽略輸入,把每張照片都變成同一張好看的畫,或者把照片對應到內容無關的畫(這也是一種 mode collapse)。分佈層級的對齊有無限多種 \(\mathcal X\to\mathcal Y\) 的對應方式都能達成。cycle consistency 要求轉換可以被逆轉,等於要求 \(G\) 保留足夠的輸入資訊,大幅縮小可行的對應方式。

出處:Zhu, Park, Isola & Efros (2017), "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks", arXiv 1703.10593。

AlignFlow(投影片 24)

如果 \(G\) 是 flow 模型呢?那就不用另外參數化 \(F\):\(F = G^{-1}\)。可以用 MLE 和/或對抗學習訓練,而且精確地 cycle-consistent:\(F(G(X)) = X\)、\(G(F(Y)) = Y\)。

投影片 24 的圖(Grover et al. 2020):左邊是 CycleGAN 的圖示,\(X\)、\(Y\) 之間有兩個獨立的映射;右邊是 AlignFlow:\(X\) 和 \(Y\) 各有一個 flow 映射到共享的潛在空間 \(Z\),\(G_{X\to Y} = G_{Z\to Y}\circ G_{X\to Z}\),反方向就是它的反函數。(AlignFlow 是 Ermon 實驗室的工作。)

StarGAN(投影片 25–27)

如果有很多個領域呢?CycleGAN 對 \(k\) 個領域需要 \(k(k-1)\) 個生成器(每對兩個方向)。StarGAN 只用一個生成器,把目標領域的標籤當條件輸入。

投影片 25–27 的圖(Choi et al. 2018):(a) cross-domain models:4 個領域兩兩之間有 12 個生成器 \(G_{12},G_{21},\dots\);(b) StarGAN:5 個領域圍著中間一個生成器 \(G\),呈星形。投影片 26 是訓練流程:discriminator 同時判斷真假和領域分類;generator 吃「輸入圖+目標領域」產生假圖,再吃「假圖+原領域」重建原圖(也是 cycle consistency)。投影片 27 是 CelebA 人臉的結果:同一張臉改成金髮、改變性別、變老、蒼白膚色,以及 RaFD 資料集的生氣、開心、害怕等表情。

總結(投影片 28)

  • 關鍵觀察:實務上,樣本品質和 likelihood 不相關。
  • two-sample test 目標讓我們只靠樣本學生成模型(likelihood-free)。
  • two-sample test 目標的範圍很廣,涵蓋 f-divergence、Wasserstein 距離等等。
  • 可以用 BiGAN 推斷潛在表示。
  • 可以用 CycleGAN、AlignFlow、StarGAN 做 cycle-consistent 的領域轉換。

常見誤解

誤解:「f-GAN 精確地最小化 f-divergence」。內層最大化只在一族網路中做、而且只走幾步,得到的是下界;外層是在最小化這個下界,方向不一定對。
誤解:「f-divergence 能用在 likelihood 模型上,所以不需要 discriminator」。就算 \(p_\theta\) 算得出來,\(p_{\text{data}}\) 也算不出來,密度比仍然未知。
誤解:「WGAN 的 critic 輸出是機率」。它沒有 sigmoid,是一個實數值的 1-Lipschitz 函數;只有差值 \(\mathbb E_p[f]-\mathbb E_q[f]\) 有意義,整體加一個常數不影響。
誤解:「JSD 在支撐集不重疊時是無限大」。那是 KL。JSD 會停在常數 \(\log 2\),問題是它不變,所以沒有梯度。
誤解:「WGAN 的估計也是 Wasserstein 距離的下界」。Lipschitz 限制只被近似(clipping 或 penalty),網路可能略為違反,所以只是近似,沒有下界保證。
誤解:「BiGAN 的 encoder 是用重建誤差訓練的」。BiGAN 裡沒有重建誤差,encoder 只透過騙過看 \((\mathbf x,\mathbf z)\) 配對的 discriminator 來學。重建(cycle)是 CycleGAN 等方法另外加的。

自我測驗

1. 用 Jensen 不等式證明 f-divergence 非負。
\(\mathbb E_q[f(p/q)]\ge f(\mathbb E_q[p/q]) = f(\int p) = f(1) = 0\),用到 \(f\) 凸和 \(f(1)=0\)。
2. 為什麼 KL 的生成函數是 \(u\log u\),reverse KL 是 \(-\log u\)?
\(D_f\) 對 \(q\) 取期望。\(\mathbb E_q[\frac pq\log\frac pq] = \mathbb E_p[\log\frac pq] = D_{\mathrm{KL}}(p\Vert q)\);\(\mathbb E_q[-\log\frac pq] = \mathbb E_q[\log\frac qp] = D_{\mathrm{KL}}(q\Vert p)\)。
3. 求 \(f(u) = u\log u\) 的 conjugate。
\(\sup_u(ut - u\log u)\):一階條件 \(t - \log u - 1 = 0\),\(u = e^{t-1}\),代回得 \(f^*(t) = e^{t-1}\)。
4. 證明 \(f^{**}\le f\)。
由 \(f^*\) 的定義,\(f^*(t)\ge ut - f(u)\) 對所有 \(t,u\)。移項 \(f(u)\ge ut - f^*(t)\) 對所有 \(t\),取 sup 得 \(f(u)\ge f^{**}(u)\)。
5. f-GAN 的推導中,哪一步產生了「≥」?為什麼?
把「對所有函數 T 取 sup」換成「對一族網路 \(\mathcal T\) 取 sup」。網路族可能表示不了最佳的 \(T^*\),所以只能得到下界。
6. 最佳的 T 是什麼?它和第 9 講的 \(D^*\) 有什麼關係?
\(T^*(\mathbf x) = f'(p(\mathbf x)/q(\mathbf x))\)。GAN 的 \(f\) 給出 \(T^* = \log\frac{p}{p+q}\),令 \(T = \log D\),得 \(D^* = p/(p+q)\)。
7. 兩個點質量 \(\delta_0\)、\(\delta_\theta\) 的 KL、JS、W 各是多少?哪個能用來訓練 θ?
KL:\(\theta=0\) 時 0,否則 \(\infty\)。JS:\(\theta=0\) 時 0,否則 \(\log 2\)。W:\(|\theta|\)。只有 W 對 \(\theta\) 有有用的梯度。
8. Wasserstein 距離定義中的兩個邊際條件各代表什麼?
\(\int\gamma\,d\mathbf y = p(\mathbf x)\):從每個位置搬走的土等於原本的量。\(\int\gamma\,d\mathbf x = q(\mathbf y)\):每個位置收到的土等於目標形狀。
9. 為什麼 Kantorovich–Rubinstein 對偶需要 Lipschitz 限制?
沒有限制的話,在 \(p\ne q\) 的點把 \(f\) 拉到無窮大,\(\mathbb E_p[f]-\mathbb E_q[f]\) 就會發散。限制斜率後,\(f\) 只能平緩地在 \(p\) 多處高、\(q\) 多處低,最大值才等於搬運成本。
10. 列出兩種實作 Lipschitz 限制的方法和各自的缺點。
Weight clipping:簡單,但 c 太大收斂慢、太小梯度消失。Gradient penalty:效果好,但需要二階導數(對 \(\nabla_{\mathbf x}D\) 再微分),計算較貴;而且只在內插點上近似地強制。
11. 在投影片 15 的設定,為什麼一般 GAN 的 generator 收不到梯度?
兩團幾乎不重疊,discriminator 學成一條極陡的 sigmoid,在假樣本處 \(D\approx 0\) 且幾乎平坦。原始 loss \(\log(1-D)\) 對 x 的梯度正比於 \(D\),趨近 0。
12. BiGAN 的 discriminator 看什麼?訓練後 encoder 怎麼用?
看拼接的配對:\((\mathbf z, G(\mathbf z))\)(\(\mathbf z\) 來自先驗)或 \((E(\mathbf x),\mathbf x)\)(\(\mathbf x\) 來自資料),分辨是哪一種。訓練後對真實資料 \(\mathbf x\) 算 \(E(\mathbf x)\) 當特徵。
13. CycleGAN 為什麼需要 cycle-consistency loss?AlignFlow 為什麼不需要另外加?
只有 GAN loss 時,\(\mathcal X\to\mathcal Y\) 的對應方式有無限多種,\(G\) 可以忽略輸入內容。Cycle loss 要求轉換可逆。AlignFlow 的映射是 flow,\(F = G^{-1}\),天生精確可逆。

延伸閱讀