編者按:本文內容來自新加坡國立大學【機器學習與視覺實驗室】負責人馮佳時博士在雷鋒網(公眾號:雷鋒網)【硬創公開課】的分享。如果讀者想獲得關於本次公開課的PPT,可前往雷鋒網旗下微信公眾號【AI科技評論】,關注後回復「馮佳時PPT」獲得下載地址。
近年來,基於數據而習得「特徵」的深度學習技術受到狂熱追捧,而其中GAN模型訓練方法更加具有激進意味:它生成數據本身。
GAN是「生成對抗網絡」(Generative Adversarial Networks)的簡稱,由2014年還在蒙特婁讀博士的Ian Goodfellow引入深度學習領域。2016年,GAN熱潮席捲AI領域頂級會議,從ICLR到NIPS,大量高質量論文被發表和探討。Yann LeCun曾評價GAN是「20年來機器學習領域最酷的想法」。
在GAN這片新興沃土,除了Ian Goodfellow所在的OpenAI在火力全開,Facebook的人工智慧實驗室也在這一領域馬不停蹄深耕,而蘋果近日曝出的首篇AI論文,就是基於GANs的變種「SimGAN」。從學術界到工業界,GANs席捲而來。
經360首席科學家、人工智慧研究院院長顏水成強力推薦,【硬創公開課】特邀馮佳時博士,在1月5日為大家帶來了一期以《深度學習新星:GANs的誕生與走向》為主題的演講,撥開圍繞GANs的迷霧。
馮佳時,現任新加坡國立大學電子與計算機工程系助理教授,機器學習與視覺實驗室負責人。
中國科學技術大學自動化系學士,新加坡國立大學電子與計算機工程系博士。2014-2015年在加州大學伯克利分校人工智慧實驗室從事博士後研究。現研究方向為圖像識別、深度學習及面向大數據的魯棒機器學習。
馮佳時博士曾獲ICCV』2015 TASK-CV最佳論文獎,2012年ACM多媒體會議最佳技術演示獎。擔任ICMR 2017技術委員會主席,JMLR, IEEE TPAMI, TIP, TMM, TCSVT, TNNLS及 CVPR, ICCV, ECCV, ICML, NIPS, AAAI, IJCAI等期刊、會議審稿人。馮佳時博士已在計算機視覺、機器學習領域發表論文60餘篇。
以下內容整理自公開課分享。
GANs是深度學習領域比較重要的一個模型,也是人工智慧研究的一個重要工具。
我們現在所追求的人工智慧,一個很重要的特性就是能夠像我們人類一樣,理解周圍複雜的世界。包括識別和理解現實中的三維世界,人類、動物和各種工具。這樣才能在對現實世界理解的基礎上,進行推理和創造。
而正像著名物理學家,理察•費曼說的一樣,如果要真正理解一個東西,我們必須要能夠把它創造出來。
正是基於這樣的想法,機器學習以及人工智慧的研究者們提出了概率生成模型,致力於用概率和統計的語言,描述周圍的世界。
簡單說, 概率生成模型的目的,就是找出給定觀測數據內部的統計規律,並且能夠基於所得到的概率分布模型,產生全新的,與觀測數據類似的數據。
舉個例子,概率生成模型可以用於自然圖像的生成。假設給定1000萬張圖片之後,生成模型可以自動學習到其內部分布,能夠解釋給定的訓練圖片,並同時生成新的圖片。
與龐大的真實數據相比,概率生成模型的參數個數要遠遠小於數據的數量。因此,在訓練過程中,生成模型會被強迫去發現數據背後更為簡單的統計規律,從而能夠生成這些數據。
現在比較流行的生成模型,其實可以分為三類:
生成對抗網絡(GAN)。這個是我們今天要重點介紹的內容。
變分自動編碼模型(VAE)。它依靠的是傳統的概率圖模型的框架,通過一些適當的聯合分布的概率逼近,簡化整個學習過程,使得所學習到的模型能夠很好地解釋所觀測到的數據。
自回歸模型(Auto-regressive)。在這種模型裡,我們簡單地認為,每個變量只依賴於它的分布,只依賴於它在某種意義上的近鄰。例如將自回歸模型用在圖像的生成上。那麼像素的取值只依賴於它在空間上的某種近鄰。現在比較流行的自回歸模型,包括最近剛剛提出的像素CNN或者像素RNN,它們可以用於圖像或者視頻的生成。
這三種生成模型都有各自的優缺點,然後也在不同的領域上得到廣泛的關注。而今天我們要介紹的GAN實際上是一種比較年輕的方法。兩年半之前, Ian Goodfellow的一篇論文首次將其引入,雖然時間很短,但我們看Google的搜索熱度和Google學術上論文引用的次數,它一直受到學術界廣泛的關注,而且熱度一直快速增長。
除了學術界,GAN還受到工業界的廣泛關注。有許多做人工智慧研究的公司正在投入大量的精力來發展和推廣GAN模型。其中包括 Ian Goodfellow 如今所在的 OpenAI 公司。這個公司一直在致力於研究推廣GAN,並將其應用在不同的任務上。同時 Facebook 和 Twitter 最近兩年也投入了大量的精力來研究,並將GAN應用在了圖像生成和視頻生成上。尤其值得一提的是,Apple最近發表了其關於人工智慧研究的首篇論文,恰恰是應用GAN來做數據的生成,幫助更好地訓練機器學習模型。
那麼,GAN為什麼會受到這樣廣泛的關注呢?
Goodfellow在他的論文中,給出了一些解釋。
GAN是更好的生成模型,在某種意義上避免了馬爾科夫鏈式的學習機制,這使得它能夠區別於傳統的概率生成模型。傳統概率生成模型一般都需要進行馬可夫鏈式的採樣和推斷,而GAN避免了這個計算複雜度特別高的過程,直接進行採樣和推斷,從而提高了GAN的應用效率,所以其實際應用場景也就更為廣泛。
其次GAN是一個非常靈活的設計框架,各種類型的損失函數都可以整合到GAN模型當中,這樣使得針對不同的任務,我們可以設計不同類型的損失函數,都會在GAN的框架下進行學習和優化。
再次,最重要的一點是,當概率密度不可計算的時候,傳統依賴於數據自然性解釋的一些生成模型就不可以在上面進行學習和應用。但是GAN在這種情況下依然可以使用,這是因為GAN引入了一個非常聰明的內部對抗的訓練機制,可以逼近一些不是很容易計算的目標函數。
Facebook人工智慧研究院的Yann LeCun也一直是GAN的積極倡導者。其中一個最重要的原因就是GAN為無監督學習提供了一個強有力的算法框架,而無監督學習被廣泛認為是通往人工智慧重要的一環。就像Yann LeCun所給出的一個比喻一樣:
「如果人工智慧是一塊蛋糕,那麼強化學習是蛋糕上的一粒櫻桃,監督學習是外面的一層糖霜,無監督/預測學習則是蛋糕胚。目前我們只知道如何製作糖霜和櫻桃,卻不知如何製作蛋糕胚。「
雖然還在快速的發展當中,但是GAN確實為無監督學習,提供了一個非常有潛力的解決方案。
一個最樸素的GAN模型,實際上是將一個隨機變量(可以是高斯分布,或0到1之間的均勻分布),通過參數化的概率生成模型(通常是用一個神經網絡模型來進行參數化),進行概率分布的逆變換採樣,從而得到一個生成的概率分布(圖中綠色的分布模型)。
而GAN的或者一般概率生成模型的訓練目的,就是要使得生成的概率分布和真實數據的分布儘量接近,從而能夠解釋真實的數據。但是在實際應用中,我們完全沒有辦法知道真實數據的分布。我們所能夠得到的只是從這個真實的數據分布中所採樣得到的一些真實數據。
通過優化目標,使得我們可以調節概率生成模型的參數\theta,從而使得生成的概率分布和真實數據分布儘量接近。
那麼怎麼去定義一個恰當的優化目標或一個損失?傳統的生成模型,一般都採用數據的似然性來作為優化的目標,但GAN創新性地使用了另外一種優化目標。首先,它引入了一個判別模型(常用的有支持向量機和多層神經網絡)。其次,它的優化過程就是在尋找生成模型和判別模型之間的一個納什均衡。
GAN所建立的一個學習框架,實際上就是生成模型和判別模型之間的一個模仿遊戲。生成模型的目的,就是要儘量去模仿、建模和學習真實數據的分布規律;而判別模型則是要判別自己所得到的一個輸入數據,究竟是來自於真實的數據分布還是來自於一個生成模型。通過這兩個內部模型之間不斷的競爭,從而提高兩個模型的生成能力和判別能力。
如果我們把生成模型比作是一個偽裝者的話,那麼判別模型就是一個警察的角色。偽裝者的目的,就是通過不斷的學習來提高自己的偽裝能力,從而使得自己提供的數據能夠更好地欺騙這個判別模型。而判別模型則是通過不斷的訓練來提高自己判別的能力,能夠更準確地判斷數據來源究竟是哪裡。
當一個判別模型的能力已經非常強的時候,如果生成模型所生成的數據,還是能夠使它產生混淆,無法正確判斷的話,那我們就認為這個生成模型實際上已經學到了真實數據的分布。
GAN模型包括了一個生成模型G和一個判別模型D,GAN的目標函數是關於D與G的一個零和遊戲。也是一個最小-最大化問題。
這裡判別模型D實際上是對數據的來源進行一個判別:究竟這個數據是來自真實的數據分布Pdata,還是來自於一個生成模型G所產生的一個數據分布Pg。
判別模型D的訓練目的就是要儘量最大化自己的判別準確率。當這個數據被判別為來自於真實數據時,標註 1,自於生成數據時,標註 0。
而與這個目的相反的是,生成模型G的訓練目標,就是要最小化判別模型D的判別準確率。在訓練過程中,GAN採用了一種非常直接的交替優化方式,它可以分為兩個階段,第一個階段是固定判別模型D,然後優化生成模型G,使得判別模型的準確率儘量降低。而另一個階段是固定生成模型G,來提高判別模型的準確率。
下面這張圖,可視化了GAN學習的過程,從左到右是隨著訓練過程的進展,依次得到的訓練結果。
圖(a)中黑色大點虛線P(x)是真實的數據分布,綠線G(z)是通過生成模型產生的數據分布(輸入是均勻分布變量z,輸出是綠色的曲線)。藍色的小點虛線D(x)代表判別函數。
在圖(a)中,我們可以看到,綠線G(z)分布和黑色P(x)真實分布,還有比較大的差異。這點也反映在藍色的判別函數上,判別函數能夠準確的對左面的真實數據輸入,輸出比較大的值。對右面虛假數據,產生比較小的值。但是隨著訓練次數的增加,圖(b)和圖(c)反映出,綠色的分布在逐漸靠近黑色的分布。到圖(d),產生的綠色分布和真實數據分布已經完全重合。這時,判別函數對所有的數據(無論真實的還是生成的數據),輸出都是一樣的值,已經不能正確進行分類。G成功學習到了數據分布,這樣就達到了GAN的訓練和學習目的。
但是GAN有一些待加強的理論保證,其中一個是說,GAN是存在全局最優解的。這個全局最優解可以通過一些簡單的分析得到。首先,如果固定G,那麼D的最優解就是一個貝葉斯分類器。將這個最優解形式帶入,可以得到關於G的優化函數。簡單的計算可以證明,當產生的數據分布與真實數據分布完全一致時,這個優化函數達到全局最小值。
另外一點,是關於GAN的收斂性。如果G和D的學習能力足夠強,兩個模型可以收斂。但在實際中,GAN的優化還存在諸如不穩定等一些問題。如何平衡兩個模型在訓練中是一個很重要的問題。
GAN的優點很多,前面我們提到了一部分。這裡要提到的一個重要優點,就是生成模型G的參數更新不是來自於數據樣本本身(不是對數據的似然性進行優化),而是來自於判別模型D的一個反傳梯度。
GAN可以和CNN、RNN結合在一起。任何一個可微分的函數,都可以用來參數化GAN的生成模型和判別模型。那麼,在實際中,我們就可以使用深度卷積網絡,來參數化生成模型。另外,GAN和RNN結合在一起,用來處理和描述一些連續的序列數據,可以學習到序列數據的分布,同時也可以產生序列數據應用,包括對音樂數據或者是一些自然語言數據的建模和生成。
但GAN的缺點也同樣明顯。
第一個是GAN的可解釋性非常差,因為我們最後所學到的一個數據分布Pg(G),沒有顯示的表達式。它只是一個黑盒子一樣的映射函數:輸入是一個隨機變量,輸出是我們想要的一個數據分布。
其次,在實際應用中GAN比較難訓練。因為GAN要交替優化兩個部件,而這兩個部件之間的優化需要很好的同步。例如,在實際中我們常常需要 D 更新 K次, G 才能更新 1 次,如果沒有很好地平衡這兩個部件的優化,那麼G最後就極大可能會坍縮到一個鞍點。
作為一個生成模型,GAN最直接的應用,就是用於真實數據分布的建模和生成,包括可以生成一些圖像和視頻,以及生成一些自然語句和音樂等。其次,因為內部對抗訓練的機制,GAN可以解決一些傳統的機器學習中所面臨的數據不足的問題,因此可以應用在半監督學習、無監督學習、多視角、多任務學習的任務中。還有,就是最近有一些工作已經將進行成功應用在強化學習中,來提高強化學習的學習效率。因此GAN有著非常廣泛的應用。
Twitter 公司最近發表了一篇圖像超解析度的論文,就是應用了GAN模型。圖像超解析度的目的,是將一個低解析度的模糊圖像,進行某種變換,得到一個高解析度的帶有豐富細節的清晰圖像。
超解析度問題,實際上是一個病態問題,因為在圖像解析度降低的過程中,丟失的高頻細節很難恢復。但是GAN在某種程度上可以學習到高解析度圖像的分布,從而能夠生成質量比較好的高解析度圖像。
生成模型要將模糊的低解析度圖像作為輸入,並輸出一個高解析度的清晰圖像。而判別模型,就要判斷所輸入的圖像究竟是「真實高解析度圖像」還是由低解析度圖像「轉化來的高解析度圖像」。而這就大大簡化了圖像超解析度模型的學習過程。因為傳統上做一個圖像超解析度,都要去對一些高頻細節進行建模,而這裡生成模型訓練目的就簡化為迷惑判別模型。
為了使得整個GAN能夠取得比較好的結果,我們常常要求生成模型和判別模型都要有很強的學習能力,所以在實際應用中,我們常常用一個多層的神經網絡來參數化生成模型或者判別模型。
在 Twitter 這篇論文中,他們用一個16個殘差塊的網絡來參數化生成模型。而判別模型使用的是一個VGG網絡。這個實驗結果也說明了使用GAN模型能夠得到更好的結果。與以往基於深度學習模型做圖像超解析度的結果相比的話(比如SRResNet等),我們可以看到GAN的結果圖能夠提供更豐富的細節。這也就是GAN做圖像生成時的一個顯著優點,即能夠提供更銳利的數據細節。
Apple最近剛剛發表了其第一篇AI論文,論文要解決的問題,就是如何使得模擬的數據更加逼真,與真實圖像的差異性儘量小。
這篇論文中使用了類似GAN的框架,將模擬器(Simulator)產生的虛擬數據作為輸入,通過一個叫做改進器(Refiner)的模型(對應生成模型)來產生改進後的虛擬數據。再同樣的,使用一個判別器,來判斷所產生的圖像是真實的,還是虛擬的 。
Apple對GAN主要做了兩個方面的改進。
第一個就是,為了最大程度保留虛擬圖像的類別,引入了額外的一個自正則項(Self-Regularization Term),最小化生成圖像與合成圖像的絕對值誤差,從而保留圖像的標註信息,如眼睛視線的方向,使得生成圖像可以用於訓練機器學習模型。
另外一個改進,是引入了一個局部對抗損失函數(Local adversarial loss),而不是像之前的判別器,使用的是一個全局的損失函數。這裡不同於樸素GAN將整張圖作為一個輸入進行真與假的判別,而是將輸入的圖像分成若干個圖像塊,對每個圖像塊進行判別。這樣的話可以避免過於強調某些特定的圖像特徵而導致的尾插。同時實驗結果也表明,使用這種局部的對抗損失,確實可以提供一些更銳利的細節,使得生成結果具有更豐富的信息。
那麼除了剛才介紹的兩個例子,GAN還有其他一些非常有意思的應用。
首先,圖像到圖像的翻譯。比如說將語義標註圖、灰度圖或邊緣圖作為GAN的輸入,那麼我們希望它輸出能夠和輸入圖一致的真實圖像,例如這裡的街景圖和彩色圖。
其次,文本到圖像的翻譯。GAN的輸入是一個描述圖像內容的一句話,比如「一隻有著粉色的胸和冠的小鳥」,那麼所生成的圖像內容要和這句話所描述的內容相匹配。
GAN可以用在特定的人臉圖像生成上,例如戴著墨鏡的人臉。還可用在圖像語音分割上,通過引入對抗訓練,得到更銳利的風格結果。GAN可以用於視頻生成,通過過去的一些幀來預測未來的一些幀,從而捕捉到一些運動的信息。
最近,我們自己的實驗室團隊在GAN上也有一些應用和發展,其中一個是將GAN應用在「人臉去遮擋」。我們引入了一種保持人的身份信息的GAN模型,實驗結果證明,這個模型不僅能夠檢測和去掉在人臉上的遮擋,同時還能保持人的身份信息,從而提高人臉的識別準確率。
我們實驗室的另一個GAN應用,是在小物體的檢測上,例如在自動駕駛領域對交通標誌進行檢測。
我們發現,小的交通標誌和大的交通標誌實際上在特徵表示上有著顯著的差異。因此,如果我們直接將所學習到的特徵表示作為輸入,進行檢測的話,那麼小物體上的檢測結果往往都不是特別好。所以,我們提出了一個「感知GAN模型」(Perceptual GAN),應用在小物體特徵表示的超解析度上,而不是對原始圖像進行超解析度,使得小物體的特徵表示和大物體的特徵角表示儘量接近,這樣我們就能夠成功檢測到小物體。我們將這個感知GAN模型應用在了交通標誌檢測上,取得了比較好的實驗結果。
針對GAN可解釋性差進行改進。包括最近剛提出的InfoGANs。InfoGANs通過最大化隱變量與觀測數據的互信息,來改進GAN的解釋性。
進一步提高GAN的學習能力。包括引入「多主體的GAN」。在多主體的GAN中,有多個生成器和判別器,它們之間可以進行交流,進行知識的共享,從而提高整體的學習能力。
針對GAN優化不穩定性進行改進。例如使用 F 散度來作為一個優化目標和手段,對GAN進行訓練。
應用在一些更廣泛的領域。包括遷移學習以及領域自適應學習。還有一個最近比較有意思的應用,是建立了GAN和強化學習之間的聯繫,將GAN用在了逆強化學習和模擬學習上,從而能夠大幅度提高強化學習的學習效率。另外還可以用在數據的壓縮上以及應用在除了圖像以外其他的數據模式上,比如用於自然語句的生成,還有音樂的生成。
GAN的優勢。作為一個生成模型,GAN模型避免了一些傳統生成模型在實際應用中的一些困難,巧妙地通過對抗學習來近似一些不可解的損失函數。
應用方面。GAN現在廣泛應用圖像和視頻等數據的生成,還可以用在自然語言和音樂生成上。
存在的問題。一個是GAN的優化過程中存在不穩定性,很容易坍縮到一個鞍點上;其次是GAN的可解釋性比較差;再次,需要提高訓練過程中的穩定性和GAN模型的延展性,尤其在處理大規模數據的時候。
應用前景。在未來,我們希望看到GAN應用在無監督學習或自監督學習上,提供有效的解決方案。同時GAN還可以建立與強化學習之間的聯繫,應用在強化學習上。
最後,回到Yann LeCun提出的那個比喻,我們對它進行一點修改。就是如果人工智慧是一個蛋糕的話,那麼「蛋糕胚」不僅是指無監督的數據表示學習,還應該包括「無監督推斷學習」,而GAN確實很好地連接了這兩個重要的人工智慧主體。
另外,除了強化學習這顆「櫻桃」之外,實際上還有很多其他的「櫻桃」。比如說魯棒學習、自監督學習和在線學習等。所以實際上還有許多問題需要大家一起來解決。
最後我要感謝一下實驗室的博士後和訪問學生對我們GAN工作的貢獻,他們在新年的時候還要熬夜幫我準備這次PPT的一些素材。另外,謝謝大家來聽這次分享課。
PS:可關注雷鋒網公眾號,每天定時獲得最新科技圈資訊。
相關文章:
Jeff Dean親自站臺背書,揭秘谷歌大腦培訓生養成計劃
深度學習零基礎進階第四彈|乾貨分享
雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。