一文通俗了解对抗生成网络(GAN)核心思想
目前有時間的時候學習一下gan的知識,但是時間也不多,這里記錄一下所學,不要太期待喔,完全是學習李宏毅老師課程的筆記,由于是新手,歡迎大家交流指錯。
引言
GAN已經作為一種思想來滲透在ML的其余領域,做出了很多很Amazing的東西。被Yann LeCun評價為近十年最有趣的idea,所以相關研究方向的同學gan成了一個必須要學的思想和方法。
Basic Idea of GAN (Generator)
GAN中包括兩個最基本的組件,其中一個就是Generator,對于Image Generation過程來說,你給它一個向量,它輸出一個圖片(image)。
input: vector
output: image
如下所示:
對于Sentence Generation來說,你給它一個向量,它輸出一個句子(sentence)。
input: vector
output: sentence
如下所示:
其中我們以image generation過程來仔細說明一下其中過程原理!
實際上Generator就是一個NN網絡,輸入是一個vector,它的輸出是一個高維的向量,比如image是16*16,那么它的輸出就是256維的向量。
如圖所示:
其中,輸入向量的每一個維度都可以代表輸出image的某些特征,比如說第一維度的值,代表著image人物的頭發長短。
那么我們在調大input vector的第一維的值的時候,我們可以看到生成的image的頭發變長,如下圖所示:
比如說,input vector某一個維度的值大小代表生成image的頭發顏色藍色深淺,調大后,生成的image頭發變得更藍一些:
或者說,input vector某一個維度的值大小代表生成image的口張開的大小,調大后,生成的image人物中口張的更大一些:
總而言之,GAN中的Generator就是一個神經網絡,丟給它一個輸入向量,輸出也是一個向量。
在不同的任務中,生成的東西不同,輸入向量的每一個維度都代表著輸出image的特定特征。
Basic Idea of GAN(Discriminator)?
講完了Generator之后,我們來看GAN的另一個組件,Discriminator。Discriminator也是一個NN網絡,它的輸入是Generator的輸出或者是真實的image...,輸出是一個標量,代表接受的輸入的quality有多好,數值越大,代表越好,數值越小,代表越差。
如下圖:
比如給它輸入是真實的image,那么經過Discriminator之后應該是輸出的標量值很大,代表送入給它的image的質量很高。
比如給它輸入是差的image,那么經過Discriminator之后應該是輸出的標量值很小,代表送入給它的image的質量很低。
Algorithm of GAN
下面我們來介紹一下最基本的gan的訓練算法,不夠嚴謹,但是容易接受。
首先,跟任何網絡訓練一樣,我們需要初始化生成器G,和判別器D的參數
形式化公式就是如下:
1、然后在每一輪中,首先固定住G,訓練D,具體怎么訓練呢?
我們任意選取一些向量,送給G,同時從database中挑選出一些數據,使得判別器學會從database挑選出真實的圖片打分高,任意選取向量從G中生成的圖片,打分低。這樣就是在訓練判別器:
形式化公式如下:
稍微解釋一下圖片中的公式,訓練判別器就是希望它對于真實的圖片打分高,生成的圖片打分低。而公式中是最大化那個式子,分解來看完全對應文字的解釋:
對應真正的圖片打分高,也就是最大化如下公式,公式如下:
2、第二步是固定判別器D,訓練生成器G,我們還是任意給定一些向量,這些向量送給G,生成一些圖片,然后喂進判別器進行判別。
首先我們的目的是使得生成器能夠生成非常真實的圖片,對于真正真實的圖片來說,判別器的打分是高的,那么也就是說,我們需要訓練生成器,使得通過生成器生成出來的圖片讓判別器打分高,盡可能的迷惑判別器,這樣通過生成器生成出來的圖片就是接近“真實的”,土話說就是跟真的好像啊。
形式化公式如下:
公式解釋為:最大化使得判別器對于生成器生成的圖片打分。
這里需要注意的是訓練生成器的時候,一定要固定判別器的參數,因為在實際實現中,生成器和判別器會構成一個大網絡,如果不固定判別器的參數去訓練生成器的話。
因為目標是使得最后的得分高,網絡這個時候僅僅更新最后一層的參數就能讓最后的輸出標量非常大,很顯然這不是我們希望的,如果固定了判別器后面幾個layer,訓練前面生成器的參數就能正常學習。
實例
最后李宏毅老師給出了他自己用gan生成二次元頭像的實例,下面分別給出訓練了不同輪次的生成結果,給大家一個直觀的感覺:
GAN的魅力
可能不少人會有疑問,就是生成一些牛逼的圖像有什么用,模型再厲害,我拿一個照相機照出來的難度會比你差,這里解釋一下,如果僅僅只能生成見過的圖片,確實沒有什么厲害的地方,但是如果可以“合理”的生成沒有見過的圖像,是不是就很有意思呢?如下圖,中間的圖片就是訓練集中重來沒有出現:
它居然自己學到了,在中間參數的時候,頭像的轉向等等特質,非常的amazing
視頻資料如下:
https://www.bilibili.com/video/av23316535from=search&seid=13825323076277645807
備注:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(第一部分)備注:加入本站微信群或者qq群,請回復“加群”獲取一折本站知識星球優惠券,請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的一文通俗了解对抗生成网络(GAN)核心思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你一定不能错过的pandas 1.0.0
- 下一篇: 机器学习案例:scikit-learn实