GAN(四)—— 模型結構


 

模型結構
第三篇我們了解了InfoGan、cGAN和CycleGAN這三類GAN模型,並且我們注意到在不同的GAN中,生成器和判別器內部使用的模型各式各樣。這一篇我們來看看GAN內部使用的模型,以及GAN的一些特殊的組織方式。

 

DCGAN
原生的GAN中,生成器和判別器采用的都是MLP(Mutli-Layer Perceptron,多層感知機)模型。鑒於CNN(Convolutional Neural Network,卷積神經網絡)在圖像處理上的優異表現,有不少研究者嘗試在GAN中用CNN來對圖像進行處理,DCGAN(Deep Convolutional GAN)就是其中的一個例子。
在DCGAN中,生成器和判別器主要是全卷積網絡(all convolutional net)。在全卷積網絡中,跨步卷積層(strided convolution)代替確定的空間池化層(deterministic spatial pooling,例如MaxPool)。通過跨步卷積,模型能夠自己學習上采樣(upsampling),而不是用人為規定的上采樣方法。對於圖像來說,上采樣就是放大圖像,增加圖像分辨率。
在細節方面,DCGAN的生成器中,只有第一層采用的是全連接層(fully connected layer),生成器的最后一個卷積層直接將結果輸出給判別器(DCGAN的生成器的各層結構如$圖4.1$所示)。在判別器中,最后一個卷積層的輸出會被展平(flatten)成一個向量,然后進入sigmoid函數,最終輸出[0,1]區間的值,進行二分類判斷。另外,DCGAN中除了生成器的輸出層和判別器的輸入層外,所有層都經過批歸一化(batch normalization)。這樣的處理可以使模型在深度較深時仍然有梯度。
在激活函數(activation function)的選擇上,生成器的其他層采用的是ReLU函數,只有輸出層是Tanh函數,因為DCGAN$[4.1]$的作者發現,采用Tanh這樣的有邊界(bounded)的激活函數,能讓模型更快地學習數據的分布。而在判別器中,DCGAN的作者選擇leaky ReLU函數,因為它在處理高分辨率的圖像上更有優勢。

(圖4.1,來自論文《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》)


StyleGAN
StyleGAN是一個用來處理圖像的模型,它的內部結構中也包含了卷積網絡。另外,StyleGAN在設計的時候借鑒風格遷移(style transfer)技術。這種技術能夠讓模型學到圖像中的高層級(high-level)的特征——例如人像中人的姿勢角度、身份特征等,而不是像素級的特征——從而實現特征解耦(feature dientanglement)。通過解耦特征,我們就能控制圖像的生成。
從大的結構來說,StyleGAN的生成器可以簡單地分為兩個模塊,其中一個是合成網絡(synthesis network),另一個是特征映射(feature mapping)網絡(如$圖4.2$所示)。合成網絡與傳統的CNN類的生成器類似,也是通過卷積以及其他處理將輸入轉化為模擬數據。但與傳統的生成器不同的是,StyleGAN中的輸入不是噪音變量$z~N(0,I)$,而是一個固定的常數矩陣。另外,合成網絡對它一些隱藏層有AdaIN(Adaptive Instance Normalization)操作:

\begin{equation} AdaIN(x_i,y) = y_{s,i} \frac{x_i - \mu(x_i)}{\sigma(x_i)} + y_{b,i} \label{4.1} \end{equation}

這種歸一化處理方式與風格遷移中的技術相似——也和批歸一化在結構上有相似之處——$(\ref{4.1})$中$x_i$是第$i$層的隱藏層(就是模型的輸入數據經過i層處理后的結果),$\mu(x_i)$和$\sigma(x_i)$分別是$x_i$的均值和標准差(所以$(x_i - \mu(x_i)) / \sigma(x_i) $是歸一化操作),$y$包括$y_{s,i}$和$y_{b,i}$,代表這一層需要加入的風格或者說樣式,而$y_{s,i}$和$y_{b,i}$分別是平移和縮放因子,它們來自特征映射網絡,也就是來自噪音變量$z$的轉換。

說到特征映射模塊,它主要是一個MLP模型,它的工作是將噪音變量$z$映射到解耦的特征空間$(w)$。第三篇中介紹的InfoGAN也是要實現特征解耦。InfoGAN是將噪音變量分為噪音和隱編碼,然后通過訓練隱編碼來控制圖像的表征。其實對InfoGAN、這里的StyleGAN以及其他一些模型,我們都可以將它們學習解耦表征的模塊了解成編碼器(encoder),只不過InfoGAN和StyleGAN不是將真實數據映射到隱空間,而是從一個隱空間映射到一個解耦的隱空間。
得到隱變量$w$后,再經過仿射變換(affine transformation),我們就得到了樣式(style)$y$。仿射變換實際上就是經過全連接層處理:

