趁著期末補報告的機會,順便發個
基本上是兩篇經典文獻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是變分自編碼器的簡稱,該模型最開始提出的目的是...