當前位置:
首頁 > 知識 > 生成對抗網路入門指南

生成對抗網路入門指南

生成對抗網路(GAN)是由兩個相互競爭的網路組成的深度神經網路架構。

2014年,Lan Goodfellow和蒙特利爾大學包括Yoshua Bengio在內的其它研究人員在論文中介紹了生成對抗網路。Facebook的AI研究主管Yann LeCun稱對抗訓練是「近10年來最有趣的機器學習(ML)」

生成對抗網路具有很大的潛力,因為它們可以學習模擬任何數據的分布。換句話說,在任何領域,我們都可以教生成對抗網路創造出與我們類似的世界:圖像,音樂,演說,散文。從某種意義上來說,它們是機器人藝術家,能夠創造出令人印象深刻甚至是傷感的東西。

生成演算法和判別演算法

為了理解生成對抗網路,首先應該了解生成演算法的是如何工作的,為此,現將生成演算法和判別演算法進行對比以便更好的理解。判別演算法試圖對輸入數據進行分類:即給定一個數據實例的特徵,來預測該數據所屬的標註或類別。

例如:給定一封電子郵件的所有單詞,判別演算法能夠預測該郵件是否為垃圾郵件。垃圾郵件是其中的一種標註,從郵件中收集到的單詞則構成了輸入數據的特徵。用數學表達式表述這一問題,y表示標註,x表示特徵,公式p(y|x)表示「給定x,y的概率」,則該事件可描述為「給定郵件中所包含的單詞,郵件為垃圾郵件的概率」。因此,判別演算法將特徵映射到標註,只關注二者之間的相關性。

一種理解生成演算法的方式是,生成演算法做相反的事情。生成演算法並不預測給定特徵的標註,而是試圖預測給定標註的特徵。

生成演算法試圖解決的問題是:假設這封電子郵件為垃圾郵件,它的特徵可能是什麼?判別模型關注y和x之間的關係,而生成模型關注的是如何得到x。這允許你得到p(x|y),即給定y,x的概率或給定一個類,特徵的概率。(也就是說,生成演算法可用作分類器,只不過它不僅僅只是對輸入數據進行分類)。

另一種區分判別模型和生成模型的理解方式是:判別模型學習類間的邊界,而生成模型模擬各個類的分布。


生成對抗網路是如何運行的?

生成器,是一個用來生成新的數據實例的神經網路;判別器,則是用來評估其真實性的神經網路。即判別器決定它所檢驗的每個數據實例是否屬於實際的訓練數據集。

比方說,我們試圖做一些比仿製蒙娜麗莎更平庸的工作。我們從現實世界中獲取並生成那些類似在MINST數據集中發現的手寫數字,當顯示來自真實MINST數據集中的實例時,判別器將其識別為可信。

同時,生成器創建傳送給判別器的新圖像。即便這是假的,我們也視為將其視為真。生成器的目標是生成像樣的手寫數字,假裝不會被發現。判別器的目標是識別生成器中的圖像是假的。

生成對抗網路的運行步驟如下:

1.生成器輸入一系列隨機數字並返回一張圖像。

2.將生成的圖像和真實數據集中的圖像流一起送入判別器。

3.判別器接受真實圖像和假圖像,並返回概率值,範圍是0~1之間的數字,其中1表示真實性的預測,0表示假的預測。

因此,得到一個雙反饋迴路:判別器在包含圖像真相的反饋迴路中;發生器在在判別器的反饋迴路中。

生成對抗網路入門指南

你可以將生成對抗網路想像成一個偽造者和一個警察在貓和老鼠遊戲中的組合,在這裡,偽造者正在學習虛假注釋,警察正在學習檢測他們。二者都是動態的,也就是說警察也在訓練中,並且每一方都在不斷升級中學習對方的方法。

判別器網路是一個可對輸入圖像進行分類的標準卷積網路——將圖像標記為真或假的一個二值分類器。從某種意義上來說,生成器是一個反向卷積網路:標準卷積分類器獲取一張圖像,採樣並輸出概率,而生成器則獲取隨機雜訊矢量並將其上採樣到一張圖像中。前者使用maxpooling這樣的下採樣技術扔掉數據,後者生成新的數據。

兩個網路都試圖在零和博奕中優化一個不同且對立的目標函數,或者是損失函數。它本質上就是一個演員-評論模型。隨著判別器改變行為,生成器也隨之改變,反之亦然。他們的損耗也相互抗衡。


生成對抗網路:自動編碼器和變分自編碼器(VAE)

自動編碼器將輸入數據編碼為矢量,創建一個隱藏或壓縮的原始數據representation,主要用於降維。也就是說,用作隱藏representation的矢量將原始數據壓縮為一個較小的主要緯度。自動編碼器可以和解碼器配對,可根據其隱藏representation重建輸入數據,這和受限玻爾茲曼機相同。

生成對抗網路入門指南

變分自編碼器是生成演算法,在對輸入數據編碼的過程中增加了額外約束,即將隱藏表示進行標準化。變分自編碼器既可以像自動編碼器一樣壓縮數據,又可以像生成對抗網路那樣合成數據。然而當生成對抗網路生成細節數據時,變分自編碼器生成的圖像往往更加模糊。Deeplearning4j』s包中包括自動編碼器和變分自編碼器。

生成演算法可分為以下三種類型:

1.給定一個標註,預測相關的特徵(樸素貝葉斯)。

2.給定一個隱藏表示,預測相關特徵(變分自編碼器,生成對抗網路)。

3.給定一些特徵,預測其餘特徵(圖像修復,圖像插補)。


訓練生成對抗網路的技巧

訓練判別器時,保持生成器的值不變;訓練生成器時,則保持判別器不變。比如:這可以讓生成器更好的讀取它必須學習的梯度變化。同樣的道理,在開始訓練生成器前,對用於MINST數據集的判別器先進行預訓練,可以建立一個更佳清晰的梯度。

生成對抗網路的每一方都可以壓制另一方。若判別器太好,返回接近0或1的值,發生器將難以讀取梯度;若生成器太好,它將不斷利用判別器的弱點導致漏報。這可以通過各自的學習率來減輕這種壓制。

注意: Maven 上的Deeplearning4j』s最新版本不包括生成對抗網路,但很快就可以通過自動分化和模型導入來構建和使用,目前這些都可以在Github上額主存儲庫中獲得。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲棲社區 的精彩文章:

六年打怪升級,一路披荊斬棘,只為沒有難用的Node.js

TAG:雲棲社區 |