GAN對抗神經網絡(原理解析)


GAN對抗神經網絡(原理解析)

一、總結

一句話總結:

(一)、GAN的主要靈感來源於博弈論中零和博弈的思想,應用到深度學習神經網絡上來說,就是
(二)、**通過生成網絡G(Generator)和判別網絡D(Discriminator)不斷博弈,進而使G學習到數據的分布**,
(三)、如果用到圖片生成上,則訓練完成后,G可以從一段隨機數中生成逼真的圖像。

 

 

1、對抗神經網絡中的生成器和鑒別器分別作用是什么?

G是一個生成式的網絡,它接收一個隨機的噪聲z(隨機數),通過這個噪聲生成圖像
D是一個判別網絡,判別一張圖片是不是“真實的”。它的輸入參數是x,x代表一張圖片,輸出D(x)代表x為真實圖片的概率,如果為1,就代表100%是真實的圖片

 

 

2、GAN對抗神經網絡 的特點 是什么?

一、相比較傳統的模型,他存在兩個不同的網絡,而不是單一的網絡,並且訓練方式采用的是對抗訓練方式
二、GAN中G的梯度更新信息來自判別器D,而不是來自數據樣本

 

 

3、GAN對抗神經網絡模式崩潰(model collapse)原因:一般出現在GAN訓練不穩定的時候,具體表現為生成出來的結果非常差,但是即使加長訓練時間后也無法得到很好的改善?

一)、GAN采用的是對抗訓練的方式,G的梯度更新來自D,所以G生成的好不好,得看D怎么說。
二)、具體就是G生成一個樣本,交給D去評判,D會輸出生成的假樣本是真樣本的概率(0-1),相當於告訴G生成的樣本有多大的真實性,G就會根據這個反饋**不斷改善自己,提高D輸出的概率值**。
三)、但是如果某一次G生成的樣本可能並不是很真實,但是D給出了正確的評價,或者是G生成的結果中一些特征得到了D的認可,這時候G就會認為我輸出的正確的,
四)、那么接下來我就這樣輸出肯定D還會給出比較高的評價,實際上G生成的並不怎么樣,但是他們兩個就這樣自我欺騙下去了,導致最終生成結果缺失一些信息,特征不全。

 

 

4、為什么GAN中的優化器不常用SGD?

I)、SGD容易震盪,容易使GAN訓練不穩定,
II)、GAN的目的是在高維非凸的參數空間中找到納什均衡點,GAN的納什均衡點是一個鞍點,但是SGD只會找到局部極小值,因為SGD解決的是一個尋找最小值的問題,GAN是一個博弈問題。

 

 

5、為什么GAN不適合處理文本數據?

①)、文本數據相比較圖片數據來說是離散的,因為對於文本來說,通常需要將一個詞映射為一個高維的向量,最終預測的輸出是一個one-hot向量
②)、另外就是GAN的損失函數是JS散度,JS散度不適合衡量不想交分布之間的距離。
③)、WGAN雖然使用wassertein距離代替了JS散度,但是在生成文本上能力還是有限,GAN在生成文本上的應用有seq-GAN,和強化學習結合的產物

 

 

6、訓練GAN的一些技巧?

(I)、輸入規范化到(-1,1)之間,最后一層的激活函數使用tanh(BEGAN除外)
(II)、使用wassertein GAN的損失函數,
(III)、避免使用RELU和pooling層,減少稀疏梯度的可能性,可以使用leakrelu激活函數
(IV)、優化器盡量選擇ADAM,學習率不要設置太大,初始1e-4可以參考,另外可以隨着訓練進行不斷縮小學習率,
輸入規范化到(-1,1)之間,最后一層的激活函數使用tanh(BEGAN除外)
使用wassertein GAN的損失函數,
如果有標簽數據的話,盡量使用標簽,也有人提出使用反轉標簽效果很好,另外使用標簽平滑,單邊標簽平滑或者雙邊標簽平滑
使用mini-batch norm, 如果不用batch norm 可以使用instance norm 或者weight norm
避免使用RELU和pooling層,減少稀疏梯度的可能性,可以使用leakrelu激活函數
優化器盡量選擇ADAM,學習率不要設置太大,初始1e-4可以參考,另外可以隨着訓練進行不斷縮小學習率,
給D的網絡層增加高斯噪聲,相當於是一種正則

 

 

7、GAN的廣泛應用?

*、GAN本身是一種生成式模型,所以在數據生成上用的是最普遍的,最常見的是圖片生成,常用的有DCGAN WGAN,BEGAN,個人感覺在BEGAN的效果最好而且最簡單。
*、GAN本身也是一種無監督學習的典范,因此它在無監督學習,半監督學習領域都有廣泛的應用
*、不僅在生成領域,GAN在分類領域也占有一席之地,簡單來說,就是替換判別器為一個分類器,做多分類任務,而生成器仍然做生成任務,輔助分類器訓練。
*、目前比較有意思的應用就是GAN用在**圖像風格遷移,圖像降噪修復,圖像超分辨率了,都有比較好的結果**。

 

 

 

