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