2018最佳GAN论文回顾(上)
我很高興今年參加了一個研究項目,這要求我必須熟悉大量用于計算機視覺方面的深度學習領域的資料。我對過去兩、三年內取得的進展感到驚訝,這真的非常令人興奮和鼓舞,所有不同的子領域,如圖像修復、對抗性樣本、超分辨率或是三維重建,都大大得益于近期的發展。然而,有一種神經網絡,它受到了大量的宣傳和炒作?—?生成性對抗網絡(Generative Adversarial Networks,GANs)。我也認為這種模型是非常吸引人的,并且我也一直在尋找一些GAN的新思路。
受Reddit網站上討論區的啟發,我決定快速地瀏覽一下2018年關于GAN最有趣的文章。這份名單非常的主觀?—?我選擇的研究論文不僅是最高水平的,而且也都非常的有趣。在第一章中,我將討論其中的三篇。順便說一下,如果你對以前的GAN論文感興趣,這一篇文章可能會有所幫助,作者在文中提到的一篇論文排在了我的名單上的第一位。
1.GAN解析:可視化和理解生成性對抗網絡?—?考慮到GAN的大肆宣傳,很明顯這項技術遲早會被商業化應用。然而,因為我們對其內部機制了解的不多,所以我認為要生產一個可靠的產品仍然很困難。不過這項工作仍然向未來邁出了巨大的一步,在未來我們能夠真正控制GAN。因此,一定要看看他們偉大的交互演示,結果是令人震驚的;
2.一種用于生成性對抗網絡的基于生成器體系結構?– NVIDIA(英偉達)的研究團隊會定期地提出一些具有開創性的概念(2018年的關于圖像修復的論文,近期的用神經網絡進行圖形繪制的演示)。這篇論文也不例外,加上顯示結果的視頻就更有吸引力了;
3.進化生成性對抗網絡?—?這是一個真正簡單易懂的文章。進化算法和GAN一起?—?這肯定很有趣;
GAN解析:?可視化和理解生成性對抗網絡(GAN Dissection: Visualizing and Understanding Generative Adversarial Networks)
詳解
該論文已于2018年11月26日提交。作者以交互式演示的方式創建了一個非常不錯的項目網站。
主要思想:
GAN無疑證明了深度神經網絡的強大。機器學習生成令人震驚的、高分辨率圖像的方式是非常美妙的,就仿佛它像我們一樣了解這個世界。但是,和其它的那些出色的統計模型一樣,GAN最大的缺陷是缺乏可解釋性。這項研究為理解GAN邁出了非常重要的一步。它允許我們在生成器中找到“負責”生成某些屬于class?c的對象單元。作者們聲稱,我們可以檢查生成器的一個層,并找到導致在生成圖像中形成c對象的單元子集。作者們通過兩個步驟:解剖和干預,為每個類尋找一組“因果”單元。另外,這可能是第一項工作,為了解GAN的內部機制提供了系統的分析。
方法:
生成器G可以被看作是從潛在的向量z到一個生成的圖像x=G(z)的映射。我們的目標是理解參數r,一種內部的表示,它是生成器G的特定層的輸出。
x=G(z)=f(r)
關于c類的對象,我們想仔細看下參數r。我們知道參數r包含關于一個這些特定對象生成的編碼信息。我們的目標是了解這個信息是如何在內部編碼的。作者們聲稱有一種方法可以從參數r中提取這些單元,而r負責生成類c的對象。
這里,是特定層中所有單元的集合,參數U是目標單元,參數P是像素位置。問題來了,如何進行這種分離?作者們提出了兩個步驟,這兩個步驟是理解GAN黑盒子的工具。就是解析和干預。
解析?—?我們要識別那些有趣的類,它們在r中有一個明確的表示方法。這基本上是通過比較兩個圖像來完成的。首先通過計算x獲得第一個圖像,然后通過語義分割網絡來運行。這將返回與目標類別(例如:樹木)相對應的像素位置。第二個圖像是通過用ru,p進行上采樣,因此它與sc(x)的維度相匹配,然后再對其進行閾值處理,以便對被這個特定單元所“發亮”的像素做出艱難的決定。最后,我們計算了兩個輸出之間的空間一致性。值越高,單元u對類c的因果效應就越大。通過對每個單元執行這個操作,我們最終應該找出哪些類在r的結構中有一個明確的表示方法。
干預?—?在這一點上,我們已經確定了相關的類。現在,我們試圖為每個類找到最好的分離方式。這意味著,一方面我們抑制非受迫單元,希望目標類將從生成的圖像上消失。另一方面,我們擴大了因果單元對生成圖像的影響。這樣我們就可以了解到他們對目標類c的存在有多大的貢獻。最后,我們從兩個圖像中分割出類c并進行對比。語義圖之間的一致性越小越好。這意味著在一個圖像上,我們完全“排除”了樹木的影響,而第二個圖像只包含一片樹林。
結果:
a)Progressive GAN生成的教堂圖像?b)根據所給的預訓練的Progressive GAN,我們確定了負責生成“樹”類的單元?c)我們可以阻止那些單元“刪除”圖像中的樹?d)擴大圖像中樹的密度。
上述結果表明,我們對網絡內部的機制有了很好的理解。這些見解可以幫助我們改善網絡行為。了解圖像的哪些特征來自于神經網絡的哪個部分,對于理解說明、商業應用和進一步的研究都是非常有價值的。
a)出于調試的目的,我們可以確定那些有偽影的單元……,b)和c)把它們去掉了,以“修復”GAN。
一個可以解決的問題是在生成的圖像中有看得見的偽影。即使是一個訓練很好的GAN有時也能產生一個極其不現實的圖像,而這些錯誤的原因以前是未知的。現在我們可以將這些錯誤與導致視覺偽影的神經元聯系起來。通過識別和阻止這些單元,可以提高生成的圖像質量。
通過將某些單元設置為固定的平均值(例如,門),我們可以確保門將出現在圖像中的某個位置。當然,這不會違反學過的分布統計(我們不能強迫門出現在空中)。另一個限制來自于這樣一個事實,即一些對象與某些位置之間的聯系是非常的緊密,以至于無法將它們從圖像中消除。舉個例子:不能簡單地把椅子從會議室里刪除掉,那樣只會降低它們像素的密度或尺寸。
一種用于生成性對抗網絡的基于生成器體系結構(A Style-Based Generator Architecture for Generative Adversarial Networks)
詳述
該論文已于2018年12月12日提交,代碼很快就將會發布。另外,對于那些想更多了解這種方法但并不想閱讀論文的人來說,博客上發表了一篇很好的總結文章。
主要思想:
這項工作提出了關于GAN框架的另一個觀點。更具體地說,它從樣式轉換設計中吸取靈感,創建了一個生成器架構,在生成的圖像中可以學習高級屬性(如年齡、在人臉或背景上訓練時的身份、相機視角)和隨機變化(雀斑、頭發細節)。它不僅學習自動分離這些屬性,而且還允許我們以非常直觀的方式控制合成。
方法:
傳統的GAN架構(左)與基于樣式的生成器(右)。在新的框架中,我們有兩個網絡組件:映射網絡f與綜合網絡g。前者將一個潛在的代碼映射到一個中間的潛在空間W,W對樣式的信息進行編碼。后者利用生成的樣式和高斯噪聲來創建新的圖像。塊“A”是一個訓練過的仿射轉換,而塊“B”將訓練過的每個通道的比例因子應用于噪聲的輸入。
在經典的GAN方法中,生成器以一些潛在的代碼作為輸入,并輸出一個圖像,這屬于它在訓練階段所學習到的分布。作者們通過創建一個基于樣式的、由兩個元素組成的生成器來背離這種設計:
1.一個全連接的網絡,代表著非線性映射?f:Z→W;
2.一個綜合網絡g;
全連接的網絡?—?通過變換一個標準化的潛在向量z∈Z,我們得到了一個中間的潛在向量w=f(z)。中間的潛在空間W有效地控制了生成器的樣式。作為旁注,作者確保避免從W的低密度區域采樣。雖然這可能造成w的變化損失,但據說最終會導致更好的平均的圖像質量。現在,一個從中間的潛在空間采樣的潛在向量w被輸入到塊“A”(訓練的仿射變換)中,并轉換成樣式y=(ys,yb)。最后通過每個卷積層的自適應實例標準化(adaptive instance normalization,AdaIN)將該風格添加到合成網絡中。AdaIN操作是這樣定義的:
合成網絡?— AdaIN的操作通過對其進行標準化來改變每個特征圖xi,然后使用來自樣式y的分量進行比例縮放和移位。最后,生成器的特征映射也被提供了一個直接的方式來生成隨機細節?—?顯式的噪聲輸入?—?以包含不相關高斯噪聲的單通道圖像的形式。
綜上所述,雖然顯式的噪聲輸入可以被視為在合成網絡中生成過程的“種子”,但從W抽取的潛在代碼試圖向圖像添加某種樣式。
結果:
作者們從2017年的Progressive GAN開始重新審視NVIDIA的架構。雖然他們掌握了大部分的架構和超參數,但是生成器正在根據新的設計進行“升級”。論文內容最令人印象深刻的特點是樣式的混合。
上圖是可視化樣式混合的效果。通過讓一個潛在的代碼(來源)生成一個圖像,我們可以覆蓋另一個圖像(目標)的特征子集。這里,我們覆蓋對應于粗糙空間分辨率(低分辨率特征圖)的層。這樣我們就可以影響目標圖像的高級特征了。
這種新奇的生成器結構使其有能力在合成網絡的不同層向同一圖像添加不同的樣式。在訓練過程中,我們通過映射網絡運行兩個潛在代碼z1和z2,并接收相應的w1和w2兩個向量。完全由z1生成的圖像被稱為目標。這是一個生成的高分辨率圖像,幾乎與實際的分布區區分不出來。僅通過添加z2而生成的圖像被稱為來源。現在,在使用z1生成目標圖像的過程中,在某些層,我們可以添加z2的代碼了。此操作將用那些來源來覆蓋目標中存在的樣式子集。來源對目標的影響是由層的位置來控制的,這些層正被來源的潛在代碼進行“培育”。與特定層對應的分辨率越低,來源對目標的影響越大。這樣,我們就可以決定要在多大程度上影響目標圖像:
·粗糙空間分辨率(分辨率42?82)?—?高級方面,如:發型、眼鏡或年齡;
·中間樣式分辨率(分辨率162?322)?—?較小比例的面部特征,如:發型樣式的細節、眼睛;
·精細分辨率(分辨率642?10242)—只需修改一些小細節,如:頭發顏色、膚色色調或皮膚結構;
作者們將他們的方法進一步應用到汽車、臥室甚至是貓的圖像中,得到了令人震驚的結果。我仍然困惑為什么網絡的決定會影響到貓的圖像中爪子的位置,而不會關心汽車圖像中車輪的轉動……
我發現真正令人驚奇的是,這個框架可以進一步應用于不同的數據集,比如汽車和臥室的圖像。
進化生成性對抗網絡(Evolutionary Generative Adversarial Networks)
細節
該論文已于2018年3月1日提交。
主要思想:
在傳統設置中,GAN通過交替更新生成器和使用反向傳播的識別器進行訓練。利用在目標函數中的交叉熵機制,實現了雙人minmax?游戲。E-GAN的作者們提出了一種基于進化算法的可替代GAN框架。他們以進化問題的形式重新聲明了損失函數。生成器的任務是在識別器的影響下承受不斷地突變。根據“適者生存”的原則,我們希望最新一代生成器以這樣的方式“進化”,從而學會正確的訓練樣本分布。
方法:
原始的GAN框架(左)與E-GAN框架(右)。在E-GAN框架中,全部的Gθ生成器在一個動態環境中進化?—?即識別器D。該算法涉及三個階段:變化、評估和篩選。最好的子版本被保留下來以供下一次迭代的時候使用。
進化算法試圖在一個給定的環境(這里是指識別器)中進化全部的生成器。生成器中的每個個體都代表了生成網絡參數空間中的一個可能的解決方案。進化過程歸結為三個步驟:
1.變化:通過根據一些突變屬性而自我修改,生成器的單個Gθ生成其子級…;
2.評估:每個子級都將使用一個適應函數進行評估,該函數取決于識別器的當前狀態;
3.篩選:我們對每個子級進行評估,并決定它在適應函數的方面是否足夠好,如果是,它將被保留,否則就會被丟棄;
上述這些步驟涉及到兩個應該被詳細討論的概念:突變和適應函數:
突變?—?這些是在“變化”步驟中給子級引入的改變。最初的GAN訓練目標激發了他們的靈感。作者們區分了三種最有效的突變類型。它們是minmax突變(鼓勵將Jensen-Shannon分歧最小化)、啟發式突變(添加了反向Kullback-Leibler分歧項)和最小二乘突變(受LSGAN的啟發);
適應函數?—?在進化算法中,一個適應函數告訴我們一個給定的子級離達到設定的目標有多接近。這里,適應函數包括兩個要素:質量適應得分和多樣性適應得分。前者確保了生成器能夠提供欺騙識別器的輸出,而后者則關注生成樣本的多樣性。因此,一方面,培育子版本不僅要很好地接近原始分布,而且還要保持多樣性,并且避免模式崩潰的陷阱。
作者們聲稱他們的方法解決了多個眾所周知的問題。E-GAN不僅在穩定性和抑制模式崩潰方面做得更好,還減輕了選擇超參數和架構(對收斂至關重要)的壓力。最后,作者們聲稱E-GAN比傳統的GAN框架收斂得更快。
結果:
該算法不僅對合成數據進行了測試,而且還對CIFAR-10的數據集和Inception進行了測試。作者們修改了流行的GAN方法,如DCGAN,并在實際的數據集上對其進行了測試。結果表明,通過訓練E-GAN,可以從目標數據分布中生成各種高質量的圖像。根據作者們的想法,在每一個篩選步驟中只保留一個子級就足以成功地將參數空間遍歷到最優的解決方案。我發現E-GAN的這個屬性非常有趣。另外,通過對空間連續性的仔細檢查,我們可以發現,E-GAN的確從潛在的噪聲空間到圖像空間學習了一種有意義的預測。通過在潛在向量之間進行插值,我們可以獲得平穩地改變有語義意義的人臉屬性的生成圖像。
在潛在空間中線性地插值。生成器已經從CelebA數據集中學習了圖像的分布。α=0.0對應著從向量z1生成一個圖像,而α=1.0則意味著圖像來自向量z2。通過改變alpha的取值,我們可以在潛在的空間內進行插值,效果非常好。
?
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的2018最佳GAN论文回顾(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源SQL-on-Hadoop系统一览
- 下一篇: 官宣!阿里Blink和Flink合并计划