0. “GAN ZOO”系列文章開更說明
GAN到底有多“熱”?
據統計,GAN的相關論文正在以指數趨勢增長,如上圖所示。
But,
GAN論文這麼多,而且都是英文的,怎麼可能讀得完!
為此,“AI微刊”團隊将推出“GAN ZOO”系列文章,精選典型GAN模型(沒有水論文),對其進行精簡的解析,讓你“三分鐘”讀完一篇論文。
适合初學小白,也适合大牛持續追蹤熱度。
再不GAN,我們就老了!
——AI 微刊《GAN ZOO》
GAN ZOO - 第1節:
分析GAN的缺陷與改進方向,介紹典型的改進模型:CGAN、InfoGAN
本文是“GAN ZOO”系列第一篇,将為您:
- 剖析原始GAN的原生缺陷以及改進方向!
- 介紹經典模型:條件GAN(CGAN)與InfoGAN。
1. 原始GAN (Primary GAN ):GAN源于神奇的零和博弈,但也存在許多原生缺陷
本論文首次發表于2014.6.10
1.1 原始GAN的原理
1.1.1 原始GAN的思想:
GAN基于博弈論中零和博弈的思想,通過生成網絡G(Generator)和判别網絡D(Discriminator)互相博弈,進而使G學習到樣本的資料分布:
- G是一個生成網絡,接收随機噪聲z,并将其拟合為樣本;
- D是一個判别網絡,判斷樣本是真實樣本x,還是G生成的假樣本G(z);
訓練過程中,G生成盡可能“接近真實”的樣本來欺騙D,而D盡量辨識給出的樣本是真樣本x還是假樣本G(z),雙方動态“博弈”,最終達到納什均衡點。
1.1.2 原始GAN的模型
GAN損失函數:
GAN算法流程:
PS:原始GAN詳細解析參考AI微刊另一篇文章“GAN入門”
1.2 原始GAN的實驗
MNIST資料集與TFD資料集生成實驗,其中前5列是生成樣本,最後一列是倒數第二列在真實樣本集中最相近的樣本,可見生成的樣本與真實樣本之間是有不同的。
1.3 原始GAN的缺陷
原始GAN存在以下四個方面的缺陷是學者們改進的方向:
1.3.1 梯度下降法訓練不穩定:
GAN基于梯度下降法進行訓練,訓練不穩定,G與D難以達到納什均衡。
納什均衡:所謂納什均衡,指的是參與博弈的雙方處于這樣一種政策組合,在該政策組合上,任何參與人單獨改變政策都不會得到好處;對于GAN,就是G和D達到鞍點,而非最小值點。
梯度下降法的強項是搜尋全局最小點,是以在訓練GAN的時候難以收斂到鞍點,導緻要麼G到達鞍點,D就遠離鞍點;或者D到達鞍點,G遠離鞍點,難以實作納什均衡。
1.3.2 梯度消失問題
梯度消失問題主要是因為Loss函數存在缺陷,導緻D趨近最優時,G的梯度消失。
G将低維噪聲z映射到真實樣本x所在的高維空間,是以生成樣本G(z)實際上是高維空間的低維樣本(相當于三維空間中的一個面),與高維的x的重疊部分較少。而當D趨近于最優時,區分G(z)與x能力變強,使得兩者重疊部分進一步減少。最終導緻GAN的Loss函數中的JS散度趨近于一個常數,導數梯度趨近于0,不能有效訓練G。
梯度消失問題已經被Wassertein GAN模型解決,該模型将在下一篇文章中詳述。
1.3.3 模式崩潰問題
模式崩潰(Model Collapse)就是對于不同的噪聲輸入,G生成相似的樣本。比如MNIST庫中數字“7”有多種寫法,如果G出現完全模式崩潰(所有生成樣本基本相同),可能所有生成的“7”都是一種寫法;如果G出現部分模式崩潰(所有生成樣本局部相同),可能所有生成的“7”都有一個共同特征,比如都有一個小尾巴。
模式崩潰問題部分源于Loss函數的懲罰偏好:Loss函數中的KL散度非對稱,對GAN的冒險行為(即增大G(z)分布多樣性)懲罰較大,對GAN的保守行為(即減小G(z)分布多樣性)懲罰較小,使得GAN偏向于生成“安全”的重複樣本。
同樣,模式崩潰問題已經被Wassertein GAN模型初步解決,将在下一篇文章中詳述。
1.3.4 不适合處理離散資料
文本資料是離散的,通常需要将單個詞映射為高維向量,最終預測輸出為一個高維one-hot向量。假設softmax的輸出是(0.25,0.3,0.2)那麼變換為one-hot向量是(0,1,0),但如果softmax輸出是(0.05,0.25,0.05),其one-hot向量仍然是(0, 1, 0),是以G輸出了不同的結果但是D給出了同樣的判别結果,不能将梯度更新資訊有效地傳遞到G中去,是以D最終輸出的判别沒有意義。
不适合離散資料的另一個原因也是梯度消失問題的原因,雖然Wassertein GAN已經初步解決該問題,但是其文本生成能力依然有限。GAN在文本生成方面的模型有Seq-GAN等,将在後續文章中解讀。
參考
[1] “GAN原理,優缺點、應用總結”,CSDN
https://blog.csdn.net/qq_25737169/article/details/78857724;
[2] “令人拍案叫絕的 Wasserstein GAN,徹底解決GAN訓練不穩定問題”,搜狐
https://www.sohu.com/a/125598465_473283;
2. 條件GAN(Conditional GAN, CGAN):添加“隐編碼”,有監督學習,生成特定樣本
本論文首次發表于2014.11.6
2.1 原始GAN的缺陷
原始GAN是無監督模型,生成過程不可控,不能生成特定類别、屬性的樣本。
2.2 CGAN的改進
2.2.1 CGAN的思想
CGAN改進的基本思想就是為GAN引入條件限制,在G與D中引入額外資訊y作為條件變量,指導資料生成過程。y可以是類别标簽、或者用于圖像修複的部分資料、或者語義标簽等。
2.2.2 CGAN的思想
(1)CGAN的損失函數:
給定某個樣本x,将該樣本的标簽y(one-hot的10維向量)分别拼接在真實樣本x後構成[x, y],拼接在随機噪聲z後構成[z, y],GAN完成訓練之後,生成樣本G(z|y)與真實樣本x分布一緻,并且可以通過修改y控制G(z|y)的類别。
2.3 CGAN的實驗
原始GAN實驗是利用100維的噪聲,通過G(一個MLP)生成784維的MNIST樣本;CGAN則将10維的one-hot類别标簽拼接在噪聲和真實樣本後,進行訓練。
如下為指定生成的MNIST的“7”與“3”:
以上實驗資料由“AI微刊”團隊實驗部提供。
參考
[1] “GAN論文閱讀——CGAN”,CSDN
https://blog.csdn.net/stalbo/article/details/79359380;
[2] “生成對抗網絡(CGAN)(37)---《深度學習》”,CSDN
https://blog.csdn.net/u014038273/article/details/79254714;
3. InfoGAN: 添加“隐編碼”,無監督學習,生成特定樣本
本論文首次發表于2016.6.12
3.1 原始GAN的缺陷
原始GAN生成的資料高度耦合,資料的每一個次元不代表具體的特征,導緻原始GAN不能對生成樣本G(z)的某些特征進行控制。
3.2 InfoGAN的改進
3.2.1 InfoGAN的思想
InfoGAN引入資料解耦表示(disentangled representation)。資料解耦前互相糾纏,解耦後具有可解釋性。比如,人臉圖像可解耦為眼睛、鼻子、擡頭、側臉等資訊。
3.2.2 InfoGAN的模型
(1)原理推導
InfoGAN将輸入噪聲分為兩部分:随機噪聲z與隐編碼(Latent Code) c,z用于生成樣本,c用于表示部分解耦的特征。
要讓隐編碼c表示生成樣本G(z,c)某一方面的特征,就需要讓兩者具有盡可能多的共同資訊。是以作者引入互資訊I(c;G(z,c)),并在訓練G的過程中使互資訊最大化。
是以,提出了以下的損失函數:
互資訊為:
注解:互資訊I(X;Y),定量表示在X中有多少關于Y的資訊。I(X;Y) =H(X)−H(X|Y) 可以了解為,當Y被觀測到之後,X的不确定性的變化量。如果X與Y互相獨立,則I(X;Y)=0,也就是觀測到X後對觀測Y沒有任何幫助。
但是計算互資訊I(c;G(z,c))需要使用到的P(c|x)難以計算,為此作者提出用輔助分布Q(c|x)來逼近P(c|x)。用L(G,Q) 來拟合I(c;G(z,c))的下界,并且L(G,Q)可以通過蒙特卡洛估計得到。
最終損失函數為:
其中,L(G,Q)為:
在實際操作中,作者将L(G,Q)參數化為一個神經網絡,并且與D共享部分參數,以減小計算量。
(2)模型結構
實際上G與Q之間的過程可以了解為G将[z, c]編碼為生成樣本G(z, c),然後Q再将其解碼為Q(c|x)的過程。
InfoGAN和CGAN的目的基本相同,但是CGAN是有監督的,而InfoGAN是無監督的。
3.3 InfoGAN的實驗
使用MNIST庫做生成實驗,設計了三個隐編碼,c1室10維one-hot向量編碼,每一維填1機率為0.1;c2,c3是連續編碼,是-2到2的均勻分布。實驗發現,c1可以控制類别,c2控制角度,c3控制粗細。但是c1,c2,c3三個編碼為什麼會實作這些功能還不太清楚。
參考
[1] “InfoGAN介紹”,CSDN
https://blog.csdn.net/u011699990/article/details/71599067;
[2] “InfoGAN:一種無監督生成方法”,騰訊雲
https://cloud.tencent.com/developer/news/333199;
本文完
PS: 關注本公衆号“AI微刊”,背景發送“GAN ZOO” (大小寫随意),即可獲得本文相關的GAN論文包以及本文的源代碼資源包。
微信号: AI微刊