\begin{equation} y=Aw+b \nonumber \end{equation}

$A$是全連接層的參數,$y$可以認為是$w$中的解耦表征的某種組合方式。為了實現$w$中特征的解耦,StyleGAN將樣式$y$分別拼接(concatenate)到合成網絡的不同層中,然后學習不同層的表征。為了進一步降低$w$中的特征的相關性,StyleGAN$[4.2]$的作者還采用了一種叫做混合正則化(mixing regularization)的策略。混合正則化就是用兩個噪音變量$z$,每個$z$都經過特征映射生成自己的解耦特征$w$,進而生成獨立的$y$。合成網絡在拼接$y$時,每層都是獨立地隨機地選擇來自第一個$z$的$y$,或者來自第二個$z$的$y$,因此在訓練的時候這些$y$以及它們對應的$w$是相互獨立的。
有了隱藏層$x$和樣式因子$y$,StyleGAN就能生成不同風格樣式的圖像了。對相同的$x$和$y$,生成的圖像的主體是相似的,都是人或狗,但細節上會有差別。為了控制這些細節的質量,StyleGAN的作者在合成網絡中加入了額外的噪音。這些噪音是由服從高斯分布的噪音組成的單通道(single-channel)“圖像”——一般的RGB圖像可能有紅、綠、藍三個通道。這些“圖像”以廣播(broadcast)方式發送到各個卷積層的輸出處,經過一個可學習的縮放參數的處理,然后與這些輸出相結合(拼接)。這些隨機細節可以起到例如改變頭發紋路的作用。

(圖4.2,來自論文《A Style-based Generator Architecture for Generative Adversarial Networks》)


LAPGAN
StyleGAN是在生成器的模型的每一層進行處理,從而控制圖像的不同尺度的信息。在第三篇我們介紹過一個模型$[3.4]$,它是通過設置多個生成器和判別器,來分別控制不同圖像尺度的特征。通過那樣的結構,模型能夠處理分辨率很高的圖像。這樣將多個模型組織在一起的方式我們稱為級聯(cascade)。1983年的一篇論文$[4.3]$介紹了一種經典的圖像處理的技術——拉普拉斯金字塔(Laplacian pyramid)——它采用的也是級聯的結構。基於拉普拉斯金字塔,$[4.4]$的作者設計了LAPGAN。
傳統的拉普拉斯金字塔是一個雙向表征框架。這里的“雙向”是指下采樣(downsampling)和上采樣(upsampling)兩個的相反的過程。在下采樣過程中,尺寸為$j \times j$的圖像被縮小為$j/2 \times j/2$,得到一個高斯金字塔(Gaussian pyramid)。在上采樣過程中,尺寸為$j \times j$的圖像會被放大為$2j \times 2j$的圖像。設圖像為$I$,則高斯金字塔為$g(I)=[I_0,I_1,⋯,I_K]$,其中$I_0= I$,$I_K$為經過$K$次下采樣后的圖像。圖像與其經過下采樣然后再上采樣得到的圖像殘差,也就是兩個圖像的差異:

\begin{align} h_k &= I_k - u(I_{k+1}) \label{4.2}  \\ &= I_k - u(d(I_k)) \nonumber \end{align}

其中$h_k$為殘差,$u(·)$表示上采樣,$d(·)$是下采樣。這些殘差組成了拉普拉斯金字塔$L(h)=[h_1,h_2,⋯,h_K]$,其中最后一個殘差$h_K=I_K$。如果要還原第k級的圖像,我們可以采用下面的方法:

\begin{equation} I_k = h_k+ u(I_{k+1}) \end{equation}

按這樣的思路,我們可以訓練模型,將像素較低的圖像轉換為高像素的圖像。
LAPGAN中每個生成器所學的,正是拉普拉斯金字塔中的殘差$h_k$,所以在LAPGAN中,$k$級的圖像為:

\begin{equation} I_k = G_k (z_k, u(I_{k+1})) + u(I_{k+1}) \label{4.3} \end{equation}

觀察生成器$G_k$可以發現,LAPGAN是一個第三篇中介紹cGAN,$z_k$是輸入到第$k$個生成器的噪音變量,$u(I_{k+1})$是cGAN的條件。LAPGAN中起始的圖像,也就是分辨率最低的圖像是$I_{K+1}=0$,第二級的圖像是$I_K=G_K (z_K)$,其中$G_K$不是一個cGAN生成器。LAPGAN的判別器$D_k$的工作是辨別殘差圖像$h_k$是來自$(\ref{4.2})$還是來自$(\ref{4.3})$的$G_k$。 

