- GAN實戰
- (英)雅各布·朗格爾 (美)弗拉基米爾·博克
- 6000字
- 2021-03-18 18:36:03
第1章 GAN簡介
本章主要內容
生成對抗網絡簡介
這類機器學習算法的特別之處
本書所涉及的令人興奮的GAN應用
機器能否思考——這一想法比計算機本身出現得還要早。數學家、邏輯學家以及計算機科學家艾倫?圖靈(Alan Turing),或許是憑借在破譯密碼機方面做出的貢獻而廣為人知的,但他于1950年撰寫的《計算機器與智能》(Computing machinery and intelligence)這篇論文也足以使他的名字永載后世。
在這篇文章中,圖靈提出了一種叫作模仿游戲的測試。今天,人們更習慣稱之為圖靈測試。在這個假設的測試場景中,一個不知情的觀察者與位于一扇緊閉的門后的兩個“對應者”交談:一個是人類,另一個是計算機。圖靈認為,如果觀察者不能分辨出哪個是人、哪個是機器,那么必須承認通過該測試的計算機是智能的。
試過與自動聊天機器人或智能語音助手進行對話的人都知道,要通過這個看似簡單的測試,計算機還有很長的路要走。然而,在其他類型的任務中,計算機不僅能與人類的表現相媲美,在一些領域甚至超越了人類——即使是一些在最近還被認為最智能的算法都無法企及的領域,例如,計算機在人臉識別中已經能做到超越人類的精確度,還能不需人類經驗即可掌握圍棋技能。[1]
機器學習算法非常擅長識別已有數據中的模式,并將這種洞察能力用于諸如分類(為樣本分配正確類別)和回歸(根據一系列的輸入進行數值估算)等任務中。但是當被要求生成新數據時,計算機就顯得力不從心了。算法可以擊敗國際象棋大師,估計股價走勢,并能分辨信用卡交易是否可能是欺詐,但相比之下,任何與Amazon的Alexa或Apple的Siri進行閑聊的嘗試卻往往注定失敗。事實上,人類最基本和最重要的能力——例如一次愉快的對話或者一件原創作品的制作——都足以使最先進的超級計算機束手無策。
但這一切在2014年發生了改變,當時還是加拿大蒙特利爾大學博士生的伊恩?古德費勒(Ian Goodfellow)發明了GAN,這項技術使得計算機能夠利用兩個獨立的神經網絡生成真實的數據。GAN并不是第一個用于生成數據的計算機程序,但其出色的效果和多功能性使得它脫穎而出。GAN已經取得了驚人的成果,而這些成果長期以來被認為是幾乎不可能通過人工系統實現的,比如,生成栩栩如生的偽圖像,將涂鴉手繪變成照片風格的圖像,或者將視頻片段中奔跑的駿馬變成黑白相間的斑馬——利用GAN,這些都不需要大量精心標注的訓練數據即可實現。
由于GAN的出現,機器數據生成技術取得了長足的進步,圖1.1所示的人臉合成就是一個很好的例子。就在GAN被發明出來的2014年,機器生成的最好效果只是一張模糊的臉——這在當時已被認為是突破性的成就了。僅僅3年后的2017年,GAN技術的進步就讓計算機能夠生成以假亂真的高分辨率人臉了!在本書中,我們將深入探究讓這一切成為可能的算法——GAN。
(來源:The Malicious Use of Arti?cial Intelligence: Forecasting, Prevention, and Mitigation, by Miles Brundage et al., 2018.)
圖1.1 人臉生成的進展
1.1 什么是GAN
GAN是一類由兩個同時訓練的模型組成的機器學習技術:一個是生成器,訓練其生成偽數據;另一個是鑒別器,訓練其從真實數據中識別偽數據。
生成(generative)一詞預示著模型的總目標——生成新數據。GAN通過學習生成的數據取決于所選擇的訓練集,例如,如果我們想用GAN合成一幅看起來像達?芬奇作品的畫作,就得用達?芬奇的作品作為訓練集。
對抗(adversarial)一詞則是指構成GAN框架的兩個動態博弈、競爭的模型:生成器和鑒別器。生成器的目標是生成與訓練集中的真實數據無法區分的偽數據——在剛才的示例中,這就意味著能夠創作出和達?芬奇畫作一樣的繪畫作品。鑒別器的目標是能辨別出哪些是來自訓練集的真實數據,哪些是來自生成器的偽數據。也就是說,鑒別器充當著藝術品鑒定專家的角色,評估被認為是達?芬奇畫作的作品的真實性。這兩個網絡不斷地“斗智斗勇”,試圖互相欺騙:生成器生成的偽數據越逼真,鑒別器辨別真偽的能力就要越強。
網絡(network)一詞表示最常用于生成器和鑒別器的一類機器學習模型:神經網絡。依據GAN實現的復雜程度,這些網絡包括從最簡單的前饋神經網絡(第3章)到卷積神經網絡(第4章)以及更為復雜的變體(如第9章的U-Net)。
1.2 GAN是如何工作的
支撐GAN的數學理論是較為復雜的(我們將在后面幾章中集中探討,特別是第3章和第5章),幸運的是,我們有許多現實世界的示例可以做類比,這樣能使GAN更容易理解。前面我們討論了一個藝術品偽造者(生成器)試圖愚弄藝術品鑒定專家(鑒別器)的示例。偽造者制作的假畫越逼真,鑒定專家就必須具有越強的辨別真偽的能力。反過來也是成立的:鑒定專家越善于判斷某幅畫是否是真的,偽造者就越要改進造假技術,以免被當場識破。
還有一個比喻經常用來形容GAN(Ian Goodfellow經常喜歡用的示例),假幣制造者(生成器)和試圖逮捕他的偵探(鑒別器)——假鈔看起來越真實,就需要越好的偵探才能辨別出它們,反之亦然。
用更專業的術語來說,生成器的目標是生成能最大程度有效捕捉訓練集特征的樣本,以至于生成出的樣本與訓練數據別無二致。生成器可以看作一個反向的對象識別模型——對象識別算法學習圖像中的模式,以期能夠識別圖像的內容。生成器不是去識別這些模式,而是要學會從頭開始學習創建它們,實際上,生成器的輸入通常不過是一個隨機數向量。
生成器通過從鑒別器的分類結果中接收反饋來不斷學習。鑒別器的目標是判斷一個特定的樣本是真的(來自訓練集)還是假的(由生成器生成)。因此,每當鑒別器“上當受騙”將假的圖像錯判為真實圖像時,生成器就會知道自己做得很好;相反,每當鑒別器正確地將生成器生成的假圖像辨別出來時,生成器就會收到需要繼續改進的反饋。
鑒別器也會不斷地改善,像其他分類器一樣,它會從預測標簽與真實標簽(真或假)之間的偏差中學習。所以隨著生成器能更好地生成更逼真的數據,鑒別器也能更好地辨別真假數據,兩個網絡都在同時不斷地改進著。
表1.1總結了GAN的兩個子網絡的關鍵信息。
表1.1 生成器和鑒別器的關鍵信息
1.3 GAN實戰
現在,你已經對GAN及其組成網絡有了一個大致的了解,接下來看一下系統的實際運行情況。假定我們的目標是教GAN生成逼真的手寫數字(第3章將實現這樣一個模型,并在第4章中對其進行擴展)。GAN的核心結構如圖1.2所示。
讓我們看看其中的細節。
(1)訓練數據集——包含真實樣本的數據集,是我們希望生成器能以近乎完美的質量去學習模仿的數據集。在這個示例中,數據集由手寫數字的圖像組成。該數據集用作鑒別器網絡的輸入。
圖1.2 兩個GAN子網及其輸入、輸出和交互
(2)隨機噪聲向量——生成器網絡的初始輸入。此輸入是一個由隨機數組成的向量,生成器將其用作合成偽樣本的起點。
(3)生成器網絡——生成器接收隨機數向量作為輸入并輸出偽樣本
。它的目標是生成和訓練數據集中的真實樣本別無二致的偽樣本。
(4)鑒別器網絡——鑒別器接收來自訓練集的真實樣本或生成器生成的偽樣本
作為輸入。對每個樣本,鑒別器會進行判定并輸出其為真實的概率。
(5)迭代訓練/調優——對于每個鑒別器的預測,我們會衡量它效果有多好——就像對常規的分類器一樣——并用結果反向傳播去迭代優化鑒別器網絡和生成器網絡。
更新鑒別器的權重和偏置,以最大化其分類的精確度(最大化正確預測的概率:為真,
為假)。
更新生成器的權重和偏置,以最大化鑒別器將誤判為真的概率。
1.3.1 GAN的訓練
了解各種GAN組件的用途可能像是在看搜索引擎的快照,除非我們看到它們是如何運作的,否則將無法完全理解。這就是本節的主要內容。我們首先介紹GAN的訓練算法,其次演示訓練過程,以便你可以清楚地看到實際的架構圖。
GAN訓練算法
對于每次訓練迭代,執行如下操作。
(1)訓練鑒別器。
a. 從訓練集中隨機抽取真實樣本。
b. 獲取一個新的隨機噪聲向量,用生成器網絡合成一個偽樣本
。
c. 用鑒別器網絡對和
進行分類。
d. 計算分類誤差并反向傳播總誤差以更新鑒別器的可訓練參數,尋求最小化分類誤差。
(2)訓練生成器。
a. 獲取一個新的隨機噪聲向量,用生成器網絡合成一個偽樣本
。
b. 用鑒別器網絡對進行分類。
c. 計算分類誤差并反向傳播以更新生成器的可訓練參數,尋求最大化鑒別器誤差。
結束
GAN訓練過程可視化
GAN的訓練算法如圖1.3所示,其中的字母表示GAN訓練算法中的步驟。
圖1.3 GAN訓練算法有兩個主要部分。訓練鑒別器和訓練生成器兩部分,在訓練過程的對應階段中描繪了同一個GAN網絡在不同時間點的狀態
子程序圖示說明
(1)訓練鑒別器。
a. 從訓練集中隨機抽取真實樣本。
b. 獲取一個新的隨機噪聲向量,用生成器網絡合成一個偽樣本
。
c. 用鑒別器網絡對和
進行分類。
d. 計算分類誤差并反向傳播總誤差以更新鑒別器的權重和偏置,尋求最小化分類誤差。
(2)訓練生成器。
a. 獲取一個新的隨機噪聲向量,用生成器網絡合成一個偽樣本
。
b. 用鑒別器網絡對進行分類。
c. 計算分類誤差并反向傳播以更新生成器的權重和偏差,尋求最大化鑒別器誤差。
1.3.2 達到平衡
你可能想知道GAN訓練循環何時停止,更準確地說,如何知道GAN何時能被完全訓練好,以便確定適當的訓練迭代次數?對于一般的神經網絡,我們通常有一個明確的目標去實現以及用來衡量效果。例如,當訓練一個分類器時,我們度量在訓練集和驗證集上的分類誤差,一旦發現驗證集誤差開始變壞,就停止進程(為了避免過度擬合)。在GAN結構中,鑒別器網絡和生成器網絡有兩個互為競爭對手的目標:一個網絡越好,另一個就越差。那么,我們如何決定何時停止進程呢?
熟悉博弈論的人可能會意識到這是一個零和博弈問題,即一方的收益等于另一方的損失。當一方提高一定程度時,另一方會惡化同樣的程度。零和博弈都有一個納什均衡點,那就是任何一方無論怎么努力都不能改善他們的處境或者結果。
當滿足以下條件時,GAN達到納什均衡。
(1)生成器生成的偽樣本與訓練集中的真實數據別無二致。
(2)鑒別器所能做的只是隨機猜測一個特定的樣本是真的還是假的(也就是說,猜測一個示例為真的概率是50%)。
注意
納什均衡是以美國經濟學家、數學家John Forbes Nash的名字命名的,他的生平事跡和職業生涯被收錄在一本名為《美麗心靈》(A Beautiful Mind)的傳記中,并被翻拍成同名電影。
讓我們來解釋為何會出現這種情況。當每一個偽樣本與來自訓練集的真實樣本無法區分時,鑒別器用任何手段都無法區分它們。因為鑒別器接收到的樣本有一半是真的,一半是假的,所以它所能做的最有用的事情就是拋硬幣,以50%的概率把每個樣本分為真和假。
同樣,生成器也處于這樣一個點上,它不能從進一步的調優中獲得任何提高了。因為生成器生成的樣本早已和真實樣本無法區分了,以至于對隨機噪聲向量轉換為偽樣本
的過程做出哪怕一丁點兒改變,也可能給鑒別器提供從真實樣本中辨別出偽樣本的機會,從而使生成器變得更糟。
當達到納什均衡時,GAN就被認為是收斂的。這是一個棘手的問題,在實踐中,由于在非凸博弈中實現收斂所涉及的巨大復雜性,幾乎不可能達到GAN的納什均衡(在后續的章節中,特別是第5章中,有更多關于收斂的內容)。實際上,GAN的收斂仍是GAN研究中最重要的開放性問題之一。
幸而這并沒有妨礙到GAN的研究,也沒有妨礙生成對抗學習的許多創新應用。即使在缺乏嚴格數學保證的情況下,GAN也取得了引人矚目的實證結果——本書涵蓋了一部分最具影響力的工作,下一節先介紹其中一些示例。
1.4 為什么要學GAN
自發明以來,GAN一直被學術界和工業界的專家們譽為“深度學習中最重要的創新之一”。Facebook的人工智能研究主管Yann LeCun甚至表示,GAN及其變體是“過去20年來深度學習中最酷的想法”。[2]
這種興奮是合情合理的。機器學習領域的其他進展可能在科研人員中人盡皆知,但對于門外漢來說,可能疑惑多于興奮,GAN激起了從研究人員到大眾的極大興趣——包括《紐約時報》、BBC、《科學美國人》以及許多其他知名媒體機構,甚至可能就是GAN的某項成果驅使你來購買這本書的呢。(對吧?)
最值得關注的可能是GAN創作超現實主義意象的能力。圖1.4所示的人臉都不是真人的,都是假的,這展示了 GAN 合成足以和真實照片以假亂真圖像的能力。這些人臉是用漸進式增長生成對抗網絡生成的,相關內容參見第6章。
(來源:Progressive Growing of GAN for Improved Quality, Stability and Variation,by Tero Karras et al., 2017.)
圖1.4 這些逼真但虛假的臉是由在高分辨率名人肖像照片集上訓練過的漸進GAN生成的
GAN另一個引人矚目的成就是圖像到圖像的轉換(image-to-image translation)。與把句子從漢語翻譯成西班牙語的方式類似,GAN可以將圖像從一種風格轉換為另一種風格。如圖1.5所示,GAN可以把馬的圖像轉換為斑馬的圖像,把一張照片變成莫奈的畫作,而這幾乎不需要任何監督,也不需要任何標簽。使這一切成為可能GAN的變體是循環一致性生成對抗網絡(CycleGAN),相關內容參見第9章。
更實用些的GAN應用同樣令人著迷。在線零售的巨頭亞馬遜(Amazon)嘗試利用GAN提供時尚建議:通過分析無數的搭配,系統能學會生成符合給定的任意風格的新產品。[3] 在醫學研究中,GAN通過合成樣本增強數據集,以提高診斷準確率。[4] 在掌握了訓練GAN及其變體的細節之后,我們將在第11章詳細地探討這兩個應用。
(來源:Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks, by Jun-Yan Zhu et al., 2017.)
圖1.5 通過使用名為CycleGAN的GAN變體,可以將莫奈的畫作變成照片,或將圖片中的斑馬變成馬;反之亦然
GAN也被視為實現通用人工智能[5]的重要基石。它是一種能夠匹敵人類認知能力的人工系統,能獲取幾乎任何領域的專業知識——從走路所需的運動技能到語言表達技能,甚至于寫詩所需的創作技能。
然而,擁有生成新數據和新圖像的能力使得GAN有時也會很危險。關于假新聞的傳播及其危險性已經是老生常談,GAN生成可信假視頻的能力也令人不安。在2018年一篇關于GAN的文章的結尾處——這篇文章的標題很貼切“如何成為一個人工智能”——《紐約時報》記者 Cade Metz和Keith Collins談到了令人擔憂的前景:GAN可能被用來制造和傳播易使人輕信的錯誤信息,比如虛假的世界各國領導人發表聲明的視頻片段。《麻省理工學院科技評論》舊金山分社社長Martin Giles也表達了他的擔憂,他在2018年發表的《GAN之父:賦予機器想象力的人》一文中提到,在技術嫻熟的黑客手中,GAN可能會以前所未有的規模被用來探索和利用系統漏洞。這些憂慮促使我們討論GAN的應用在道德倫理上的考量(第12章)。
GAN可以為世界帶來許多好處,但是任何技術創新都是一把雙刃劍。對此,我們必須懷有一種哲學意識:“除掉”一種技術是不可能的,所以確保像你這樣的人了解這項技術的迅速崛起及其巨大的潛力是很重要的。
本書也僅能觸及應用GAN可實現功能的一些皮毛,但是,我們希望這本書能夠為你提供必要的理論知識和實踐技能,使你能夠繼續從各個方面探索自己最感興趣的領域。
事不宜遲,讓我們開始吧!
1.5 小結
(1)GAN 是一種利用兩個神經網絡之間的動態競爭來合成真實數據樣本的深度學習技術,例如能合成具有照片級真實感的虛假圖像。構成一個完整GAN的兩個網絡如下:
生成器,其目標是通過生成與訓練數據集別無二致的數據來欺騙鑒別器;
鑒別器,其目標是正確區分來自訓練數據集的真實數據和由生成器生成的偽數據。
(2)目前,GAN在許多不同的領域都有著廣泛的應用,如時尚、醫藥和網絡安全等。
[1] 見Surpassing Human-Level Face Verification Performance on LFW with GaussianFace, by Chaochao Lu and Xiaoou Tang, 2014. 另見《紐約時報》文章GoogleTang, 2014Level Fs Chinese Go Master in Win for A.I.,by Paul Mozur, 2017.
[2] 見GoogleMozur, 2017Level Fs Chinese Go Master in Win f, by Cade Metz, Wired, 2017.
[3] Amazon Has Developed an AI Fashion Designer, by Will Knight, MIT Technology Review, 2017.
[4] Synthetic Data Augmentation Using GAN for Improved Liver Lesion Classification, by Maayan Frid-Adar, et al., 2018.
[5] OpenAI Founder: Short-Term AGI Is a Serious Possibility, by Tony Peng, Synced, 2018. 另見A Path to Unsupervised Learning Through Adversarial Networks, by Soumith Chintala,f Code, 2016.
- 工業機器人虛擬仿真實例教程:KUKA.Sim Pro(全彩版)
- TestStand工業自動化測試管理(典藏版)
- Dreamweaver CS3網頁設計50例
- 教父母學會上網
- MCSA Windows Server 2016 Certification Guide:Exam 70-741
- 計算機圖形圖像處理:Photoshop CS3
- 21天學通Java
- 大型數據庫管理系統技術、應用與實例分析:SQL Server 2005
- 21天學通Visual Basic
- 運動控制器與交流伺服系統的調試和應用
- 精通數據科學算法
- PostgreSQL 10 Administration Cookbook
- 筆記本電腦維修90個精選實例
- HTML5 Canvas Cookbook
- 簡明學中文版Photoshop