0. 背景
Junbo Zhao等人提出的“基於能量的GAN”網絡,其將判別器視為一個能量函數而不需要明顯的概率解釋,該函數可以是一個可訓練的損失函數。能量函數是將靠近真實數據流形的區域視為低能量區域,而遠離的視為高能量區域。和“概率GAN”相似,訓練中,生成器會盡可能生成最小能量時候的偽造樣本,而此時判別器會被賦值為高能量(因為是偽造的)。通過將判別器看成一個能量函數,就可以使用更多更廣泛的網絡結構和損失函數,而不只是logistic輸出的二值分類器。其中Junbo Zhao等人基於此原理,提出了其中一個實現案例,即自動編碼器結構,能量就是重構時候的誤差,以此來代替分類器。而且此時訓練相對常規的GAN也更穩定。並提出了一個單尺度結構,其可以被訓練用來生成高分辨率圖片。
早在2006年LeCun就認為基於能量模型的本質就是建立一個函數,用來將多維輸入空間中的每個點映射成一個標量,而該標量就被稱之為“能量”(參考高爾夫球場)。學習的過程就是一個數據驅動的過程,用來修改能量的表面,使得合適的參數集合下,所需要的區域為低能量,而不需要的區域呈現高能量。有監督學習就是這么個例子:對於訓練集中每個樣本X,(X,Y)的能量會在Y是正確標簽的時候呈現低值,而Y是錯誤的時候呈現高值。同樣的,當對X進行無監督建模的時候,低能量也就是當其在數據流形的時候。這里的對比樣本(contrastive sample)表示那些通常會引起能量升高的那些數據點,也就是如有監督中的錯誤標簽和無監督中低密度數據區域中的點。
GAN可以以兩種方式去解釋:
- 主要的部分是生成器:判別器扮演着可訓練的目標函數的角色。我們假設數據位於一個流形上,當生成器生成的樣本被識別為處在這個流形上,它就會得到一個梯度用來指示它如何修改它的輸出從而更接近這個流形。在這樣的場景下,判別器會當生成的樣本處在流形之外的時候對生成器進行懲罰。這可以理解成一種用於訓練生成器的方法,就為了讓其生成合理的輸出;
- 主要的部分是判別器:生成器被訓練用來生成對比樣本。通過迭代和逐步的輸入對比樣本,生成器增強了判別器的半監督學習性能。
1. EBGAN
1.1 一個基於能量的GAN網絡結構
判別器通過一個目標函數用來表示輸出,其意在建立對應的能量函數,即對真實數據樣本賦予低能量,而偽造的樣本賦予高能量。這里使用了一個邊際損失來做能量函數的選擇。且對於生成器和判別器的目標函數各有不同,如概率GAN一樣。給定一個正的邊際值\(m\),一個數據樣本\(x\),一個生成的樣本\(G(z)\),判別器的損失和生成器的損失分別為\(L_D,L_G\):

其中
關於G的參數去最小化\(L_G\)等效於最大化\(L_D\)的第二項,當\(D(G(z))\geq m\)時它有相同的最小值(因為此時第二項值為0),且非0的梯度
假定生成器以G標識,\(p_G\)為\(G(z)\)的密度分布,其中\(z\sim p_z\)。換句話說,\(p_G\)是由G生成的樣本的密度分布。定義\(V(G,D)=\int_{x,z}L_D(x,z)p_{data}(x)p_z(z)dxdz\)和\(U(G,D)=\int_zL_G(z)p_z(z)dz\)。我們訓練判別器D用於最小化值\(V\),訓練G用於最小化值\(U\)。此時的納什平衡就是有一對最優解\((G^*,D^*)\),他們滿足:

