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

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

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

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

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 Gdom

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

  • G就是一個生成圖片的網絡,它接受一個隨機的噪聲\(z\),而後經過這個噪聲生成圖片,生成的數據記作\(G(z)\)學習

  • D是一個判別網絡,判別一張圖片是否是「真實的」(是不是捏造的)。它的輸入參數是\(x\)\(x\)表明一張圖片,輸出\(D(x)\)表明\(x\)爲真實圖片的機率,若是爲1,就表明絕逼是真實的圖片,而輸出爲0,就表明不多是真實的圖片。spa

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

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

所以,在訓練的過程當中,咱們會對判別器和生成器進行學習。code

判別器的學習

首先咱們初始化生成器 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網絡的原理進行介紹。數據挖掘殺我!!!

參考

相關文章
相關標籤/搜索