GAN原理總結

2021-08-03 13:16:20 字數 2165 閱讀 3250

趁著期末補報告的機會,順便發個

基本上是兩篇經典文獻generative adversarial networks與unsupervised representation learning with deep convolutional generative adversarial networks的部分翻譯

基礎gan:原理

gan(generative adversarial nets,生成對抗網路)由j.goodfellow在2023年的文章中正式提出,在其後大熱,在兩三年內被提出多種實用的改進方法,且仍在快速發展.在影象創作,超解析度重建等方面已經得到了有效應用.

gan是一種無監督學習的網路,這決定了其

假設我們有兩個網路,g(generator)和d(discriminator),其中g是乙個生成的網路,它接收乙個隨機的雜訊z,通過這個雜訊生成,記做g(z).d是乙個判別網路,判別一張是不是「真實的」.它的輸入引數是x,x代表一張,輸出d(x)代表x為真實的概率,如果為1,就代表100%是真實的,而輸出為0,就代表不可能是真實的.

在goodfellow的文章中提出了一種清晰的解釋模型:

figure 1一種gan的一維解釋模型

上圖中藍線破折代表判別網路d的分布,黑色點線代表樣本的分布p_x,綠色實現代表生成網路g所生成資料的分布p_g (g)(與p_data相區分).最底層水平線代表z的選取範圍,上層代表x的.其間的箭頭代表對映x=g(z),箭頭的密集程度與p_g分布有關

圖a對應情形中, p_g與p_data很相似,d作為判別器表現良好.

圖b中,d被訓練地更能區別樣本與生成的資料,並收斂於理論最優值:

d^* (x)=(p_data (x))/(p_data (x)+p_g (x))

圖c表示,在g更新後,利用d的導數改變g(z),使得生成的影象更不易被區分出,在圖上表現為綠線與黑線趨同.

圖d表示訓練完成的情形,此時p_g=p_data,分類器無法區分出樣本與生成資料,d(x)=1/2

在訓練過程中,生成網路g的目標就是盡量生成真實的去欺騙判別網路d.而d的目標就是盡量把g生成的和真實的分別開來.這樣,g和d構成了乙個動態的」博弈過程」,以數學式表示如下:

min┬g⁡〖max┬d⁡〖v(d,g)〗=e_(x~p_data (x)) [logd(x)]+〗 e_(z~p(z)) [log⁡(1-d(g(z)))]

這裡,目標函式中log函式的作用是提高早期g與d能力相差過大時的學習效果

對應的梯度學習演算法:

figure 2批量隨機梯度下降法在gan訓練中的應用

dcgan

figure 3生成網路g結構示意(conv層為fractional-strided convolutions層)

dcgan(deep convolutional gan,深度卷積對抗網路)是gan的乙個改進版本.它將gan無監督學習的優點(無需cost function)與cnn結合起來,而gan也因與卷積神經網路結合提公升了針對影象的處理能力.它可以視為在一般cnn上的改進.

與普通的cnn相比,dcgan有如下特點:

將pooling層用convolution層取代.其中在d上用strided convolutions替代,在g上用fractional-strided convolutions層取代

這使得模型可以學習降取樣過程,雖然犧牲一些穩定性

在g與d上均使用batch normalization,即將輸入都歸一化為0均值方差為1

這穩定了學習結果,有助於梯度傳遞

對所有層都採用此方法會導致模型不穩定,不對g的輸出層與d的輸入層採用此方法可以避免這一狀況

移除全連線層:出於收斂速度的考慮

在g上除輸出層均使用relu,輸出層用tanh,在d上所有層使用leakyrelu

對於g有界的啟用函式可以使模型更快飽和,從而覆蓋待學習分布的色彩空間

對於d,尤其是用於超分辨重建時可以取得更好的效果

模型細節:

除將輸入影象歸一化至[-1 1]外無額外初始化處理

全部採用小批量隨機梯度下降法(sgd)訓練,最小批量為128

所有權重初始化值隨機生成,並滿足均值為0,標準差為0.02的正態分佈

leakyrelu的leak斜率被設定為0.2

訓練中採用adam動量法來加速

學習率設定為0.0002,0.001過快

動量項β設為0.9過快,取0.5

GAN學習總結

gan 模型中的兩位博弈方分別由生成式模型 generative model 和判別式模型 discriminative model 充當。生成模型 g捕捉樣本資料的分布,用服從某一分布 均勻分布,高斯分布等 的雜訊 z 生成乙個類似真實訓練資料的樣本,追求效果是越像真實樣本越好 判別模型 d 是乙...

GAN網路之入門教程(二)之GAN原理

在一篇部落格gan網路從入門教程 一 之gan網路介紹中,簡單的對gan網路進行了一些介紹,介紹了其是什麼,然後大概的流程是什麼。在這篇部落格中,主要是介紹其數學公式,以及其演算法流程。當然數學公式只是簡單的介紹,並不會設計很複雜的公式推導。如果想詳細的了解gan網路的原理,推薦去看李巨集毅老師的課...

VAE與GAN做異常檢測的原理

近幾年,有大量的人用vae和gan來做異常檢測,用這兩個模型做異常檢測的假設都是一樣的,即假定正常資料是服從某一種分布的,而異常資料是不能夠擬合進這個分布的,因此我們可以用vae和gan來找到正常資料的分布,從而用這個分布來做異常檢測。1 vae vae是變分自編碼器的簡稱,該模型最開始提出的目的是...