GAN網絡從入門教程(一)之GAN網絡介紹

GAN網絡從入門教程(一)之GAN網絡介紹

稍微的開一個新坑,同樣也是入門教程(因此教程的內容不會是從入門到精通,而是從入門到入土)。主要是爲了完成數據挖掘的課程設計,然後就把挖掘榔頭挖到了GAN網絡這裏來了。當然,我也是新手上路,如有任何問題,歡迎在評論區留言。

生成式對抗網絡是20年來機器學習領域最酷的想法。 ——Yann LeCun

GAN網絡概要

GAN網絡全稱generative adversarial network,翻譯爲生成式對抗網絡,是一種機器學習方法。由Ian J. Goodfello 等人於2014年在Generative Adversarial Nets 論文中提出。其中在GAN網絡中,有兩個模型——生成模型( generative model G),判別模型(discriminative model D)。

a generative model G that captures the data distribution, and a discriminative model D that estimates the probability that a sample came from the training data rather than G

我們以生成圖片爲例子,本教程的最終的目標是實現使用GAN網絡生成動漫頭像。

  • G就是一個生成圖片的網絡,它接受一個隨機的噪聲\(z\),然後通過這個噪聲生成圖片,生成的數據記做\(G(z)\)

  • D是一個判別網絡,判別一張圖片是不是“真實的”(是否是捏造的)。它的輸入參數是\(x\)\(x\)代表一張圖片,輸出\(D(x)\)代表\(x\)爲真實圖片的概率,如果爲1,就代表絕逼是真實的圖片,而輸出爲0,就代表不可能是真實的圖片。

在訓練的過程中,生成網絡G的目標就是生成假的圖片去騙過判別網絡D,而判別網絡D的目標就是能夠分辨出某一張圖片是不是由\(G\)生成的。這就變成了一個博弈的過程。同時G和D的能力也在訓練的過程中逐漸提高。在最理想的情況下, 則就是\(D(G(z)) = 0.5\)

看到一個比較形象的說法:一個生成器(“藝術家”)學習創造看起來真實的圖像,而判別器(“藝術評論家”)學習區分真假圖像。訓練過程中,生成器在生成逼真圖像方面逐漸變強,而判別器在辨別這些圖像的能力上逐漸變強。當判別器不再能夠區分真實圖片和僞造圖片時,訓練過程達到平衡。

因此,在訓練的過程中,我們會對判別器和生成器進行學習。

判別器的學習

首先我們初始化生成器 G,然後輸入一組隨機向量(Randomly sample a vactor),生成器會根據輸入的向量產生一些圖片,我們把這些圖片標註成 0(假圖片)。同時把已有訓練集中真實的圖片標註成 1(真圖片)。兩者同時丟進判別器 D 中,以此來訓練判別器 D。使得當輸入是真圖片的時候,判別器給高分(分數接近於1),而輸入假圖片的時候,判別器給低分(接近於 0 )。

瞭解深度學習的同學應該就知道了,我們有標記爲1的真實圖片和標註爲0的假的圖片,這個時候,我們就可以很輕易的對\(D\)進行訓練(有了\(x\)\(y\))。

生成器的學習

針對於\(D\)我們有標記爲1和0的數據,因此我們可以對其進行訓練。那麼對於生成器,有\(x\)(也就是隨機噪聲\(z\)),那麼\(y\)在哪裏呢?

對於生成器,我們的目的是使得其能夠生成真實的圖片,換句話說,我們是希望生成的圖片能夠騙過\(D\)。那麼如何通過判別器來產生所謂的\(y\)??我們可以這樣做:

我們通過隨機向量(噪聲數據)經由生成網絡產生一組假圖片,我們將這些假圖片都標記爲 1(也就是說,人爲的把假的圖片當作真實的),然後將這些假圖片輸入到判別器中,判別器在對這些圖片進行判別的時候,會發現這些圖片是假的圖片,然後給出低分,這樣就產生了誤差(因爲標記的爲1,但是判別器給了低分)。

因此,在訓練生成器的時候,這個網絡是串接的。而在訓練生成器的時候,一個很重要的操作就是保持判別器網絡的參數不發生改變,只是把誤差一直方向傳播,傳到生成網絡那塊後更新生成網絡的參數,這樣就完成了生成網絡的訓練了。

在完成生成器的訓練之後,我們又可以產生新的假的圖片去對判別器進行訓練。我們把這個過程稱作爲單獨交替訓練。同時要定義一個迭代次數,交替迭代到一定次數後停止即可。

總結

GAN網絡的入門介紹就到這裏,下一篇博客將會對GAN網絡的原理進行介紹。數據挖掘殺我!!!

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章