GAN訓練技巧彙總
GAN自推出以來就以訓練困難著稱,因為它的訓練過程並不是尋找損失函式的最小值,而是尋找生成器和判別器之間的納什均衡。前者可以直接透過梯度下降來完成,而後者除此之外,還需要其它的訓練技巧。
下面對歷年關於GAN的論文提出的訓練技巧進行總結,這裡僅記錄技巧,具體原理請直接看論文原文。
1 WGAN和WGAN-GP
WGAN論文將GAN原文用來度量兩個分佈之間差異的JS divergence改為了Wasserstein distance,從而有了拉近兩個分佈之間距離的“連續性”指標。經過轉換後,對模型進行的修改如下:
1、判別器輸出層去掉sigmoid,且損失函式不取對數log。也就是說原本的損失是先用sigmoid對映到
(
0
,
1
)
(0,1)模擬機率值,然後再取對數對映到更大的區間以便計算。現在則是直接把這兩步給取消了。實際上這兩步就是多餘的,因為不進行這兩步的輸出值就已經處於所需要的區間了。
2、將判別器引數的絕對值截斷在常數C以內(不是特別大的數就行)。
3、不要用基於動量的最佳化演算法,推薦RMSProp,SGD也行(這是論文實驗得出的結論)。
WGAN-GP對WGAN做出了改進,且僅僅做出了一項改進:
1、將WGAN對判別器權重的裁剪約束,改為對判別器相對於輸入的梯度的大小的約束。以正則項的形式直接加在目標函式中。改進目標函式如下:
L
=
E
x
~
∼
P
g
[
D
(
x
~
)
]
−
E
x
∼
P
r
[
D
(
x
)
]
+
λ
E
x
^
∼
P
x
^
[
(
|
|
∇
x
^
D
(
x
^
)
|
|
2
−
1
)
2
]
L=Ex~∼Pg[D(x~)]−Ex∼Pr[D(x)]+λEx^∼Px^[(||∇x^D(x^)||2−1)2]
判別器引數
w
w的更新就是求
L
L對
w
w的梯度,然後進行梯度下降。而因為有最後一個正則項,所以同樣會把梯度限制在一定範圍內。其中
x
^
x^是
x
x和
x
~
x~的隨機加權和,至於為什麼要用隨機加權和而不是直接求
x
x和
x
~
x~的梯度:
關於WGAN-GP中的遺留問題? - 知乎
當然我們實踐的時候,為了方便,可以直接使用
x
x和
x
~
x~來對梯度的大小進行約束。也就是可以直接在keras中新增關於每個樣本的正則化loss。
2 CGAN
相較於原始GAN,CGAN將影像的某些特徵(比如手寫數字對應的真實數字編碼)加入生成器的輸入進行訓練。這樣訓練出來的生成器就能夠以特徵生成對應的影像,並且訓練收斂的速度會更快一些,可能是因為輸入增加了確定性。
3 InfoGAN
CGAN是新增與影像有關的特徵到原本只有隨機噪聲的輸入中增強訓練,InfoGAN則是讓生成器建立生成影像與輸入生成器的隨機噪聲之間的對映關係,它大致看起來就像是自動編碼器與GAN的結合。
InfoGAN除了定義生成器與判別器之外,還定義了一個與判別器共享大部分權重的“編碼器”。相對於“編碼器”,生成器就成了一個“解碼器”。解碼器將輸入的噪聲解碼為圖片,除了輸入判別器外,還要將圖片輸入編碼器。編碼器則要儘量讓自身的輸出與解碼器(生成器)輸入的某一部分“噪聲”相同,這一部分“噪聲”是人為選擇的隱變數,可以人為設定為離散或連續變數。這樣一來,生成器不但要“照顧”判別器,生成儘量真實的圖片,還要考慮讓解碼器能解碼成功,生成與輸入的噪聲編碼相關的圖片。因此生成器的輸入與其輸出就會有一定的隱式聯絡。
4 DCGAN
對於深度卷積GAN,論文提出四個提高訓練穩定性的方陣:
1、用步幅卷積層來代替所有的池化層。
2、在生成器和判別器中使用BN(Batch Normalization),但不要在生成器的輸出與判別器的輸入層使用。
3、對於層數較深的模型,隱層避免使用全連線層。
4、對於生成器,輸出層啟用函式使用Tanh,其它層啟用函式都使用ReLu。生成器使用Tanh時,輸出的影像顏色數值在
(
−
1
,
1
)
(−1,1)內,因此訓練集影像色值也要從
(
0
,
1
)
(0,1)預處理到
(
−
1
,
1
)
(−1,1)內。
5、對於判別器,所有層的啟用函式都使用LeakyReLu。
5 NIPS 2016 Tutorial:GAN
生成器規模比判別器小更好。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69984138/viewspace-2728431/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「GAN優化」GAN訓練的小技巧優化
- GAN 論文大彙總
- pytorch訓練GAN時的detach()PyTorch
- 拉鉤高薪訓練營筆記彙總高薪筆記
- css 技巧彙總CSS
- R小技巧彙總
- Git 小技巧彙總Git
- Redis 命令練習彙總Redis
- 雙針針技巧彙總
- 1.23訓練總結
- GAN實戰筆記——第五章訓練與普遍挑戰:為成功而GAN筆記
- 令人拍案叫絕的 Wasserstein GAN,徹底解決GAN訓練不穩定問題
- Markdown 編寫技巧彙總(一)
- CosmoGAN:訓練GAN,讓AI尋找宇宙中的暗物質AI
- 前端Chrome除錯技巧最全彙總前端Chrome除錯
- 關於訓練神經網路的諸多技巧Tricks(完全總結版)神經網路
- 【藍橋杯】練習題目彙總
- iOS馬甲包過審技巧彙總iOS
- 深度神經網路的分散式訓練概述:常用方法和技巧全面總結神經網路分散式
- 2024.09.19短時訓練賽總結
- LeetCode演算法訓練-回溯總結LeetCode演算法
- 【CANN訓練營第三季】昇騰AI入門課知識點整理和彙總AI
- 瞭解GAN背後的設計,訓練,損失函式和演算法函式演算法
- 提高效率的 Android Studio 技巧彙總Android
- NOIP 2024 遊記 & 賽前訓練總結
- 谷歌獲批GAN專利,一整套對抗訓練網路被收入囊中谷歌
- halcon——缺陷檢測常用方法總結(特徵訓練)特徵
- Vagrant box 命令彙總彙總
- 訓練生成對抗網路的一些技巧和陷阱
- 生成對抗網路綜述:從架構到訓練技巧架構
- 20240622訓練
- 20240610訓練
- Android 你不知道的除錯技巧(Debug操作彙總)Android除錯
- 探索訓練人工智慧模型的詞彙大小與模型的維度人工智慧模型
- LLM並行訓練7-混合並行總結並行
- 深度學習與CV教程(6) | 神經網路訓練技巧 (上)深度學習神經網路
- 寶鯤財經炒外匯的13個策略技巧彙總
- 「程式碼隨想錄八股訓練營總結」