在閱讀GAN相關paper之前,可能會有一些基礎的知識要先了解,這邊我整理一些李宏毅老師在課堂上的內容筆記。
在此之前,先整理一些數學基礎:
KL Divergence vs Cross Entropy
1. Entropy:
S=−∑ip(xi)logb(xi)2. Cross Entorpy
事件集合ㄧ事件 xi,相對於真實分佈 A 而言, 分佈B編碼分佈A的平均bit長度(因為分佈機率不均勻,故為期望值)。
H(A,B)=−∑iPA(xi)logPB(xi)在二分問題中:
PA(x=1)=a⟹PA(x=0)=1−a其中A為真實分佈,故a = 1。
PB(x=1)=b⟹PB(x=0)=1−b若計算 H(A,B) :
xi=1⟹PA(xi)logPB(xi)=alogb綜合上二式剛好與二分類問題的Maximun Likelihood相同 :
∑ialogb+(1−a)log(1−b)3. Divergence:
計算分佈差距:
KLDiv(A||B)=∑iPA(xi)log(PA(xi)PB(xi))由上可觀察出若 PA = PB ,則 KLDiv(A||B)=0
且 KLDivergence=S(A)+H(A,B),而在訓練時 A 為訓練集已給定,故可用 H(A, B)等價於分布差異而做訓練。
Introduction of Generative Adversarial Network (GAN)
Discriminator
- In each training iteration:
Discriminator
- Sample m examples { x1,x2,….,xm} from database.
- Sample m noise samples { z1,z2,….,zm } from a distribution.
- Obtaining generated data { ˜x1,…,˜xm }, 其中 \(\tilde x^i = G(z^i)\)
Update discriminator parameters θd to maximize ˜V
- ˜V=1mm∑i=1logD(xi)+1mm∑i=1log(1−D(˜xi))
- θd←θd+η∇˜V(θd)
- ˜V=1mm∑i=1logD(xi)+1mm∑i=1log(1−D(˜xi))
Generator
- Sample m noise samples { z1,z2,….,zm } from a distribution.
Update generator parameters θg to maximize ˜V
- ˜V=1mm∑i=1log(D(G(zi)))
- θg←θg+η∇˜V(θg)
- ˜V=1mm∑i=1log(D(G(zi)))
Basic Theory
Maximun Likelihood Estimation
- 給定一real data的distribution Pdata(x)
- generator的分佈為 PG(x;θ)
- 目標是找出一組參數 θ 使得 Pdata 和PG 越相近越好。
從真實資料分布 Pdata 取樣出{ x1,…,xm },將取樣出的 xi 代入 PG 之後相乘,可得到:
L=m∏i=1PG(xi;θ)最後找出可以使 \(L\) 越大越好的\(\theta\)。
Maximun Likelihood Estimation = Minimize KL Divergence
從真實資料分布 Pdata 取樣出{ x1,…,xm }。
θ∗=argmaxθm∏i=1PG(xi;θ)上式可解讀為:欲找到一個 θ ,使得從 Pdata 隨機取樣到的 xi 計算其在 PG 中的機率取log後相加可以越大越好。由於在data中要取到某個 xi 也有一對應的機率, 故上式可以視為一種期望值的逼近:
≈argmaxθEx∼Pdata[logPG(x;θ)]上式最後一項跟 θ 無關,故可視為常數不影響求值,目的是要導入KL Divergence:
=argminθKL(Pdata||PG)Generator:
假設G是一個network,我們利用G來定義一個機率分佈\(P_G\),如下圖(圖片來自李宏毅老師上課講義)
而我們的目標是:
G∗=argminGDiv(PG,Pdata)其中 Div(PG,Pdata) 代表兩個分部之間的Divergence。
Discriminator
Objective Function for Discriminator:
V(G,D)=Ex∼Pdata[logD(x)]+Ex∼PG[log(1−D(x))]Training:
D∗=argmaxDV(D,G)以下討論:
maxDV(D,G)=V(D∗,G)找一個 D∗ 可以使得上述 V 最大。其中假設 D(x) 可為任意function。故可視為:給定一 x ,找一個 D∗ 使得:
Pdata(x)logD(x)+PG(x)log(1−D(x))有最大值。求最大值,故令 f(D)=alog(D)+blog(1−D)
df(D)dD=a×1D+b×11−D×(−1)=0接著,將 D∗(x)=Pdata(x)Pdata(x)+PG(x) 帶入 V(D∗,G) :
V(D∗,G)Jensen-Shannon divergence JSD :
JSD(P||Q)=12D(P||M)+12D(Q||M),M=12(P+Q)Discriminator + Generator
前面提到,在Generator要解的目標函數式
G∗=argminGDiv(PG,Pdata)因為也提到,在Discriminator的目標函數:
D∗=argmaxDV(D,G)且已推導出:
maxDV(D,G)=V(D∗,G)則可把 $Div(P_G, P_{data}) 代換成:
maxDV(D,G)得到:
G∗=argminGmaxDV(D,G)In Practice
Sample m examples { x1,x2,….,xm} from database.
Generated data { ˜x1,…,˜xm }
實作上無法以積分計算期望值,故 V=Ex∼Pdata[logD(x)]+Ex∼PG[log(1−D(x))]會用下式:
˜V=1mm∑i=1logD(xi)+1mm∑i=1log(1−D(˜xi))觀察發現 Maximize ˜V 可等價於 Minimize 二元分類的 Cross Entropy。D為一Binary Classifier,sigmoid output 0~1之間。一類為real一類為fake。