github地址:https://github.com/openai/improved-gan/
What:
提出了對於GANs新的結構和訓練過程。主要focus在兩個應用:半監督學習 和 更好的圖像產生。
對於G,不要求一個和test data和像的模型,也不要求不使用label。
實驗中,D在半監督分類任務上達到了state-of-art的結果。
G在MNIST樣本人已經無法分辨,CIFAR10的樣本人也有21.3%的概率認錯。
How:
訓練GANs 其實是一個找納什均衡的問題。但這個均衡很難找到,cost函數不是凸的。
所以引入了一些策略來鼓勵收斂。
1. Feature matching
爲G設定一個新的目標函數。
替代原先的最大化D的目標,新的目標是用G去產生數據來匹配真實數據。 D還是和原來一樣。
f(x) 代表D中的一箇中間層,新的目標函數爲 f(G(x)) 和 f(z) 的二範數最小。
2.minibatch discrimination
孤立的看一個個sample,容易使G收斂到一個點(這就是我之前跑實驗常遇到的問題啊!!!)
之前DCGAN裏面用batch normal其實也是爲了讓D不孤立的去看sample。
所以作者提出了使用minibatch discrimination,意思是我們不孤立的看sample,加入sample之間的信息,來寫D。(G的objective不變,還是最大化D)
公式的主要意思是,除了D中原來的f(x)外,加入一個信息,就是minibatch 中 f(x)之間的距離 (在bp的時候會有作用)
(作者還提到在訓練分類器時,feature matching會表現得更好)
3.Historical averaging
加入了一個正則項。
4.One-side label smoothing
把gt的label 從1,0變成0.9,0.1
generate還是 1和 0
5.VBN
batch normalize 依賴minibatch裏面的其他數據。這會有影響。所以提出了一個 virtual batch normalise
每次sample的時候另外再sample一個batch 根據這個batch做norm (這隻使用在G中)