二、GAN對抗神經網絡(原理解析)

轉自或參考:深度學習----GAN(生成對抗神經網絡)原理解析
https://blog.csdn.net/Sakura55/article/details/81512600


一、原理部分

首先附上一張流程圖

 

 

1.1、 GAN的原理:

         GAN的主要靈感來源於博弈論中零和博弈的思想,應用到深度學習神經網絡上來說,就是**通過生成網絡G(Generator)和判別網絡D(Discriminator)不斷博弈,進而使G學習到數據的分布**,如果用到圖片生成上,則訓練完成后,G可以從一段隨機數中生成逼真的圖像。G, D的主要功能是:

         G是一個生成式的網絡,它接收一個隨機的噪聲z(隨機數),通過這個噪聲生成圖像

         D是一個判別網絡,判別一張圖片是不是“真實的”。它的輸入參數是x,x代表一張圖片,輸出D(x)代表x為真實圖片的概率,如果為1,就代表100%是真實的圖片,而輸出為0,就代表不可能是真實的圖片

 

 

        訓練過程中,生成網絡G的目標就是盡量生成真實的圖片去欺騙判別網絡D。而D的目標就是盡量辨別出G生成的假圖像和真實的圖像。這樣,G和D構成了一個動態的“博弈過程”,最終的平衡點即納什均衡點.

1.2、架構

 

 

       通過優化目標,使得我們可以調節概率生成模型的參數$$\theta$$,從而使得生成的概率分布和真實數據分布盡量接近。

       那么怎么去定義一個恰當的優化目標或一個損失?傳統的生成模型,一般都采用數據的似然性來作為優化的目標,但GAN創新性地使用了另外一種優化目標。首先,它引入了一個判別模型(常用的有支持向量機和多層神經網絡)。其次,它的優化過程就是在尋找生成模型和判別模型之間的一個納什均衡。

       GAN所建立的一個學習框架,實際上就是生成模型和判別模型之間的一個模仿游戲。**生成模型的目的,就是要盡量去模仿、建模和學習真實數據的分布規律;而判別模型則是要判別自己所得到的一個輸入數據,究竟是來自於真實的數據分布還是來自於一個生成模型。**通過這兩個內部模型之間不斷的競爭,從而提高兩個模型的生成能力和判別能力。

 

 

       ~  當一個判別模型的能力已經非常強的時候,如果生成模型所生成的數據,還是能夠使它產生混淆,無法正確判斷的話,那我們就認為這個生成模型實際上已經學到了真實數據的分布。

1.3、 GAN 的特點及優缺點:

特點

           相比較傳統的模型,他存在兩個不同的網絡,而不是單一的網絡,並且訓練方式采用的是對抗訓練方式

           GAN中G的梯度更新信息來自判別器D,而不是來自數據樣本

優點

(以下部分摘自ian goodfellow 在Quora的問答)

           GAN是一種生成式模型,相比較其他生成模型(玻爾茲曼機和GSNs)只用到了反向傳播,而不需要復雜的馬爾科夫鏈

           相比其他所有模型, GAN可以產生更加清晰,真實的樣本

           GAN采用的是一種無監督的學習方式訓練,可以被廣泛用在無監督學習和半監督學習領域

           相比於變分自編碼器, GANs沒有引入任何決定性偏置( deterministic bias),變分方法引入決定性偏置,因為他們優化對數似然的下界,而不是似然度本身,這看起來導致了VAEs生成的實例比GANs更模糊

           相比VAE, GANs沒有變分下界,如果鑒別器訓練良好,那么生成器可以完美的學習到訓練樣本的分布.換句話說,GANs是漸進一致的,但是VAE是有偏差的

           GAN應用到一些場景上,比如圖片風格遷移,超分辨率,圖像補全,去噪,避免了損失函數設計的困難,不管三七二十一,只要有一個的基准,直接上判別器,剩下的就交給對抗訓練了。

缺點

           訓練GAN需要達到納什均衡,有時候可以用梯度下降法做到,有時候做不到.我們還沒有找到很好的達到納什均衡的方法,所以訓練GAN相比VAE或者PixelRNN是不穩定的,但我認為在實踐中它還是比訓練玻爾茲曼機穩定的多

           GAN不適合處理離散形式的數據,比如文本

          GAN存在訓練不穩定、梯度消失、模式崩潰的問題(目前已解決)


