參考博客:https://blog.csdn.net/stalbo/article/details/79283399
0、摘要
GAN提出了一個通過對抗過程估計生成模型的新框架,在新框架中同時訓練兩個模型:一個用來捕獲數據分布的生成模型G,和一個用來估計樣本來自訓練數據而不是G的概率的判別模型D,G的訓練過程是最大化D產生錯誤的概率。這個框架相當於一個極小極大化的雙方博弈。在任意函數G 和D 的空間中存在唯一的解,其中G恢復訓練數據分布,並且D處處都等於1/2 。 在G和D 由多層感知器定義的情況下,整個系統可以用反向傳播進行訓練。在訓練或生成樣本期間不需要任何馬爾科夫鏈或展開的近似推理網路。 實驗通過對生成的樣品進行定性和定量評估來展示這個框架的潛力。
符號說明:
→真實數據(groundtruth)
→真實數據的分布
→噪音(輸入數據)
→原始噪音的分布
→經過生成器後的數據分布
→生成映射函數,
代表生成器,結構為一個多層感知機,參數為
,
為生成映射函數,將噪音 z映射到新的數據空間。
→判別映射函數, 代表判別器,也是一個多層感知機,參數為 , 輸出為一個標量,表示 x來自真實數據而不是生成數據的概率。
1、介紹
深度學習的任務是尋找豐富的層次模型,能夠在人工智慧領域裡用來表達各種數據的概率分布,例如自然圖像,包含語音的音頻波形和自然語言語料庫中的符號等。到目前為止,在深度學習領域,目前為止最成功的模型之一就是判別式模型,通常它們將高維豐富的特徵表示輸入映射到類別標籤上。這些顯著的成功主要是基於反向傳播和丟棄(dropout)演算法來實現的,特別是具有特別良好梯度的分段線性單元。由於在最大似然估計和相關策略中出現的許多難以解決的概率計算的困難,以及很難利用在生成上下文中時使用分段線性單元的好處,深度生成模型的影響很小。我們提出一個新的生成模型估計程序,來分步處理這些難題。
在提到的對抗網路框架中,生成模型對抗著一個對手:一個學習去判別一個樣本是來自模型分布還是數據分布的判別模型。生成模型可以被認為是一個偽造團隊,試圖產生假貨並在不被發現的情況下使用它,而判別模型類似於警察,試圖檢測假幣。在這個遊戲中的競爭驅使兩個團隊改進他們的方法,直到真假難分為止。
這個框架可以針對多種模型和優化演算法提供特定的訓練演算法。在這篇文章中,我們探討了生成模型通過將隨機雜訊傳輸到多層感知機來生成樣本的特例,同時判別模型也是通過多層感知機實現的。我們稱這個特例為對抗網路。在這種情況下,我們可以僅使用非常成熟的反向傳播和丟棄演算法訓練兩個模型,生成模型在生成樣本時只使用前向傳播演算法。並且不需要近似推理和馬爾可夫鏈作為前題。
2、相關工作
含隱變數的有向圖模型可以由含隱變數的無向圖模型替代,例如受限制波茲曼機(RBM),深度波茲曼機(DBM)和它們很多的變種。這些模型之間的相互影響可以被表達為非標準化的勢函數的乘積,再通過隨機變數的所有狀態的全局整合來標準化。這個數量(配分函數)和它的梯度的估算是很棘手的,儘管他們能夠依靠馬爾可夫鏈和蒙特卡羅(MCMC)演算法來估計,同時依靠MCMC演算法的混合也會引發一個嚴重的問題。
深度信念網路(DBN)是一個包含一個無向層和若干有向層的混合模型。當使用一個快速逐層訓練法則時,DBNS 會引發無向模型和有向模型相關的計算難題。
不是利用似然函數的估計或約數的選擇準則已經被提出來了,例如分數匹配和噪音壓縮評估(NCE)。他們都需要知道先驗概率密度知識用來分析指定一個規範化的常量。請注意,許多有趣的帶有一些隱層變數的生成模型(如DBN和DBM),它們甚至不需要一些難以處理的非標準化的概率密度先驗知識。一些模型如自動編碼降噪機和壓縮編碼的學習準則與分數匹配在RBM上的應用非常相似。在NCE中,使用一個判別訓練準則來擬合一個生成模型。然而,生成模型常常被用來判別從一個固定噪音分布中抽樣生成的數據,而不是擬合一個獨立的判別模型。由於NCE使用一個固定的噪音分布,僅僅是從觀測變數的一個小子集中學習到一個大致正確的分布後,模型的學習便急劇減慢。
最後,一些技術並沒有用來明確定義概率分布,而是用來訓練一個生成器來從期望的分布中擬合出樣本。這個方法優勢在於這些機器學習演算法能夠設計使用反向傳播演算法訓練。這個領域最近比較突出的工作包含生成隨機網路(GSN),它擴展了廣義的除噪自動編碼器:兩者都可以看作是定義了一個參數化的馬爾可夫鏈,即一個通過執行生成馬爾科夫鏈的一個步驟來學習機器參數的演算法。同GSNs相比,對抗網路不需要使用馬爾可夫鏈來採樣。由於對抗網路在生成階段不需要循環反饋信息,它們能夠更好的利用分段線性單元,這可以提高反向傳播的效率。大部分利用反向傳播演算法來訓練生成器的例子包括貝葉斯變分自動編碼和隨機反向傳播。
3、對抗網路
當模型是多層感知器時,對抗模型框架是最直接應用的。為了學習生成器關於數據x 上的分布 ,我們定義輸入雜訊的先驗變數 ,然後使用 來代表數據空間的映射。這裡G是一個由含有參數 的多層感知機表示的可微函數。我們再定義了一個多層感知機 用來輸出一個單獨的標量。 代x來自於真實數據分布而不是 的概率,我們訓練D來最大化分配正確標籤給不管是來自於訓練樣例還是G生成的樣例的概率。我們同時訓練G來最小化 。換句話說,D和G的訓練是關於值函數 的極小化極大的二人博弈問題: