「GANs之父」Goodfellow 38分鐘視頻親授:如何完善生成對抗網絡...

2021-01-11 雷鋒網

編者按:深度學習頂級盛會NIPS於今年12月初在巴塞隆納舉行,相信有很多人都無法參加。不過,有另一個AI盛會卻是全世界所有人都能參加的,叫做「AI WITH THE BEST」,已於今年9月在網絡世界裡召開。演講嘉賓有100多人,其中就有「GANs之父」Ian Goodfellow。這個會議由於是網絡播出,所以有完整錄像,雷鋒網(公眾號:雷鋒網)對比Ian Goodfellow在NIPS的演講內容,二者十分相仿,故在此將此次會議的視頻搬運給大家,並附上中文圖文詳解(PS:本文由亞萌和三川共同編輯完成)。


大家好,先自我介紹一下,我叫Ian Goodfellow,我是OpenAI的一名研究員。OpenAI是一個非盈利性組織,致力於把通用性的人工智慧變成一種安全的方法,並且造福於全人類。

我今天將給大家講一下生成對抗網絡(Generative Adversarial Networks),簡稱「GANs」。

什麼是對抗生成網絡(GANs)?

生成對抗網絡是一種生成模型(Generative Model),其背後最基本的思想就是從訓練庫裡獲取很多的訓練樣本(Training Examples),從而學習這些訓練案例生成的概率分布。

一些生成模型可以給出概率分布函數定義的估測,而另一些生成模型可以給你全新的樣本,這些新樣本來自於原有生成訓練庫的概率分布。

PPT最底下一排圖片來自於ImageNet的資料庫,左邊是訓練圖片,右邊我們可以看作是一個理想的生成模型所產生的照片(實際上右邊的照片依然是從ImageNet庫裡選取的,我們的系統目前還沒有成熟到可以生成這種真實感)。

GANs的方法,就是讓兩個網絡相互競爭「玩一個遊戲」。

其中一個叫做生成器網絡( Generator Network),它不斷捕捉訓練庫裡真實圖片的概率分布,將輸入的隨機噪聲(Random Noise)轉變成新的樣本(也就是假數據)。

另一個叫做判別器網絡(Discriminator Network),它可以同時觀察真實和假造的數據,判斷這個數據到底是不是真的。

所以整個訓練過程包含兩步,(在下圖裡,判別器用 D 表示,生成器用 G 表示,真實資料庫樣本用 X 表示,噪聲用 Z 表示)。

第一步,只有判別器D參與。

我們把X樣本輸入可微函數D裡運行,D輸出0-1之間的某個值,數值越大意味著X樣本是真實的可能性越大。在這個過程中,判別器D儘可能使輸出的值靠近1,因為這一階段的X樣本就是真實的圖片。

第二步,判別器D和生成器G都參與。

我們首先將噪聲數據Z餵給生成器G,G從原有真實圖像庫裡學習概率分布,從而產生假的圖像樣本。然後,我們把假的數據交給判別器D。這一次,D將儘可能輸入數值0,這代表著輸入數據Z是假的。

所以這個過程中,判別器D相當於一個監督情況下的二分類器,數據要麼歸為1,要麼歸為0。

與傳統神經網絡訓練不一樣的且有趣的地方,就是我們訓練生成器的方法不同。生成器一心想要「騙過」判別器。使用博弈理論分析技術,我們可以證明這裡面存在一種均衡。

DCGANs:深度卷積生成對抗網絡