附:模式崩潰(model collapse)原因

          一般出現在GAN訓練不穩定的時候,具體表現為生成出來的結果非常差,但是即使加長訓練時間后也無法得到很好的改善。

          具體原因可以解釋如下:
          GAN采用的是對抗訓練的方式,G的梯度更新來自D,所以G生成的好不好,得看D怎么說。具體就是G生成一個樣本,交給D去評判,D會輸出生成的假樣本是真樣本的概率(0-1),相當於告訴G生成的樣本有多大的真實性,G就會根據這個反饋**不斷改善自己,提高D輸出的概率值**。但是如果某一次G生成的樣本可能並不是很真實,但是D給出了正確的評價,或者是G生成的結果中一些特征得到了D的認可,這時候G就會認為我輸出的正確的,那么接下來我就這樣輸出肯定D還會給出比較高的評價,實際上G生成的並不怎么樣,但是他們兩個就這樣自我欺騙下去了,導致最終生成結果缺失一些信息,特征不全。

 

 

                                         局部極小值點

 

 

                     鞍點

二、為什么GAN中的優化器不常用SGD

  1. SGD容易震盪,容易使GAN訓練不穩定,

  2. GAN的目的是在高維非凸的參數空間中找到納什均衡點,GAN的納什均衡點是一個鞍點,但是SGD只會找到局部極小值,因為SGD解決的是一個尋找最小值的問題,GAN是一個博弈問題。

三、為什么GAN不適合處理文本數據

  1. 文本數據相比較圖片數據來說是離散的,因為對於文本來說,通常需要將一個詞映射為一個高維的向量,最終預測的輸出是一個one-hot向量,假設softmax的輸出是(0.2, 0.3, 0.1,0.2,0.15,0.05)那么變為onehot是(0,1,0,0,0,0),如果softmax輸出是(0.2, 0.25, 0.2, 0.1,0.15,0.1 ),one-hot仍然是(0, 1, 0, 0, 0, 0),所以對於生成器來說,G輸出了不同的結果但是D給出了同樣的判別結果,並不能將梯度更新信息很好的傳遞到G中去,所以D最終輸出的判別沒有意義。

  2. 另外就是GAN的損失函數是JS散度,JS散度不適合衡量不想交分布之間的距離。

(WGAN雖然使用wassertein距離代替了JS散度,但是在生成文本上能力還是有限,GAN在生成文本上的應用有seq-GAN,和強化學習結合的產物)

四、訓練GAN的一些技巧

  1. 輸入規范化到(-1,1)之間,最后一層的激活函數使用tanh(BEGAN除外)

  2. 使用wassertein GAN的損失函數,

  3. 如果有標簽數據的話,盡量使用標簽,也有人提出使用反轉標簽效果很好,另外使用標簽平滑,單邊標簽平滑或者雙邊標簽平滑

  4. 使用mini-batch norm, 如果不用batch norm 可以使用instance norm 或者weight norm

  5. 避免使用RELU和pooling層,減少稀疏梯度的可能性,可以使用leakrelu激活函數

  6. 優化器盡量選擇ADAM,學習率不要設置太大,初始1e-4可以參考,另外可以隨着訓練進行不斷縮小學習率,

  7. 給D的網絡層增加高斯噪聲,相當於是一種正則

GAN的變種

自從GAN出世后,得到了廣泛研究,先后幾百篇不同的GANpaper橫空出世,國外有大神整理了一個GAN zoo(GAN動物園),鏈接如下,感興趣的可以參考一下:

https://github.com/hindupuravinash/the-gan-zoo

GitHub上已經1200+star了,順便附上一張GAN的成果圖,可見GAN的研究火熱程度:

五、GAN的廣泛應用

  1. GAN本身是一種生成式模型,所以在數據生成上用的是最普遍的,最常見的是圖片生成,常用的有DCGAN WGAN,BEGAN,個人感覺在BEGAN的效果最好而且最簡單。

  2. GAN本身也是一種無監督學習的典范,因此它在無監督學習,半監督學習領域都有廣泛的應用

  3. 不僅在生成領域,GAN在分類領域也占有一席之地,簡單來說,就是替換判別器為一個分類器,做多分類任務,而生成器仍然做生成任務,輔助分類器訓練。

  4. GAN可以和強化學習結合,目前一個比較好的例子就是seq-GAN

  5. 目前比較有意思的應用就是GAN用在**圖像風格遷移,圖像降噪修復,圖像超分辨率了,都有比較好的結果**。

  6. 目前也有研究者將GAN用在對抗性攻擊上,具體就是訓練GAN生成對抗文本,有針對或者無針對的欺騙分類器或者檢測系統等等,但是目前沒有見到很典范的文章。


參考文獻:

https://github.com/hindupuravinash/the-gan-zoo
https://blog.csdn.net/qq_25737169/article/details/78857724#t0
https://www.jianshu.com/p/80bd4d4c2992

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM