https://zhuanlan.zhihu.com/p/33752313,講的不錯。
1.損失函數
第一項主要是針對真實樣本的,第二項是針對生成樣本的損失。
//判別器是盡可能地判別出是真實數據還是生成數據,我一直以為是盡可能判別不出呢。。。
2.訓練過程
可以看到是先確定G,優化D,確定了優化D之后,再優化G,然后循環進行上面的過程。
3.GAN的缺點
https://zhuanlan.zhihu.com/p/58260684
當固定Generator時,最優的Discriminator是
在面對最優Discriminator時,Generator的優化目標就變成了
如果把Discriminator訓練到極致,那么整個GAN的訓練目標就成了最小化真實數據分布與合成數據分布之間的JS散度。
有關JS散度的目標函數會帶來梯度消失的問題。也就是說,如果Discriminator訓練得太好,Generator就無法得到足夠的梯度繼續優化,而如果Discriminator訓練得太弱,指示作用不顯著,同樣不能讓Generator進行有效的學習。這樣一來,Discriminator的訓練火候就非常難把控,這就是GAN訓練難的根源。
//2021-4-5更新——————
4.基本訓練過程
雖然圖中畫的是真實和生成圖片同時進入判別器,但實際上是分階段進入的。
使用交叉熵損失,針對判別器D和生成器G有不同的優化器,是分階段優化的。
4.1 訓練判別器D
基本分為4個步驟:
①向判別器D輸入真實圖片,獲取輸出,計算與真實label交叉熵損失;
②用生成器G生成虛假圖片;
③將虛假圖片輸入判別器D,獲取輸出,計算與虛假label交叉熵損失;
④更新判別器D的參數
計算損失時分別計算的是真實的圖片與真實的label,虛假的圖片與虛假的label,目的是讓判別器盡可能地分辨出真偽圖片。
4.2 訓練生成器G
基本分為3個步驟:
①生成虛假image;
②向判別器D輸入虛假image,計算和真實label的交叉熵;
③更新G的參數
訓練G的目的是盡可能生成和真實圖片相似的image。