現代GANs架構基於一篇名為「 Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 」(簡稱DCGANs)的論文,作者是 Alec Radford、Luke Metz和Soumith Chintala。(連結:https://arxiv.org/pdf/1511.06434.pdf)

DCGANs的基本架構就是使用幾層「反卷積」(Deconvolution)網絡。「反卷積」類似於一種反向卷積,這跟用反向傳播算法訓練監督的卷積神經網絡(CNN)是類似的操作。

CNN是將圖像的尺寸壓縮,變得越來越小,而反卷積是將初始輸入的小數據(噪聲)變得越來越大(但反卷積並不是CNN的逆向操作,這個下面會有詳解)。

如果你要把卷積核移動不止一個位置,  使用的卷積滑動步長更大,那麼在反卷積的每一層,你所得到的圖像尺寸就會越大。

這個論文裡另一個重要思想,就是在大部分網絡層中使用了「批量規範化」(batch normalization),這讓學習過程的速度更快且更穩定。另一個有趣的思想就是,如何處理生成器裡的「池化層」(Pooling Layers),傳統CNN使用的池化層,往往取區域平均或最大來壓縮表徵數據的尺寸。

在反卷積過程中,從代碼到最終生成圖片,表徵數據變得越來越大,我們需要某個東西來逐漸擴大表徵的尺寸。但最大值池化(max-pooling)過程並不可逆,所以DCGANs那篇論文裡,並沒有採用池化的逆向操作,而只是讓「反卷積」的滑動步長設定為2或更大值,這一方法確實會讓表徵尺寸按我們的需求增大

這其中有些想法來自於早期的一篇論文「全卷積網絡」(Striving for Simplicity: The All Convolutional Net,連結 https://arxiv.org/abs/1412.6806),大家可以看一看。

DCGANs非常擅長生成特定Domain裡的小圖片,這裡是一些生成的「臥室"圖片樣本。這些圖片解析度不是很高,但是你可以看到裡面包含了門、窗戶、棉被、枕頭、床頭板、燈具等臥室常見物品。

向量空間運算

我們在生成網絡裡隨意輸入一些噪聲值,這些值解碼成一些「戴眼鏡的男人」的圖片。我們將這些代碼取平均值,便得到如下圖最左一的「戴眼鏡的男人」的圖片,這是一個「平均圖片」(Average Image)。

我們使用同樣的過程,產生圖中的「男人」(左二)和「女人」(左三)的圖片。

而你可以在這些圖片(向量空間)之間做運算。

「戴眼鏡的男人」-「男人」+「女人」=「戴眼鏡的女人」

這則加減運算裡,輔以解碼一些變量,最終得出了最右邊一系列「戴眼鏡的女人」圖片。

這十分類似語言模型,單詞向量(Word Embedding)之間也具有有趣的代數關係。例如,

「王后」-「女性」+「男性」=「國王」

向量運算是可行的,這一點令人印象深刻,因為我們確實需要解碼經過運算生成的向量,然後得到每個像素都是有意義的圖片。

在單詞向量裡,我們從運算中得到的新向量,只需要與之前的某個向量靠近就行。這個過程,並不需要解碼成一種「真實世界體驗」。而在我們圖片的向量運算裡,可以將運算結果映射到真實世界當中

訓練GANs難點:「模型崩潰」及其解決方法

訓練GANs的一個難點,就在於會出現「模型崩潰」(Mode Collapse):生成的所有樣本都在一個點上(樣本相同),這是訓練GANs經常遇到的失敗現象。

我們訓練GANs,起初讓判別器的輸出值最大化(儘量接近1),然後讓生成器輸出值最小化(儘量接近0),那麼一切都沒問題。但是,如果我們把順序調一下,先最小化生成器輸出值,然後再最大化判別器輸出值,那麼一切都會崩掉(這在循環訓練的時候會發生)。

針對這個,我們可以採用的解決方法是minibatch GAN,給生成器增加一些額外的「特徵」(Feature),讓原始數據分成一波波的小批量樣本,從而保證每一批數據的多樣性。我們將裡面用到的特徵稱為「小批量特徵」(Minibatch Feature)。

如果這些「特徵」測量的是樣本之間的間距,那麼通過這一點,判別器就能檢測到生成器是否將要崩潰。小批量樣本更加接近真實,且每個樣本的間距是正確的,就不會讓生成器產生只映射到一個點的圖像。「小批量」的理念來自於OpenAI研究員Tim Salimans在2016年提交給NIPS的一篇論文。

使用「小批量特徵」會大大提升GANs訓練效果。我們用很多資料庫來檢驗這一方法,其中的一個資料庫就是CIFAR 10,這裡面包括10中不同類別的物體,有鳥、飛機、汽車、貨車、馬等等,圖片像素為32x32。

如上圖所示,左邊是訓練數據,這些圖片都很小,而且質量不高;右邊是生成器產生的樣本,其中有些樣本展示的物體辨識度還可以,比如馬、汽車、船等等。生成樣本裡大約40%只是一些由顏色和紋理構成的難以名狀的一團,但是剩下的確實包含了一些有意義的物體圖像。

我們也把 minipatch GANs放到更大的ImageNet資料庫裡,裡面圖像的解析度是128x128,且包含數千種物體,難度大得多。尤其是發生我們前面提到的「模型崩潰」問題時,訓練過程更難。

上面左邊的圖,來自於ImageNet,你或許會發現這些圖比之前CIFAR 10的圖片質量高很多,這是因為空間幅度(Spatial Extent)大約在每個方向上都擴展了4倍。這裡面的物體類別繁多,甚至有一些連人類都無法準確歸類,比如這當中有一格小圖裡包含了一個「瓦屋頂」,我就不太能確定這要歸為「瓦」、「屋頂」還是「房子」?

所以,需要意識到的一點就是,這裡要捕捉的多樣性太多了。

右邊的組圖裡,是我們訓練minipatch GAN生成的樣本圖,其中真的有一些圖片包含了可識別的物體。比如左上角的圖,看起來像是一隻胖狗,你也可以看到狗的臉、貓臉、眼睛等圖形散布在各個樣本裡。但是,大部分圖展示的內容並不協調,它們看起來像是畢卡索或達利風格的畫,只是一些紋理和圖形的堆砌,並不是有機的構成

我們從中精挑細選了一些比較好的樣本圖(Cherry-Picked Results),從中我們看到GAN做的事情是比較有用的,但是仍然有很多不足。

下面左上角的一張圖的構成不錯,這像是一個狗媽媽,旁邊依偎著一隻狗寶寶,兩隻狗望向同一個方向。但是你可以發現,這張圖裡的場景並不是3D的,而且跟前面的狗相比,後邊的背景圖並沒有展現出什麼意義。

最上面一排的中間圖,看起來就像是一隻巨型蜘蛛,而我認為之前的訓練庫裡沒有什麼與此類似的東西。

很多次,我們常常發現,系統無法將紋理與形狀合理地整合起來,這是一種模型過分概括(overgeneralization)的案例。

我們經常遇到的問題就是,這裡面完全沒有3D的立體構成,比如底部一排左三圖片,狗的面部不錯,狗的毛髮展現的很好,但是總體上,這像是一塊平鋪在地上的狗皮(而不是立體的狗),就像是從正上方垂直看下來,我們稱之為「正交投影」。在這個案例裡,模型根本不知道如何做透視。

我們知道卷積網絡可以計數的,在一些應用裡,我們需要將圖片裡的地址數字進行轉錄,這就要求我們知道數字裡包含了多少數位(Digits)。但看起來,如果你不明確訓練神經網絡如何計數,那麼它自己是不會自動學習計數方法的。

最右下角的圖,看起來像是一隻美洲豹或黑貓的臉,但是這張圖裡包含的「臉」太多了。似乎神經網絡知道需要有眼睛、嘴和鼻子來構成臉,但是它並不清楚到底一張臉要包含幾個眼睛、嘴和鼻子,也不知道這些器官要正確放在什麼位置。

GANs的應用:「文本轉圖像」(Text to Image)

我們可以用GANs做很多應用,其中一種就是「文本轉圖像」(Text to Image)。在Scott Reed等人的一篇論文裡(Generative Adversarial Text to Image Synthesis,連結 https://arxiv.org/abs/1605.05396)。GANs根據輸入的信息產生了相關圖像,我到目前為止談到的GANs還只是從學習訓練庫裡的概率分布,隨機產生圖像,而不是像Scott Reed這樣根據特定輸入語句來產生特定圖像。

在這篇新論文裡,GANs增強了,輸入了額外的描述信息,告訴它們應該要產生什麼樣的圖像。

也就是說,生成器裡輸入的不僅是隨機噪聲,還有一些特定的語句信息。所以判別器不僅要區分樣本是否是真實的,還要判定其是否與輸入的語句信息相符。

這裡是他們的實驗結果,左上角的圖裡有一些鳥,鳥的胸脯和鳥冠是是粉色,主羽和次羽是黑色,與所給語句描述的信息相符。

但是我們也看到,仍然存在「模型崩潰」問題,在右下角的黃白花裡,確實產生了白色花瓣和黃色花蕊的花朵,但它們多少看起來是在同一個方向上映射出來的同一朵花,它們的花瓣數和尺寸幾乎相同。

所以,模型在輸出的多樣性方面還有些問題,這需要解決。但可喜的地方在於,輸入的語句信息都比較好的映射到產生的圖像樣本中。

有趣的GANs 圖像生成應用

在Indico和Facebook發布了他們自己的DCGAN代碼之後,很多人開發出他們自己的、有趣的GANs應用。有的生成新的花朵圖像,還有新動漫角色。我個人最喜歡的,是一個能生成新品種精靈寶可夢的應用。

在一個 Youtube 視頻,你會看到學習過程:生成器被迫去學習怎麼騙過判別器,圖像逐漸變得更真實。有些生成的寶可夢,雖然它們是全新的品種,看上去就像真的一樣。這些圖像的真實感並沒有一些專業學術論文裡面的那麼強,但對於現在的生成模型來說,不經過任何額外處理就能得到這樣的結果,已經非常不錯了。

超解析度

一篇最近發表的論文,描述怎麼利用GANs進行超解析度重建(Super-Resolution)。我不確定這能否在本視頻中體現出來,因為視頻清晰度的限制。基本思想是,你可以在有條件的GANs裡,輸入低解析度圖像,然後輸出高分版本。使用生成模型的原因在於,這是一個約束不足(underconstrained)的問題:對於任何一個低解析度圖像,有無數種可能的高解析度版本。相比其他生成模型,GANs特別適用超解析度應用。因為GANs的專長就是創建極有真實感的樣本。它們並不特別擅長做概率函數密度的估測,但在超解析度應用中,我們最終關心的是輸出高分圖像,而不是概率分布。


(從左到右分別為:圖1、2、3、4)

上面展示的四幅圖像中,最左邊的是原始高分圖像(圖1),剩下的其餘三張圖片都是通過對圖片的降採樣(Down Sample)生成的。我們把降採樣得到的圖片用不同的方法進行放大,以期得到跟原始圖像同樣的品質。

這些方法有很多種,比如我們用雙三次插值(Bicubic Interpolation)方式,生成的圖像(圖2)看起來很模糊,且對比度很低。另一個深度學習方法SRResNet(圖3)的效果更好,圖片已經乾淨了很多。但若採用GANs重建的圖片(圖4),有著比其它兩種方式更低的信噪比。雖然我們直觀上覺得圖3看起來更清晰,事實上它的信噪比更高一些。GANs在量化矩陣(Quantitative Matrix)和人眼清晰度感知兩方面,都有很好的表現。

(PS:在視頻的後半段,主要是Ian Goodfellow回答網友的提問,雷鋒網將據此編輯成第2篇文章,後續將發布。)


相關文章:

「不要過於關心AI本身」,資深創業者談人工智慧創業心得

人工智慧如何創新?就靠這五大支柱了

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 自Ian Goodfellow之後,GANs還有哪些開拓性進展?
    一直以來,Adit Deshpande 都有總結和解釋一些深度學習論文的習慣,在本文中,Adit Deshpande 將圍繞對抗生成網絡(GANs)的主題來展開介紹。以下為雷鋒網編譯整理的內容:在這篇總結裡,我們一起來看看3篇基於Ian Goodfellow在2014年發表的開拓性工作的文章。 生成對抗網絡(GANs)概述 我在之前的博文,《9篇你要知道的深度學習論文》,裡提到過Ian Goodfellow生成對抗網絡的論文。那些網絡模型大致是,你有兩個模型,一個生成模型(generative model)和一個辨別模型(discriminative model)。
  • 十個生成模型(GANs)的最佳案例和原理 | 代碼+論文
    王小新 編譯原文作者:Sumeet Agrawal量子位 出品 | 公眾號 QbitAI生成對抗網絡(GANs)是一種能「教會」計算機勝任人類工作的有趣方法。一個好的對手能讓你成長更快,而GANs背後就是「從競爭中學習」的思路。
  • Goodfellow最新對抗樣本,連人類都分不清是狗是貓
    從機器學習安全的角度來考慮,如果我們知道人腦可以抵禦某些類型的對抗樣本,那麼這就說明在機器學習安全中存在類似的機制,這為我們尋找它們提供了信心和線索;反過來,如果我們知道存在對抗樣本能夠欺騙我們的大腦,那麼這就告訴我們,機器學習安全的重心不應該是研究如何設計魯棒性極高的模型,而應是研究如何保證系統即使包含非魯棒性的 ML 組件,仍然是安全的。
  • Ian Goodfellow發推講2個機器學習黑魔法,教你如何推導公式
    大數據文摘作品作者:小魚、土豆《深度學習》(花書)作者Ian Goodfellow今早連發了10條推特,細數了他最喜歡的兩個機器學習「黑魔法」。他在著名的GAN論文中使用這兩個小竅門推導了公式。當然,更詳盡的操作還是要去看Goodfellow本人的《深度學習》。文摘菌給大家搭配了斯坦福的一門MOOC,一起學習風味更佳~拉至文末查看喔~Goodfellow稱,這是關於機器學習,他最喜歡的兩個快速理解理論推導的「黑魔法」。感興趣的同學在大數據文摘後臺回復「goodfellow」可獲取GAN論文和《凸優化》。
  • 揭秘騰訊變臉魔法,生成對抗網絡GAN的威力是什麼?
    揭秘騰訊變臉魔法,生成對抗網絡GAN的威力是什麼?不管是創造了微視視頻特效製作量新紀錄的王者臉,還是在QQ上線的全球首創光頭特效,都是騰訊光影研究室利用生成式對抗網絡 GAN所製造的魔法。隨著GAN網絡在生成質量上的不斷提高,它越來越頻繁地落地到社交娛樂場景中,給用戶帶去最直觀、新鮮的AI體驗。左右互搏生成完美圖片,AI界的"網紅"技術那麼使得新型變臉特效得以實現的生成式對抗網絡 GAN,究竟是什麼?它是由美國科學家Ian Goodfellow發明,試圖讓計算機自己生成逼真圖片的AI技術。
  • 萬字綜述之生成對抗網絡(GAN)
    文章目錄如下:GAN的基本介紹生成對抗網絡(GAN,Generative Adversarial Networks)作為一種優秀的生成式模型,引爆了許多圖像生成的有趣應用。GAN 相比於其他生成式模型,有兩大特點: 1. 不依賴任何先驗假設。傳統的許多方法會假設數據服從某一分布,然後使用極大似然去估計數據分布。 2.
  • AI生成色情作品?深度偽造防不勝防!
    這篇報導詳細披露了這名匿名博士生是如何將未經雙方同意的圖像編譯為數據集,並結合現有算法生成自定義視頻的。用人工智慧生成色情作品的創作者將這些作品發布在Pornhub、OnlyFans等平臺上。他向Vice透露自己使用了StyleGAN2,一種由Nvidia構建的開源算法。
  • 床長人工智慧教程——什麼是生成模型?
    什麼是生成模型?在開始講生成對抗網絡之前,我們先看一下什麼是生成模型。在概率統計理論中,生成模型是指能夠在給定某些隱含參數的條件下,隨機生成觀測數據的模型,它給觀測值和標註數據序列指定一個聯合概率分布。
  • GAN學習指南:從原理入門到製作生成Demo,總共分幾步?
    本文由雷鋒網(公眾號:雷鋒網)編輯整理自作者知乎專欄,獲授權發布。生成式對抗網絡(GAN)是近年來大熱的深度學習模型。最近正好有空看了這方面的一些論文,跑了一個GAN的代碼,於是寫了這篇文章來介紹一下GAN。
  • Valse 2017 | 生成對抗網絡(GAN)研究年度進展評述
    生成對抗網絡是過去一年來得到很多關注的一個方向,裡面的內容比較龐雜。那麼我選擇了以下幾個角度,來概括過去幾年來 GAN 的發展脈絡。如何設計一個生成器這個部分相對來說就比較容易一些。對於複雜的圖像生成,可以使用分階段的方式。
  • 如何使用變分自編碼器VAE生成動漫人物形象
    變分自編碼器(VAE)與生成對抗網絡(GAN)經常被相互比較,其中前者在圖像生成上的應用範圍遠窄於後者。VAE 是不是只能在 MNIST 數據集上生成有意義的輸出?在本文中,作者嘗試使用 VAE 自動生成動漫人物的頭像,並取得了不錯的結果。以上是通過變分自編碼器生成的動畫圖片樣本。
  • 對抗學習專題及常見問題 - CSDN
    Guo-Yunzhe/Adversarial_Learning_Paperhttps://gitee.com/guoyunzhe/Adversarial_Learning_SurveyFGSM生成對抗樣本的試寫
  • Not Good 和 No Good如何使用?
    新東方網>英語>英語學習>語法詞彙>語法指導>正文Not Good 和 No Good如何使用?He was just no good.   傑克總是惹麻煩,他這人簡直無藥可救。   形容一個物品no good,那就意味著這個物品毫無利用價值.   ▍This milk is no good. It expired last week.
  • 不用GAN,照片生成簡筆畫,效果驚豔
    先前,機器之心報導過簡筆畫生成人臉。而 AI 從人臉生成簡筆畫的效果如何呢? 先看幾張效果圖! 更有意思的是,這種創作線稿的方法並沒有使用大多數類似工具會用到的生成對抗網絡 GAN。 目前,該項目在 Reddit 上已經有超高熱度,項目名為 ArtLine,github star 量也已經超過 700。
  • 日本研究員提出基於生成對抗網絡的Iconify模型!
    為解決設計師的這一痛點,來自於日本九州大學和電氣通信大學的研究人員提出了基於生成對抗網絡的Iconify模型,可以將輸入的圖像轉換為較為形象簡潔的圖標,為圖標生成和構建提出了新的可行方向。研究人員將圖標生成任務視為在照片和圖標間實現域遷移的生成任務。由於沒有對應的配對數據集,研究人員採用了基於CycleGan和UNIT等方法來構建模型,學習出從圖像到圖標的圖標化能力。
  • Deepfake技術被稱現代網絡「易容術」 AI換臉如何打假「李鬼」
    根據安全分析公司Sensity最新調查結果,自2018年12月以來,Deepfake在線造假視頻的數量大約每6個月翻一番,而截至2020年6月,造假視頻已經多達49081個,比2019年7月增長了330%。Deepfake技術讓視頻換臉變得越來越簡單,如何打假「李鬼」,讓其避免成為假視頻的「幫兇」已成為當務之急。
  • 視頻如何轉gif圖片?在線視頻GIF生成的操作方法
    在日常生活中,每天都會看到許多不同類型的視頻,那麼如果想將這些視頻轉換成gif圖片的話,怎樣才能快速完成視頻轉gif操作呢?下面給大家分享一下款gif動畫在線製作工具,在線製作動態圖片,通過簡單的操作步驟,就能夠將視頻快速轉換為gif動圖,以下為小編給大家分享的使用方法,快來看一下如何操作吧。點擊導航欄中的gif工具,選擇視頻轉gif功能。點擊選擇視頻,將想要截取片段的視頻上傳到網站。
  • 谷歌新款「怪物製造機」,用GAN一鍵生成定製版「哥斯拉」
    這為演示圖像生成模型提供了一個創造性的環境,因為可能的嵌合體的數量需要一種方法來快速設計大量可以自然結合的藝術元素,同時仍然保留原始生物可識別的視覺特徵。研究團隊的目標是在用戶輸入的指導下創建高質量的生物卡片圖像,因此在用戶反饋的指導下,嘗試使用生成對抗網絡(GANs)來創建適合幻想卡片遊戲原型的生物圖像。