1
本文作者: 亞萌 | 2017-04-30 23:49 |
雷鋒網(wǎng)按:2017 年 4 月 21-23 日,VALSE(視覺與學習青年學者研討會)在廈門舉行,國內(nèi) CV 領(lǐng)域頂級專家學者齊聚一堂,參會的青年學者達 2000 多人。在 VALSE 的「年度進展評述」環(huán)節(jié),共有 12 名學者依次上臺,對 CV 研究和應用分支領(lǐng)域近年發(fā)展做了詳細系統(tǒng)的梳理,堪稱「12 顆重磅炸彈」。針對近年來 CV 領(lǐng)域火熱的方向之一:GAN,哈爾濱工業(yè)大學計算機學院教授左旺孟從多方面做了詳盡的評述報告。
左旺孟,哈爾濱工業(yè)大學計算機學院教授、博士生導師。主要從事圖像增強與復原、距離度量學習、目標跟蹤、圖像與視頻分類等方面的研究。在 CVPR/ICCV/ECCV 等頂級會議和 T-PAMI、IJCV 及 IEEE Trans. 等期刊上發(fā)表論文 50 余篇。
以下為報告全文,感謝左旺孟教授審校指正,雷鋒網(wǎng)編輯。
生成對抗網(wǎng)絡是過去一年來得到很多關(guān)注的一個方向,里面的內(nèi)容比較龐雜。那么我選擇了以下幾個角度,來概括過去幾年來 GAN 的發(fā)展脈絡。
圖像生成
關(guān)于 GAN 的三個問題:度量復雜分布之間差異性、如何設計生成器、建立輸入和輸出之間的聯(lián)系。
這里嘗試給「圖像生成」一個大致定義:圖像生成的目的是,學習一個生成模型,能夠?qū)碜杂谳斎敕植嫉囊环鶊D像或變量轉(zhuǎn)變成為一幅輸出圖像。這里,我們不僅要求「輸入」?jié)M足一個輸入分布,同樣,我們還要求「輸出」?jié)M足一個預期的期望分布。通過定義不同的輸入分布和期望分布,就對應著不同的圖像生成問題。
一開始,最標準的 GAN 的假設是,輸入要服從隨機噪聲分布,期望分布是所有的真實圖像。這個問題一開始定義得太大,所以雖然 GAN 在2014年就出現(xiàn)了,在2014年到2016年這段時間其實發(fā)展得并不快。
后來大家就去思考,輸入的分布也可以不是隨機分布,于是大家開始根據(jù)各種實際問題的需要來定義自己需要的輸入分布和期望分布。比如,輸入分布可以是來自于所有斑馬的一幅圖像,輸出分布是所有正常馬的圖像,這樣系統(tǒng)要學習的其實是這兩種圖像之間的映射(mapping)。
同樣,如果我們輸入的是一個低分辨率圖像,輸出的是一個高分辨率圖像,那么希望系統(tǒng)學習到的是低分辨率和高分辨率之間的映射。去區(qū)塊(deblocking),輸入的是 JPEG 壓縮圖像,輸出的是真實高清圖像,我們也是希望學到兩者之間的映射。人臉領(lǐng)域也是一樣,比如我們做的超分辨和性別轉(zhuǎn)換。輸入是男性圖像,輸出是女性圖像,學習二者之間的映射。
另外一個有意思的是圖像文本描述的自動生成(Image captioning),輸入的是圖像,輸出的是句子。大家以前就認為,這是一個一對一的映射,其實不是。它實際上是一對多的映射。不同的人來描述一幅圖,就會產(chǎn)生不同的語句。所以如果用 GAN 來做這件事情,應該是很有趣的,今年有幾篇投 ICCV 的文章做的就是這方面的工作。
第一,度量復雜分布之間差異性。我們希望輸出分布達到期望分布,那么我們需要找兩個分布之間差異的度量方式,這是我認為在 GAN 里面需要研究的第一個關(guān)鍵性問題。
第二,如何設計生成器。如果我們想要學習映射,就需要一個生成器,那么就要對它的訓練、可學習性進行設計。這是 GAN 里面另一個可以研究的角度。
第三,連接輸入和輸出。如下圖右邊性別轉(zhuǎn)換的例子,輸入是一張男性圖像,輸出是一張女性圖像。顯然我們需要的并不是從輸入到任意一幅女性人臉圖像的映射,二是要求輸出的女性圖像要跟輸入的男性圖像盡可能像,這個轉(zhuǎn)換才是有意義的。所以,這就是 GAN 里面另外一個重要的研究方向,就是如何將輸入和輸出連接起來。
下面針對這三個問題,進行詳細的講解。
GAN 使用了一個分類器來度量輸出分布和期望分布的差異性。實際上,Torralba和Efros在 2011 年的時候也考慮過用一個分類器來分析兩個分布之間差異,這也是當時做 domain adaption 的學者喜歡引用的一篇論文。他們設計了一個實驗,給你三張圖像,讓你猜是來自 12 個數(shù)據(jù)集(包括 ImageNet、COCO和PASCAL VOC等)中的那一個。如果是隨機猜的話,顯然猜中的概率是 1/12。但是人猜中的準確度往往能達到 30% 左右,說明不同數(shù)據(jù)集刻畫的分布是不一致的。這里人其實可視為一個分類器,通過判斷樣本來自于那個數(shù)據(jù)集來分析兩個分布之間差異。
雖然 NIPS 2014 年的這篇 GAN 論文沒有引用 Torralba 的工作,其實它也是采用了一個判別器來度量兩個分布的差異化程度?;镜倪^程是,固定生成器,得到一個最好的判別器,再固定判別器,學到一個最好的生成器。但是其中有一個最令人擔心的問題,那就是如果我們學到的是一個很復雜的分布,就會出現(xiàn)模式崩潰(Mode Collapse)的問題,即無法學習復雜分布的全局,只能學習其中的一部分。
對此,最早的解決方案,是調(diào)整生成器(G)和判別器(D)的優(yōu)化次序,但這也不是一個終極方案。從去年開始大家開始關(guān)注要去找到一個終極解決方案。
那之前,大家怎么去解決這個問題呢?使用的是原來機器學習里常用的方法:最大化均值差異(Maximum Mean Discrepancy,MMD)。
如果兩個分布相同的話,那么兩個分布的數(shù)學期望顯然也應該相同;然而,如果兩個分布的數(shù)學期望相同,并不能保證兩個分布相同。因而,我們需要更好地建立「分布相同」和「期望相同」之間的連接關(guān)系。幸運的是,我們可以對來自于兩個分布的變量施加同樣的非線性變換。如果對于所有的非線性變換下兩個分布的數(shù)學期望均相同(即:兩個分布的期望的最大差別為0),在統(tǒng)計學意義上就可以保證兩個分布是相同的。不幸的是,這種方法需要我們遍歷所有的非線性變換,從實踐的角度似乎任由一定難度。一開始,在機器學習領(lǐng)域,大家傾向于用線性 kernel或Gaussian RBF kernel 來進行非線性變換,后來開始采用 multi-kernel。從去年開始,大家開始用 CNN 來近似所有的非線性變換,在 MMD 框架下進行圖像生成。首先,固定生成器并最大化 MMD,然后固定判別器里 MMD 的 f,然后通過最小化 MMD 來更新生成器。
最常用的一種方法,就是拿 MMD 來代替判別器,去學習一個 CNN,這是 ICML 2015 的一篇文章中嘗試的方法,我們自己也在這個基礎上做了一些工作。
但實際上,如果直接拿 MMD 去替換生成器,雖然有一定效果,但不是特別成功。所以,從 NIPS 2016 開始,就出現(xiàn)了一個 Improved GAN,這個工作雖然沒有引用 MMD 的論文,但實際上在更新判別器的同時也最小化了 MMD。等到了 Wasserstein GAN 的時候,它就明確解釋了與 MMD 之間的聯(lián)系,雖然論文里寫的是一個「減」的關(guān)系,但我們看它的代碼,它也是要加上一個范數(shù)的,因為只是讓兩個分布的期望最大化或最小化都不能保證分布的差異化程度最小。
然后,最近 ICLR 2017 的一篇論文也明確指出要用 MMD 來作為 GAN 網(wǎng)絡的停止條件和學習效果的評價手段。
這個部分相對來說就比較容易一些。早期的時候,GAN 的一個最大的進步就是 DCGAN,用于圖像生成時,比較合適的選擇就是用全卷積網(wǎng)絡加上 batch normalizaiton。
對于復雜的圖像生成,可以使用分階段的方式。比如,第一步可以生成小圖,然后由小圖生成大圖。沿著這個方向,香港中文大學王曉剛老師和康奈爾大學 John Hopcroft 都做了一些工作。
對于圖像增強(image enhancement)相關(guān)的一些任務,包括超分辨率和人臉屬性轉(zhuǎn)換(Face Attribute Transfer),目前在有監(jiān)督時表現(xiàn)最好網(wǎng)絡是 ResNet ,所以我們在這些任務中實用GAN時一般也會采用 ResNet 結(jié)構(gòu)。
同樣,對于圖像轉(zhuǎn)換(image translation),基本上用的是 U-Net 結(jié)構(gòu)。我們在做基于引導圖像的人臉填充(guided face completion)時也采用了 U-Net 結(jié)構(gòu)。
對于圖像文本描述的自動生成,顯然應該采用 CNN+RNN 這樣的網(wǎng)絡結(jié)構(gòu)??偠灾?,一個比較好的建議就是根據(jù)任務的特點和前任的經(jīng)驗來設計生成器網(wǎng)絡。
如何通過連接輸入和輸出的方式來改善 GAN 的可學習性,這個問題是從 NIPS 2016 開始得到了較多的關(guān)注,同時這也是我自己非常感興趣的一個方向。比較早的一個工作就是 InfoGAN,其特點就是輸入包括兩個部分:C(隱變量)和 Z(噪聲)。InfoGAN 生成圖像之后,不僅要求生成圖像和真實圖像難以區(qū)分,還要求能夠從生成圖像中預測出 C,這樣就為輸入和輸出建立起了一個聯(lián)系。
另外針對一些任務,比如超分辨,可以用 Perceptual loss 的方式來建立輸入和輸出的聯(lián)系。
我們在做人臉屬性轉(zhuǎn)換時發(fā)現(xiàn),現(xiàn)有的 Perceptual loss 往往是定義在一個現(xiàn)有的網(wǎng)絡基礎上的,我們就想能不能把 Perceptual loss 網(wǎng)絡和判別器結(jié)合起來,所以就提出了一個 Adaptive perceptual loss。結(jié)果表明Adaptive perceptual loss能夠具有更好的自適應性,能夠更好地建立輸入和輸出的聯(lián)系和顯著改善生成圖片的視覺效果。
當輸入和輸出都是已知時(比如圖像超分辨和圖像轉(zhuǎn)換),要用什么方式來連接輸入和輸出呢?以前是用 Perceptual loss 來連,現(xiàn)在更好的方式是用 Conditional GAN。假設有一個 Positive Pair(輸入和groundtruth圖像)和 Negative Pair(輸入和生成圖像),那么判別器就不是在兩幅圖像之間做判別,而是在兩個「Pair」之間做判別。這樣的話,輸入就很自然地引入到了判別器中。
在此基礎上,我們還考慮了當有一些額外的 Guidance 時,如何來更好地建立輸入和輸出的聯(lián)系。
上面提到,在有監(jiān)督的情況下 Conditional GAN 是一個比較好的選擇。但如果在 unpair 的情況下做圖像轉(zhuǎn)換,要如何建立輸入和輸出的聯(lián)系?譚平老師他們組和Efros組今年就做了這方面的工作,其實去年投 CVPR2017 的一篇論文也做了類似的工作。我們知道,由于是unpair的,原則上訓練階段輸入和輸出不能直接建立聯(lián)系。這時他們采用的是一種 Cycle-Consistent 的方式。從 X 可以預測和生成 Y,再從 Y 重新生成 X',那么由 Y 生成的 X' 就能跟輸入的 X 建立聯(lián)系。這樣的話,我們實際上相當于隱式地建立了從 X 到 Y 的聯(lián)系。
如果大家對于 GAN 的理論和模型比較感興趣,可以從輸出分布和期望分布之間的差異化程度度量入手。如果你比較在乎GAN的應用,可以從后兩個方面著手,通過設計生成器和建立輸入和輸出之間的聯(lián)系,來解決自己感興趣的問題。我的報告基本上就是這些,謝謝大家。
更多雷鋒網(wǎng)文章:
CMU提出新型內(nèi)在驅(qū)動學習方法,在復雜計算下效率優(yōu)于強化學習
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。