從上述論述中,可以得到兩個結論:
- 如果\((G^*,D^*)\)是系統的納什平衡,那么在幾乎任何地方都有\(p_G=p_{data}\),並且此時\(V(D^*,G^*)=m\)(簡單來說就是\(D(x)=D(G(z))=0.5\))
- 該系統存在一個納什平衡,且有:
- 幾乎任何地方有\(p_{G^*}=p_{data}\)
- 存在一個常量\(\gamma\in[0,m]\),例如\(D_*(x)=\gamma\)(這是假設不存在\(p_{data}(x)=0\)的區域,如果真的存在這種區域,那么\(D^*(x)會有介於[0,m]的其他值賦予該區域\))
證明在論文的2.2部分和附錄A,E
1.2 基於1.1的一個實現(添加正則的AE作為判別器)
在文中,作者提出了一個基於能量GAN結構的實現,其中判別器是一個自動編碼器:


圖1.2.1 以AE作為判別器的EBGAN實現
采用AE而不是傳統的二分類函數的意義有:
- 不同於一個bit的二分類結果,基於重構的輸出可以為判別器提供不同的目標。因為在二分類的logistic loss中,只有2個目標的選項,所以在一個minibatch中,對應不同樣本的梯度基本上都不可能互相正交。這使得訓練十分低效。另一方面,重構loss可以在一個minibatch中產生許多不同方向的梯度,從而允許更大的minibatch size基礎上,基本沒有loss效率的損失。
- 對於傳統角度上看,ae也是用來作為基於能量的模型,所以用它也是自然選擇,而且當加上正則項時,ae可以在沒有監督或者負類樣本的基礎上學習一個能量流形。這意味着即使當一個EBGAN是基於AE實現時,可以只用真實樣本來進行訓練,判別器可以自己去找到數據流形。而這對於二分類的logistic loss時不可能的。
訓練AE的一個通常問題是模型只是學到了恆等函數的結果,這意味着對於整個空間來說,都是0能量。所以為了避免這種問題,模型需要對數據流形之外的點賦予更高的能量值。這可以通過對中間的隱藏層加正則來做到。這樣的正則需要能夠限制AE的表達能力,從而它只賦予輸入點中更小的區域上才有低能量。
在EBGAN結構中能量函數(判別器)通常被認為是由生成器生成的對比樣本給正則了,為了讓判別器有着更高的重構能量。而EBGAN結構從這個角度上看,相對更靈活,因為:
- 正則化器(生成器)可以完全訓練所得,而不需要手工設計;
- 對抗訓練的策略可以讓生成對比樣本的過程和學習能量函數的過程直接相互接觸。
基於上面所述,提出了repelling regularizer,意在讓模型不要生成那些聚類在一點的樣本或者基本沒擬合到\(p_{data}\)的分布。另一個技術叫"minibatch discrimination"(Improved techniques for training gans) 也是遵循相同的原則。
這里提出的正則項叫做Pulling-away項,假設\(S\in R^{s\times N}\)表示AE的編碼層輸出的項。其中\(N\)表示batch中樣本個數;\(s\)為AE的隱藏層輸出向量。

PT是在一個minibatch上操作的,意在正交逐對樣本表征。采用cos相似度而不是歐式距離是為了保證此項的下限值和尺度不變性。
2. 實驗分析
2.1 基於mnist的參數配置搜索
作者對比了下EBGAN和GAN的不同參數下的結果。

上表中只包含了一部分參數配置,如EBGAN只展現了編碼器的層結構,其中還有
- m值設定為10,且訓練中無變化:
- 在每一層權重層后都有BN層,除了生曾去的輸出層和判別器的輸入層;
- 訓練圖像都縮放到[-1,1],用來適應生成器輸出層使用的tanh激活函數;
- 使用ReLU作為非線性激活函數;
- 初始化:判別器中初始化是N(0,0.002);而生成器的是N(0,0.02)。偏置都初始化為0
模型的好壞采用“inception score”(Improved techniques for training gans)進行判別

可以看出加了PT正則項的結果最好,其中參數為:
- (a): \(nLayerG=5, nLayerD=2, sizeG=1600, sizeD=1024, dropoutD=0,optimD=SGD, optimG=SGD, lr=0.01.\)
- (b): \(nLayerG=5, nLayerD=2, sizeG=800, sizeD=1024, dropoutD=0,optimD=ADAM, optimG=ADAM, lr=0.001, margin=10.\)
- (c): 和(b)一樣,且\(\lambda_{PT} = 0.1\)
2.2 基於mnist的半監督學習
附錄d
