0
本文作者: 三川 | 2016-12-15 18:21 |
編者按:昨天,雷鋒網(wǎng)根據(jù) Ian Goodfellow 演講視頻的前20分鐘整理出《“GANs之父”Goodfellow 38分鐘視頻親授:如何完善生成對(duì)抗網(wǎng)絡(luò)?(上)》,其中Goodfellow主要講述了什么是 GAN 和 DCGANs、模型崩潰、小批量特征、文本轉(zhuǎn)圖像等問(wèn)題。本文是后18分鐘視頻的內(nèi)容,主要是 Goodfellow 回答網(wǎng)友提問(wèn),總共有11個(gè)問(wèn)題。本文由雷鋒網(wǎng)三川、亞萌聯(lián)合編譯。
簡(jiǎn)單來(lái)說(shuō),CNN是神經(jīng)網(wǎng)絡(luò)的一種架構(gòu),它們未必是為了學(xué)習(xí)如何生成一組圖像而設(shè)計(jì)。它們可以被用來(lái)創(chuàng)造很多的東西,包括 GANs 和 DBN。
這個(gè)問(wèn)題的另外一個(gè)方面是:DBN和 GANs 的效果或者學(xué)習(xí)區(qū)別是什么。DBN 基于統(tǒng)計(jì)物理學(xué)的模型,你寫(xiě)下一個(gè)能量函數(shù)(energy function),來(lái)描述不同圖片的相似度。如果一個(gè)圖像的能量較低,那么更可能發(fā)生。這類(lèi)似于山上的巖石。滾到山腳的石頭比山頂?shù)氖^有更低的能量,這是由于重力。所以在山腳發(fā)現(xiàn)大堆石頭的可能性更大。DBN 的難點(diǎn)在于,很多必需的、模擬物理定律的計(jì)算變得非常復(fù)雜,所以它擴(kuò)展到大型彩色圖像的效果不好。對(duì)于類(lèi)似 EM Nest 的應(yīng)用,它效果很好。但在 Imagenet 上,DBN 還不能產(chǎn)生有競(jìng)爭(zhēng)力的結(jié)果。
基本上,省略掉代碼是有可能的。但在大多數(shù)應(yīng)用中,人們既輸入代碼也輸入語(yǔ)句限制條件,這樣才能保證最終輸出結(jié)果的多樣性。這樣系統(tǒng)才能學(xué)習(xí)到整個(gè)有條件的概率分布,從一次輸入信息中,得到多樣化的輸出樣本。
主要的困難是模型崩潰,以及尋找模型均衡點(diǎn)(equilibrium)的相關(guān)問(wèn)題。
主要的解決方式是,開(kāi)發(fā)能找到均衡狀態(tài)的新算法,而不是依靠讓誤差最小化的成本函數(shù)(cost function)。
其實(shí)并不是,而是隨機(jī)的,神經(jīng)網(wǎng)絡(luò)訓(xùn)練利用梯度算法來(lái)引導(dǎo)更新。
(編者注:這里 Goodfellow 又回頭接著講PPT上的內(nèi)容)GANs 還有一個(gè)很酷的應(yīng)用是,對(duì)畫(huà)家進(jìn)行自動(dòng)輔助。你也許不擅長(zhǎng)繪畫(huà),但有了這個(gè) GANs 輔助繪圖軟件,你只需畫(huà)這么一個(gè)三角,GANs 會(huì)自動(dòng)搜索有相似特點(diǎn)的圖像,然后在你畫(huà)的三角區(qū)域,填充山丘的紋理;并在你畫(huà)的綠色波浪那里,填充青草的紋理。
基于 GANs 的繪圖輔助功能
我昨天剛聽(tīng)說(shuō)一個(gè)很相似的主意,也使用了“內(nèi)省對(duì)抗網(wǎng)絡(luò)”( Introspective Adversarial Network)。它是一個(gè)輔助圖像編輯的功能。當(dāng)你繪圖時(shí),生成模型會(huì)把你畫(huà)出的圖形轉(zhuǎn)化為照片般真實(shí)的圖像。所以,你編輯的圖片不會(huì)看起來(lái)很假,還能不斷調(diào)整你希望看到的效果。這樣,最終編輯出來(lái)的圖像看起來(lái)很真實(shí),一點(diǎn)也不像用鼠標(biāo)涂鴉過(guò)。
這其實(shí)很難知道。因?yàn)橛?xùn)練算法不夠好。目前訓(xùn)練算法的一個(gè)問(wèn)題是,它們被設(shè)計(jì)用來(lái)最小化每一層網(wǎng)絡(luò)的成本函數(shù),而不是找到均衡點(diǎn)。拿兩個(gè)人玩“剪刀包袱錘”做比方。假設(shè)你出錘,對(duì)方出包袱。你輸了這局,你覺(jué)得既然對(duì)方出包袱,下一局你就出剪刀。因?yàn)槟愠黾舻叮瑢?duì)方?jīng)Q定再下一局出錘子……這樣周而復(fù)始,雙方都達(dá)不到納什均衡。
這個(gè)游戲的均衡點(diǎn)是,每個(gè)人以三分之一的比率分別出剪刀、包袱、錘。但如果你的學(xué)習(xí)算法的學(xué)習(xí)速率(Learning Rate)不夠小,它不會(huì)找到均衡點(diǎn)。這個(gè)例子十分簡(jiǎn)單,只要減小學(xué)習(xí)速率就能找到均衡點(diǎn)。對(duì)于GANs,這更復(fù)雜。減小學(xué)習(xí)速率,并不能保證能找到均衡點(diǎn)。我們極有可能需要一些專門(mén)的算法,或者改變游戲方式,讓使用低學(xué)習(xí)速率的梯度下降法也能找到均衡點(diǎn)。這是一個(gè)相對(duì)困難的研究問(wèn)題。包括我在內(nèi),很多人仍在研究。
回到如何放置肢體和紋理及形成3D效果的問(wèn)題。我們也許需要開(kāi)發(fā)一個(gè)更復(fù)雜的架構(gòu),比方說(shuō),生成器的網(wǎng)絡(luò)深度不夠。如果我們有一個(gè)極深的生成器,它也許能學(xué)習(xí)怎么讓圖像的不同部分更和諧。或者,我們也可以對(duì)圖形加入特殊操作,類(lèi)似于 Open GL 的渲染管道。如果你見(jiàn)過(guò)空間變換網(wǎng)絡(luò)處理分類(lèi)任務(wù),你可以想象用它把有紋理的多邊形放置到圖像中。
我認(rèn)為對(duì)于 Photoshop 這樣的應(yīng)用,自動(dòng)化繪圖會(huì)是一個(gè)很好的功能。把上文中介紹的自動(dòng)繪圖算法推向市場(chǎng)會(huì)很有用處。另外一個(gè)領(lǐng)域是語(yǔ)音合成,神經(jīng)網(wǎng)絡(luò)對(duì)它非常擅長(zhǎng)。Deepmind 最近的一篇論文提到一個(gè)名為 “Wavenet”的模型,可以創(chuàng)造出極為逼真的人類(lèi)語(yǔ)音。Wavenet 的問(wèn)題是,它生成樣本的速度很慢。這類(lèi)生成模型每一步只能完成輸出的一個(gè)部分。Wavenet 以約 12 千赫的速度生成聲音樣本。所以你需要連續(xù)運(yùn)行 12000 個(gè)神經(jīng)網(wǎng)絡(luò),每一個(gè)神經(jīng)網(wǎng)絡(luò)的輸出被用作下一個(gè)神經(jīng)網(wǎng)絡(luò)的輸入。每一秒合成語(yǔ)音需要兩分鐘的計(jì)算時(shí)間,因此神經(jīng)網(wǎng)絡(luò)無(wú)法進(jìn)行即時(shí)會(huì)話。軟、硬件效率的提升最終能讓它更快。但現(xiàn)在看來(lái),我們離 Wavenet 進(jìn)行即時(shí)會(huì)話還有好幾年的時(shí)間。理論上,生成對(duì)抗網(wǎng)絡(luò)能提供更快的文字到語(yǔ)音的合成。
生成對(duì)抗網(wǎng)絡(luò)會(huì)生成,和輸入的參數(shù)十分相似的輸出。在時(shí)間軸上預(yù)測(cè)下一步(在 Wavenet 的例子上是音頻序列),你可以直接把 Wavenet 架構(gòu)用作生成網(wǎng)絡(luò),反向傳播算法(backpropagation)會(huì)正常運(yùn)作。
其實(shí),由于高效率的卷積,擴(kuò)展輸出尺寸通常不是那么難。舉例來(lái)說(shuō),我演講中展示的最大圖片,它的尺寸是 128×128。最近的論文中,F(xiàn)acebook 已經(jīng)做到輸出 256×256 的圖片。真正難的是,輸出大量?jī)?nèi)含恰當(dāng)細(xì)節(jié)的多樣化圖像。
嗯,很有可能。原則上大多數(shù)生成模型都可以。對(duì)于 GANs,你需要找到能從圖像到描述圖像的代碼的方法。我描述的 GANs 版本只有單一方向(代碼到圖像)映射,但是蒙特利爾大學(xué)的對(duì)抗學(xué)習(xí)推理(Adversarially Learned Inference),還有加州大學(xué)伯克利分校的雙向GANs(Bidirectional GANs),有從圖像到代碼的編碼層(Encode Layer)。你可以用編碼層生成簡(jiǎn)單代碼,對(duì)于經(jīng)過(guò)解碼的圖像的區(qū)別,再使用硬編碼的壓縮算法將之壓縮。如果你運(yùn)氣好,這些區(qū)別足夠小,可以被壓縮,最終結(jié)果會(huì)比原始圖像使用更少的比特。
我最感興趣、花費(fèi)很多時(shí)間來(lái)研究的是提高訓(xùn)練穩(wěn)定性,但這特別難。我還花一些時(shí)間在開(kāi)發(fā)新架構(gòu)上。但相比穩(wěn)定性,它關(guān)系不大。
如果你有一個(gè)生成網(wǎng)絡(luò),能把它自己的輸出作為輸入,那就能做到。如果你有一個(gè)層級(jí),從代碼映射到視頻第一幀;然后你創(chuàng)建另一個(gè)層級(jí),把上一幀視頻映射到代碼,再到下一幀;你可以把第二層級(jí)不斷重復(fù)利用,它應(yīng)該能做出不錯(cuò)的視頻序列。
反饋回路:輸入→輸出→輸入(照此循環(huán))
這方面的研究很少,發(fā)表的論文也不多。大多數(shù)生成對(duì)抗網(wǎng)絡(luò)的研究都是關(guān)于圖像。Facebook AI 研究部門(mén)有一篇關(guān)于視頻生成的論文,該研究用到了對(duì)抗網(wǎng)絡(luò)損失。還有一篇講3D合成視頻序列的論文。這些論文很具體地解釋了研究人員是怎么做的以及最終成效。我認(rèn)為兩個(gè)研究都加入了一些額外的東西,包括下一幀預(yù)測(cè)的方差。為了略微穩(wěn)定訓(xùn)練。Facebook 的研究還加入了一個(gè)基于比較圖像的邊緣的損失,來(lái)保證生成的視頻不模糊。
視頻預(yù)測(cè)一個(gè)很難的地方是:大多數(shù)模型預(yù)測(cè)認(rèn)為,你應(yīng)該把同一幀永遠(yuǎn)復(fù)制下去;或者影像不斷模糊下去,直到全部消失。這是由于每一個(gè)像素的不確定性太多。所以,讓他們不斷預(yù)測(cè)每一幀的清晰畫(huà)面十分困難。
【招聘】雷鋒網(wǎng)堅(jiān)持在人工智能、無(wú)人駕駛、VR/AR、Fintech、未來(lái)醫(yī)療等領(lǐng)域第一時(shí)間提供海外科技動(dòng)態(tài)與資訊。我們需要若干關(guān)注國(guó)際新聞、具有一定的科技新聞選題能力,翻譯及寫(xiě)作能力優(yōu)良的外翻編輯加入。
簡(jiǎn)歷投遞至guoyixin@leiphone.com,工作地 深圳;或投遞至wudexin@leiphone.com,工作地 北京。
相關(guān)文章:
“GANs之父”Goodfellow 38分鐘視頻親授:如何完善生成對(duì)抗網(wǎng)絡(luò)?(上)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。