1.基本概念

  首先老師解釋了一下GAN的工作過程:

  上圖的意思,假設蝴蝶是生成器(generator),波波鳥是鑒別器(discriminator),蝴蝶的任務是偽裝自己,而波波鳥的任務是識別出蝴蝶並喫了它。一開始蝴蝶沒有任何偽裝,純粹送人(蝶)頭,波波很簡單就能發現蝴蝶。後來蝴蝶進化了,通過模仿枯葉的顏色偽裝自己,波波為了能繼續識別出蝴蝶,也進化為比比鳥,這時單純的顏色偽裝就失效了,於是蝴蝶又進化,不僅用顏色,還用脈絡偽裝自己,同樣,比比鳥也只能進化。就是這樣迭代的過程,使生成器不斷提高性能,直到識別器沒辦法發現偽裝成枯葉的蝴蝶。至於波波鳥最後的命運,大牛們有不同意見,有可能是徹底崩潰,變成一隻廢鳥,也可能是雖然不能分辨枯葉蝶,但還是能識別出不偽裝的蝴蝶,相關的內容在接下來的課程會提到。

老師還提到,為什麼是對抗網路,而不是合作網路。這個可以用鳴人和佐助的關係來對比,從一個角度來看,鳴人和佐助是對手,而從另一個角度來看,他們起到了互相促進的作用,所以,考慮這個問題沒什麼用啦。

  上圖說了GAN大致的訓練過程,第一步先初始化,然後固定生成器,訓練識別器,如果是原圖則給標籤為1,如果是生成圖則給標籤為0。然後固定識別器,訓練生成器。然後不斷迭代這個過程。

  用數學表達就是:

  個人總結:如果只是追求將GAN用起來的話,其實這些內容已經足夠了,根據上面的公式,使用面向github編程的思想,就能搭建一個簡單的GAN模型,但這隻能算會跑程序而已,而且接下來的內容很精彩~

2.Structured learning

  個人覺得,這一章的內容是想說明GAN和傳統機器學的聯繫,加深對GAN的理解。

  機器學習是一個從x映射到y的過程,在傳統機器學習中,回歸是輸出一個值,分類是輸出一個one-hot vector。而在structured learning中,如果任務是生成音頻,那就是輸出一個序列,生成圖像就是輸出一個矩陣,與分類問題或回歸問題不同的是,輸出的每一個元素之間是存在互相影響的(個人理解,比如把圖片每一個像素分開看,是沒有意義的)。

總結來說,structured learning困難的地方在於:

1) structured learning 的輸出是一個巨大的空間,如果類比為分類問題,structured learning 每個輸出(標籤)對應的樣本就會非常少。

2) 因為輸出的每一個元素之間存在互相依賴的關係,比如圖片每個像素之間可能互相影響,所以就需要一個大局觀,或者說模型要考慮到整體的信息。下圖是一個例子

  只看局部的話,中間的圖片裡面的一個點是分不清好壞的,說明一個輸出元素的好壞必須從大局去看。個人覺得,這一部分的內容的目的是為下面的章節鋪墊,即為什麼單單使用生成器效果不夠好。

3.Can generator learn by itself

在GAN問世前,說起神經網路用於生成模型,就會提到AE,但AE的效果有一定侷限性,根據我個人在聽完李老師的課之後的理解,AE的侷限性在於它的泛化性能比較差(好像李老師也沒直接這麼說),一下圖為例:

在圖中,向量a可以可以生成一個偏向左的數字1,向量b可以生成一個偏向右邊的數字1,那a,b兩個向量之間的向量會生成什麼呢?因為在AE中,輸入和輸出是一一對應的,所以沒出現過的樣本在非線性的映射下很可能就會得到不好的效果。

一個改進的方法是VAE,結構圖如下:

VAE不是簡單生成一個目標圖像,而是先生成一個正太分佈,從這個正太分佈中隨機取樣,再將取樣後的雜訊生成圖像,這樣做直觀效果是,輸入輸出不是一一對應的(類似於在輸入樣本中添加了隨機雜訊?),同時為了保證正態分佈中的方差不會退化為0,使用了KL散度作為損失,使編碼器生成的分佈接近於標準正態分佈。這樣訓練出來的模型泛化性能更好,也就是減緩了過擬合的問題。關於VAE的詳細說明,可以看這裡

4.can discriminator generate?

單單使用識別器,可以生成目標圖像嗎?如果忽略實際情況,假如你有一個很厲害的演算法,它能計算所有可能的樣本的好壞程度,那麼就等同於識別器能生成圖像了,因為只要把識別器認為是好的所有樣本都挑出來就好。實際情況中,我們暫時沒有超級機器,也沒有超級演算法。但這種想法並不是一無是處,比如下圖:

  阿嶽老師真的很嚴格(劃掉)生成器可能沒辦法判斷單獨的一個點的好壞,只有從大局上看,把每個像素點聯繫起來,才能正確判斷,而識別器擔當了提供大局觀的角色。

  總結起來,可以得到生成器和識別器的優缺點:

  生成器容易生成有意義的內容,但是容易過度模仿,而且難以學習輸出元素之間的相關關係(輸出神經元之間沒有橫向連接)。

識別器能從大局考慮問題,比如如果是一張圖片,他能從整張圖片中獲取信息,而不是隻關注一個像素點。但在沒辦法獲取所有可能的樣本的情況下,難以自主生成合理的內容,而且對負樣本的採樣也是一個問題。

  綜上,把生成器和識別器聯合起來,就能得到對抗(和作)網路啦!下圖是老師的總結:

  最後,老師對比了一下VAE和GAN在實驗中的效果:

  可以看到,GAN的最好效果是優於VAE的,但是,GAN對參數更敏感,參數調得好的話很好,差的也能很差,想對而言,VAE則平穩一些,對參數的敏感度低一些。個人感覺也可能和訓練方式有點關係,GAN需要將生成器和識別器分開訓練,這就有了要使他們共同進步的問題,如果識別器在某個階段大大優於生成器,那生成器就可能一直被壓制而無法進步,就像塔矢亮差點就被突然開掛的進藤光打到懷疑人生。

  這一章後面還有一小節,但是感覺這小節更多是用於預習接下來的課程,以後還會說到,所以就不做筆記了(其實是因為懶)。


推薦閱讀:
相關文章