影片狀態:錄影需登入或課程授權。 本文依公開投影片與作業整理,數值例子為本站補充,不是課堂逐字稿。
分類器學「這張圖是哪一類」,GAN 的生成器學「怎麼從隨機輸入產生像資料的新樣本」。它沒有每張假圖的唯一正確答案,而是藉由另一個模型的判斷取得學習訊號。本篇先走完兩方的 loss,再用一個小因子圖解釋第 6 堂後半段的機率圖模型;不把這兩套訓練方式混為一談。
先備是卷積、二元分類與對數。例子全部為本文自擬。生成器 G 把雜訊 z 變成樣本 G(z),判別器 D 輸出樣本來自真實資料的機率。即使 G 的網路在固定 z 下是確定性的,隨機 z 仍讓整個生成過程形成分佈。
判別器學分辨,生成器學改變樣本
判別器常最小化 L_D=−ln D(x)−ln(1−D(G(z)))。第一項要求真圖的 D 值變大,第二項要求假圖變小。原始 minimax 生成器最小化 ln(1−D(G(z)));實務常用 non-saturating 目標 −ln D(G(z)),在判別器很強時提供較好的梯度訊號。兩者不能不標示就混成同一個 loss。
假設 D(真圖)=0.8、D(假圖)=0.2。L_D=−ln 0.8−ln 0.8=0.4463。生成器 non-saturating loss=−ln 0.2=1.6094;minimax 的生成器項則是 ln 0.8=−0.2231,符號與數值都不同。
若生成器改善樣本,使固定判別器對假圖的輸出變成 0.6,non-saturating loss 降成 0.5108;同時判別器的 loss 變為 −ln 0.8−ln 0.4=1.1394。這不是互相矛盾:同一份假圖現在較能騙過 D,對 G 是進步、對 D 是更難的分類。
輪流更新需要正確梯度路徑
更新 D 時,把 G 產生的樣本 detach,避免這次分類器更新也寫進 G。更新 G 時,固定 D 的參數,但必須保留 D 對輸入的導數,才能把梯度穿過 D 回到 G。把 D 的整個 forward 放在 no_grad 下,會連這條訊號也切斷。
訓練不是每次都把兩個網路各自推到最優,再輪到下一個;實際常以 mini-batch 輪流走有限步。兩方的目標不斷隨對方改變,因此只看一個 loss 降低不能證明整個分佈學得更好。模型也可能只生成少數容易騙人的樣本,這叫 mode collapse。
條件 GAN 可把類別或其他條件同時交給 G 與 D。若 D 不看到條件,它可能只判影象真實,無法直接約束圖與條件一致。生成「像貓的圖」與「符合指定類別的圖」是相關但不同的驗收。
機率圖模型:區域性分數要變成全域性機率
同堂後半的 PGM 用圖表示變數依賴。以下用兩個二元變數 a,b 說明 factor graph。設區域性因子 φ₁(a)=2 若 a=1,否則為 1;另一因子 φ₂(a,b)=3 若 a=b,否則為 1。未正規化權重是兩者相乘。
四種狀態 (0,0)、(0,1)、(1,0)、(1,1) 的權重分別為 3、1、2、6。正規化常數 Z=12,所以機率為 3/12、1/12、2/12、6/12。p(a=1)=(2+6)/12=2/3;p(b=1|a=1)=6/(2+6)=3/4。
因子值 3 並不是機率 3,而是區域性偏好分數;所有組合的權重相加後才決定 Z。條件機率的分母又只在符合條件的狀態中加總。這套計算解釋為何圖模型可以把複雜分佈拆成區域性規則,但計算全域性正規化或邊際仍可能很貴。
GAN 不需要把 generator 的輸出分佈寫成可直接計算的 likelihood。不能看到 PGM 與 GAN 出現在同一堂,就以為 GAN 訓練也一定計算上面的 Z。
變式題與答案
固定 D(真圖)=0.8,把 D(假圖) 改成 0.1。L_D=−ln 0.8−ln 0.9=0.3285,而 G 的 non-saturating loss=2.3026。D 的分類變好,G 的目標變差;兩個數字要分開解讀。
把 φ₁(1) 從 2 改成 1,其餘不變,四個權重成為 3、1、1、3,Z=8,因此 p(a=1)=1/2。條件 p(b=1|a=1) 仍是 3/4,因為固定 a 後共同因子抵消。下一堂將用有向加噪鏈定義擴散模型,讓「圖」接到可計算的生成程式。
課程影片來源
官方錄影入口位於 SCS Panopto。匿名資料夾未載入並提示登入;這表示未取得公開播放內容,不代表沒有錄影。原音與字幕須依課程授權存取。