一、 基本描述
1. 組成
1) 判別算法discriminative algorithms
判別算法根據(jù)輸入數(shù)據(jù)的feature進(jìn)行分類label; 比如這封郵件是不是垃圾郵件
2) 生成算法 generative algorithms
生成算法根據(jù)特定的label預(yù)測feature
3) 生成器 generator
一個卷積神經(jīng)網(wǎng)絡(luò)
生成新數(shù)據(jù)
4) 判別器 discriminator
一個卷積神經(jīng)網(wǎng)絡(luò)
評估生成數(shù)據(jù)的真實(shí)性
2. 工作過程
1) 簡述
生成模型生成一些圖片->判別模型學(xué)習(xí)區(qū)分生成的圖片和真實(shí)圖片->生成模型根據(jù)判別模型改進(jìn)自己,生成新的圖片->····

2) 過程
a) 在以下兩個Minibatch應(yīng)用梯度下降等優(yōu)化算法
訓(xùn)練樣本
生成樣本
b) 優(yōu)化
3) 結(jié)果
生成模型與判別模型無法提高自己——即判別模型無法判斷一張圖片是生成出來的還是真實(shí)的而結(jié)束
二、 數(shù)學(xué)描述
1. 生成模型 g(z)
1) 概念
輸入z是一個隨機(jī)噪聲
g的輸出就是一張圖片
2. 判別模型? D(x)
1) 概念
輸入X是從模型中的抽取的樣本
D(x)的輸出是0-1范圍內(nèi)的一個實(shí)數(shù),用來判斷這個圖片是一個真實(shí)圖片的概率是多大
2) 公式

解釋: ????D=1(真實(shí)圖片),則P_data=1, P_model=0
????????????????D=0(假的圖片),則 P_data=0
3. 優(yōu)化方法
o 交互迭代
????? 固定g,優(yōu)化D,一段時間后,固定D再優(yōu)化g,直到過程收斂。
4. 代價函數(shù)
1) 判別器的代價函數(shù)J(D)

迄今為止,所有的判別其代價函數(shù)都一樣,不一樣的是生成器的代價函數(shù)。
這是一個標(biāo)準(zhǔn)的cross-entropy cost
真實(shí)數(shù)據(jù)的label=1,生成器生成的數(shù)據(jù)的label=0
目標(biāo)是最小化判別器的代價函數(shù)
2) Minimax 博弈/零和博弈

3) Non-saturating heuristic啟發(fā)式,非飽和博弈

啟發(fā)式驅(qū)動是說按照實(shí)際操作改變策略,而不是遵循理論。
為了防止生成器的梯度消失,把生成器的cost變成:
4) Maximum likelihood最大似然博弈
5) Divergence的選擇
6) Generator 的Cost function的比較

結(jié)論:使用non-saturating
三、 DCGAN
1. 引入——CNN
1) 概念
(convolutional neural network,卷積神經(jīng)網(wǎng)絡(luò))。深度神經(jīng)網(wǎng)絡(luò)的一種,可以通過卷積層(convolutional layer)提取不同層級的信息
2) 輸入
圖片
3) 輸出
圖片
抽象表達(dá)(紋理/形狀etc)
2. 簡介
o 人們?yōu)閳D像生成設(shè)計了一種類似反卷積的結(jié)構(gòu):Deep convolutional NN for GAN(DCGAN)
o 是GAN的使用場景——在圖片中的生成模型DCGAN。
3. 輸入
o 隨機(jī)噪聲向量(高斯噪聲etc)
4. 處理流程
o 輸入通過與CNN類似但是相反的結(jié)構(gòu),將輸入放大成二維數(shù)據(jù)。
o 通過生成模型+判別模型
o 生成圖片
四、 訓(xùn)練GAN的tips
1. 用label訓(xùn)練
2. One-sided label smoothing
防止判別器的極端的可信分類(某一類的可能性為1)
幫助判別器抵抗生成器的攻擊
3. 注意Batch norm的使用
1) Feature norm的定義
subtract mean, divide by standard deviation
2) 注意
會導(dǎo)致batch之間相互影響,應(yīng)該使用virtual batch norm
4. 平衡G和D
D應(yīng)該獲勝,應(yīng)該多鍛煉D,D應(yīng)該更加復(fù)雜
https://deeplearning4j.org/generative-adversarial-network#tips-in-training-a-gan
1. discriminator 與generator,固定一個,訓(xùn)練另一個
2. 開始訓(xùn)練generator之前預(yù)先訓(xùn)練discriminator
3. GAN訓(xùn)練很費(fèi)時間,建議用GPU不要用CPU
五、 GAN與其他神經(jīng)網(wǎng)絡(luò)的比較
1. Auto encoder/decoder
可以壓縮原始數(shù)據(jù)
2. VAE(Variational變化的 auto encoder)
增加了額外的限制
可以壓縮原始數(shù)據(jù)
可以生成數(shù)據(jù)(生成效果沒有GAN好)
六、 GAN的有趣應(yīng)用
https://deeplearning4j.org/generative-adversarial-network#unclassified-papers--resources
七、 評估
1. inception scores
It's particularly interesting because it seems to be a very reliable way to "quantify realism" in GANs,
八、 前沿研究
1. 解決Non-convergence
2. 如何評估生成模型
3. 離散的輸出
4. 半監(jiān)督化學(xué)習(xí)
5. 。。。