通過訓練過的LAPGAN,我們就可以將低分辨率的圖像轉換為高分辨率的圖(如圖4.3所示)。

(圖4.3,來自論文《Deep Generative Image Models Using a Laplacian Pyramid of Adversarial Networks》)


BigBiGAN
最后我們再來看一個比較復雜的模型,BigBiGAN。BigBiGAN借鑒了兩個不同GAN模型,其中Big來自BigGAN,而Bi來自BiGAN。
BigGAN可以認為是一個內部結構更復雜的DCGAN,目前在圖像生成的任務上取得了非常優異的表現。BigGAN證明了一個大容量能夠一次處理大批量數據的模型能夠繼續提升GAN的效果。
BiGAN和第三篇中CycleGAN的部分提到過的ALI相似,也是通過編碼器(encoder)學習圖像的隱藏表征的模型。
BigBiGAN的基本框架延續了BiGAN(如$圖4.5$),但在具體的模型上采用的是BigGAN的結構(如$圖4.4$所示)。BigBiGAN在結構上對BigGAN的改動是在生成器前增加編碼器(如同BiGAN),以編碼器的輸出作為生成器的輸入。另一個改動,是像BiGAN一樣,將判別器改為聯合(joint)判別器。這個判別器以數據對$(x,z)$作為輸入,而不是單個$x$或$z$。當$x$是真實數據$x$時,$z$就是編碼器的輸出$E(x)$;當$x$是生成的數據$G(z)$時,$z$是符合某個預設分布的噪音變量$z$。但相比BiGAN,BigBiGAN的目標函數中多了一元評分(unary score)項。最終,BigBiGAN的目標函數如下:

\begin{align} &V_D (p_{data},p_z) = E_{x \sim p_{data}} [l_D (x,E(x),+1)] + E_{z \sim p_z} [l_D (G(z),z,-1)] \nonumber \\[6pt] &l_D (x,z,y) = \max{⁡(0,y {\theta}_x^T F(x))} + \max{⁡(0,y {\theta}_z^T H(z))} + \max{⁡(0,y {\theta}_{xz}^T J(F(x),H(z)))} \nonumber \\[6pt] &V_{EG} (p_{data} \, ,p_z ) = E_{x \sim p_{data}} [l_{EG} (x,E(x))] - E_{z \sim p_z} [l_{EG} (G(z),z)] \nonumber \\[6pt] &l_{EG} (x,z) = {\theta}_x^T F(x) + {\theta}_z^T H(z) + {\theta}_{xz}^T J(F(x),H(z)) \nonumber \end{align}

其中$V_D$和$V_{EG}$分別為判別器和生成器的目標函數,$E$為編碼器,$G$為生成器,$\max{⁡(0,·)}$為hinge函數(取括號中值最大的那個),$y$取值為+1或-1,${\theta}_x^T$、${\theta}_z^T$和${\theta}_{xz}^T$都是可學習的投射(projection),它們分別將子模型$F$、$H$、$J$輸出的向量投影為數值(評分),${\theta}_x^T F(x)$和${\theta}_z^T H(z)$得到的是$x$和$z$對應的一元評分,${\theta}_{xz}^T J(F(x),H(z))$得到的是$x$和$z$的聯合分數(二元評分)。另外,$F$和$H$分別是卷積網絡和MLP,而$J$是以它們為輸入的一個函數。通過這樣的目標函數,BigBiGAN訓練出來的模型,和BiGAN一樣,具有循環一致性(cycle consistency),也就是$x= G(E(x))$。這和CycleGAN類似,但CycleGAN將$z$替換為真實的數據$y$。

(圖4.4,來自論文《Large Scale Gan Training for High Fidelity Natural Image Synthesis》)

(圖4.5,來自論文《Large Scale Adversarial Representation Learning》)

 

(或許)完結

 


[4.1] A. Radford, L. Metz, and S. Chintala, (2015). “Unsupervised representation learning with deep convolutional generative adversarial networks”.
[4.2] T. Karras, S. Laine, and T. Aila, (2019). “A style-based generator architecture for generative adversarial networks”.
[4.3] P. Burt and E. Adelson, (1983). “The laplacian pyramid as a compact image code”.
[4.4] E. L. Denton, S. Chintala, R. Fergus, et al., (2015). “Deep generative image models using a laplacian pyramid of adversarial networks”.

 

 

小提示1:本篇部分內容基於個人理解,僅供參考,如有錯誤(非常)歡迎指出。另外,如果有看不明白的不好理解的地方,也歡迎告知作者。

小提示2:轉載請注明出處。

 

 


免責聲明!

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



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