天天看點

“GAN之父”Goodfellow與網友互動:關于GAN的11個問題(附視訊)

編者按:昨天,雷鋒網(公衆号:雷鋒網)根據 ian goodfellow 演講視訊的前20分鐘整理出《“gans之父”goodfellow 38分鐘視訊親授:如何完善生成對抗網絡?(上)》,其中goodfellow主要講述了什麼是 gan 和 dcgans、模型崩潰、小批量特征、文本轉圖像等問題。本文是後18分鐘視訊的内容,主要是 goodfellow 回答網友提問,總共有11個問題。本文由雷鋒網三川、亞萌聯合編譯。

簡單來說,cnn是神經網絡的一種架構,它們未必是為了學習如何生成一組圖像而設計。它們可以被用來創造很多的東西,包括 gans 和 dbn。

這個問題的另外一個方面是:dbn和 gans 的效果或者學習差別是什麼。dbn 基于統計實體學的模型,你寫下一個能量函數(energy function),來描述不同圖檔的相似度。如果一個圖像的能量較低,那麼更可能發生。這類似于山上的岩石。滾到山腳的石頭比山頂的石頭有更低的能量,這是由于重力。是以在山腳發現大堆石頭的可能性更大。dbn 的難點在于,很多必需的、模拟實體定律的計算變得非常複雜,是以它擴充到大型彩色圖像的效果不好。對于類似 em nest 的應用,它效果很好。但在 imagenet 上,dbn 還不能産生有競争力的結果。

基本上,省略掉代碼是有可能的。但在大多數應用中,人們既輸入代碼也輸入語句限制條件,這樣才能保證最終輸出結果的多樣性。這樣系統才能學習到整個有條件的機率分布,從一次輸入資訊中,得到多樣化的輸出樣本。

主要的困難是模型崩潰,以及尋找模型均衡點(equilibrium)的相關問題。

主要的解決方式是,開發能找到均衡狀态的新算法,而不是依靠讓誤差最小化的成本函數(cost function)。

其實并不是,而是随機的,神經網絡訓練利用梯度算法來引導更新。

(編者注:這裡 goodfellow 又回頭接着講ppt上的内容)gans 還有一個很酷的應用是,對畫家進行自動輔助。你也許不擅長繪畫,但有了這個 gans 輔助繪圖軟體,你隻需畫這麼一個三角,gans 會自動搜尋有相似特點的圖像,然後在你畫的三角區域,填充山丘的紋理;并在你畫的綠色波浪那裡,填充青草的紋理。

“GAN之父”Goodfellow與網友互動:關于GAN的11個問題(附視訊)

基于 gans 的繪圖輔助功能

我昨天剛聽說一個很相似的主意,也使用了“内省對抗網絡”( introspective adversarial network)。它是一個輔助圖像編輯的功能。當你繪圖時,生成模型會把你畫出的圖形轉化為照片般真實的圖像。是以,你編輯的圖檔不會看起來很假,還能不斷調整你希望看到的效果。這樣,最終編輯出來的圖像看起來很真實,一點也不像用滑鼠塗鴉過。

這其實很難知道。因為訓練算法不夠好。目前訓練算法的一個問題是,它們被設計用來最小化每一層網絡的成本函數,而不是找到均衡點。拿兩個人玩“剪刀包袱錘”做比方。假設你出錘,對方出包袱。你輸了這局,你覺得既然對方出包袱,下一局你就出剪刀。因為你出剪刀,對方決定再下一局出錘子……這樣周而複始,雙方都達不到納什均衡。

這個遊戲的均衡點是,每個人以三分之一的比率分别出剪刀、包袱、錘。但如果你的學習算法的學習速率(learning rate)不夠小,它不會找到均衡點。這個例子十分簡單,隻要減國小習速率就能找到均衡點。對于gans,這更複雜。減國小習速率,并不能保證能找到均衡點。我們極有可能需要一些專門的算法,或者改變遊戲方式,讓使用低學習速率的梯度下降法也能找到均衡點。這是一個相對困難的研究問題。包括我在内,很多人仍在研究。

回到如何放置肢體和紋理及形成3d效果的問題。我們也許需要開發一個更複雜的架構,比方說,生成器的網絡深度不夠。如果我們有一個極深的生成器,它也許能學習怎麼讓圖像的不同部分更和諧。或者,我們也可以對圖形加入特殊操作,類似于 open gl 的渲染管道。如果你見過空間變換網絡處理分類任務,你可以想象用它把有紋理的多邊形放置到圖像中。

我認為對于 photoshop 這樣的應用,自動化繪圖會是一個很好的功能。把上文中介紹的自動繪圖算法推向市場會很有用處。另外一個領域是語音合成,神經網絡對它非常擅長。deepmind 最近的一篇論文提到一個名為 “wavenet”的模型,可以創造出極為逼真的人類語音。wavenet 的問題是,它生成樣本的速度很慢。這類生成模型每一步隻能完成輸出的一個部分。wavenet 以約 12 千赫的速度生成聲音樣本。是以你需要連續運作 12000 個神經網絡,每一個神經網絡的輸出被用作下一個神經網絡的輸入。每一秒合成語音需要兩分鐘的計算時間,是以神經網絡無法進行即時會話。軟、硬體效率的提升最終能讓它更快。但現在看來,我們離 wavenet 進行即時會話還有好幾年的時間。理論上,生成對抗網絡能提供更快的文字到語音的合成。

生成對抗網絡會生成,和輸入的參數十分相似的輸出。在時間軸上預測下一步(在 wavenet 的例子上是音頻序列),你可以直接把 wavenet 架構用作生成網絡,反向傳播算法(backpropagation)會正常運作。

其實,由于高效率的卷積,擴充輸出尺寸通常不是那麼難。舉例來說,我演講中展示的最大圖檔,它的尺寸是 128×128。最近的論文中,facebook 已經做到輸出 256×256 的圖檔。真正難的是,輸出大量内含恰當細節的多樣化圖像。

嗯,很有可能。原則上大多數生成模型都可以。對于 gans,你需要找到能從圖像到描述圖像的代碼的方法。我描述的 gans 版本隻有單一方向(代碼到圖像)映射,但是蒙特利爾大學的對抗學習推理(adversarially learned inference),還有加州大學伯克利分校的雙向gans(bidirectional gans),有從圖像到代碼的編碼層(encode layer)。你可以用編碼層生成簡單代碼,對于經過解碼的圖像的差別,再使用寫死的壓縮算法将之壓縮。如果你運氣好,這些差別足夠小,可以被壓縮,最終結果會比原始圖像使用更少的比特。

我最感興趣、花費很多時間來研究的是提高訓練穩定性,但這特别難。我還花一些時間在開發新架構上。但相比穩定性,它關系不大。

如果你有一個生成網絡,能把它自己的輸出作為輸入,那就能做到。如果你有一個層級,從代碼映射到視訊第一幀;然後你建立另一個層級,把上一幀視訊映射到代碼,再到下一幀;你可以把第二層級不斷重複利用,它應該能做出不錯的視訊序列。

“GAN之父”Goodfellow與網友互動:關于GAN的11個問題(附視訊)

回報回路:輸入→輸出→輸入(照此循環)

這方面的研究很少,發表的論文也不多。大多數生成對抗網絡的研究都是關于圖像。facebook ai 研究部門有一篇關于視訊生成的論文,該研究用到了對抗網絡損失。還有一篇講3d合成視訊序列的論文。這些論文很具體地解釋了研究人員是怎麼做的以及最終成效。我認為兩個研究都加入了一些額外的東西,包括下一幀預測的方差。為了略微穩定訓練。facebook 的研究還加入了一個基于比較圖像的邊緣的損失,來保證生成的視訊不模糊。

視訊預測一個很難的地方是:大多數模型預測認為,你應該把同一幀永遠複制下去;或者影像不斷模糊下去,直到全部消失。這是由于每一個像素的不确定性太多。是以,讓他們不斷預測每一幀的清晰畫面十分困難。

【招聘】雷鋒網堅持在人工智能、無人駕駛、vr/ar、fintech、未來醫療等領域第一時間提供海外科技動态與資訊。我們需要若幹關注國際新聞、具有一定的科技新聞選題能力,翻譯及寫作能力優良的外翻編輯加入。

履歷投遞至[email protected],工作地 深圳;或投遞至[email protected],工作地 北京。

繼續閱讀