日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Generative Adversarial Networks 生成对抗网络的简单理解

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Generative Adversarial Networks 生成对抗网络的简单理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 引言

在對抗網絡中,生成模型與判別相競爭,判別模型通過學習確定樣本是來自生成模型分布還是原始數據分布。生成模型可以被認為是類似于一組偽造者,試圖產生假幣并在沒有檢測的情況下使用它,而判別模型類似于警察,試圖檢測假幣。 在這個游戲中的競爭驅動兩個團隊改進他們的方法,直到假冒與真正的物品難以分別。

生成模型和判別模型對抗的結果是,兩者都提升了自己的能力。生成模型提高了模擬原始數據分布的能力,判別模型提高了分辨的能力。

GAN之所以叫生成對抗網絡,是因為判別模型和生成模型都是用的神經網絡模型,如果選擇其他模型的話,可能就要叫GAXX了


2. 生成模型

2.1 GAN是生成模型的一種

“生成模型”表示任何一種可以接受訓練集(從一個分布p_{data}p?data???采樣的樣本)學會表示該分布的估計的模型。其結果是一個概率分布p_{model}p?model??。有些時候,模型會顯式地估計p_{model}p?model??,比如說圖上半部分所示。還有些時候,模型只能從?p_{model}p?model???中生成樣本,比如說圖下半部分。有些模型能夠同時這兩件事情。雖說 GANs 經過設計可以做到這兩點,我們這里把精力放在 GANs 樣本生成上。

  • 作者雖然說GANs可以都做,但是現在的應用一般都是在樣本生成上
  • 關于判別模型和生成模型的區別,請參考《統計學習方法》第17-18頁

2.2 GAN與其他生成模型的對比

上圖是作者將要與GAN比較的集中生成模型

GANs是針對其他生成式模型的缺點進行設計的:

作者原話:GANs were designed to avoid many disadvantages associated with other generative models,相當直白,毫不客氣

  • 相對于FVBN,可以并行生成樣本,而不是隨 x 的維度變化的運行時間。
  • 相對于玻爾茨曼機,生成器函數的設計只有很少的限制。在玻爾茨曼機中,只有很少概率分布能夠給出易解的 Markov chain 采樣。而非線性ICA中生成器必須是可逆的而且隱含編碼 z 必須要和樣本 x 有著同樣的維度。
  • 相對于玻爾茨曼機和GSNs,不需要 Markov chain。
  • 不需要有變分界,在 GANs 框架中可用的特定模型族已經證實是通用近似子,所以 GANs 其實是漸進一致的。某些 VAEs 被猜想是漸進一致的,但還沒有被證實。
  • 主觀上判斷 GANs 能夠產生比其他方法更好的樣本。(僅僅是主觀,ian 本人也說,這事兒沒法衡量什么是「好」或「不好」)
  • 同時,GANs 也有新的缺點,訓練 GANs 需要找到博弈的 Nash 均衡,這個其實是一個比優化目標函數更加困難的問題。

3. 生成對抗網絡

GANs 的基本思想是設置兩個參與人的博弈。其中一個是生成器(generator)。生成器的目的產生來自和訓練樣本一樣的分布的樣本(制作跟真幣一樣的假幣)。另外一個判別器(discriminator)。判別器檢查這些樣本來確定他們是真實的還是偽造的(識別真幣和假幣)。判別器使用傳統的監督學習技術進行訓練,將輸入分成兩類(真實的或者偽造的)。生成器訓練的目標就是欺騙判別器。

博弈中的兩個參與人由兩個函數表示,每個都是關于輸入和參數可微分的。判別器是一個以 x (真實數據)作為輸入和使用?\theta^{(D)}θ?(D)???為參數的函數DD?定義。生成器由一個以 z(噪音數據即假數據) 為輸入使用\theta^{(G)}θ?(G)???為參數的函數?GG?定義。

雙方的?cost functioncostfunction都有雙方定義的參數。判別器希望僅控制住?\theta^{(D)}θ?(D)???情形下最小化?J^{(D)}(\theta^{(D)}, \theta^{(G)})J?(D)??(θ?(D)??,θ?(G)??)。生成器希望在僅控制?\theta^{(D)}θ?(D)???情形下最小化?J^{(G)}(\theta^{(D)}, \theta^{(G)})J?(G)??(θ?(D)??,θ?(G)??)。因為每個人的cost functioncostfunction都依賴于另一個人的參數,但是每個人都不能控制別人的參數,這個場景其實更為接近一個博弈而非優化問題。優化問題的解是一個局部最小,而一個博弈的解是一個納什均衡。在這樣的設定下,Nash 均衡是一個元組,(\theta^{(D)}, \theta^{(G)})(θ?(D)??,θ?(G)??)?既是關于?\theta^{(D)}θ?(D)??的?J^{(D)}J?(D)???的局部最小值和也是關于\theta^{(G)}θ?(G)??的?J^{(G)}J?(G)???局部最小值。

3.1 生成模型

生成器是一個可微分函數GG。當zz?從某個簡單的先驗分布中采樣出來時,G(z)G(z)?產生一個從?p<em>{model}</em>p<em>model</em>?中的樣本?xx。一般來說,深度神經網絡可以用來表示?GG。注意函數?GG?的輸入不需要和深度神經網絡的第一層的輸入相同;輸入可能放在網絡的任何地方。例如,我們可以將zz?劃分成兩個向量?z(1)z(1)?和?z(2)z(2),然后讓?z(1)z(1)?作為神經網絡的第一層的輸入,將?z(2)z(2)?作為神經網絡的最后一層的輸入。如果?z(2)z(2)?是 Gaussian,這就使得?xx?成為z(1)z(1)?條件高斯。另外一個流行的策略是將噪聲加到或者乘到隱含層或者將噪聲拼接到神經網絡的隱含層上。總之,我們看到其實對于生成式網絡只有很少的限制。如果我們希望?pp{model} 是?xx?空間的支集(support),我們需要 z 的維度需要至少和?xx的維度一樣大,而且?GG?必須是可微分的,但是這些其實就是僅有的要求了。特別地,注意到使用非線性 ICA 方法的任何模型都可以成為一個 GAN 生成器網絡。GANs 和變分自編碼器的關系更加復雜一點;一方面 GAN 框架可以訓練一些 VAE 不能的訓練模型,反之亦然,但是兩個框架也有很大的重合部分。 最為顯著的差異是,如果采用標準的反向傳播,VAEs 不能在生成器輸入有離散變量,而?GANs 不能夠在生成器的輸出層有離散變量。

3.2 訓練過程

訓練過程包含同時隨機梯度下降 simultaneous SGD。在每一步,會采樣兩個 minibatch:一個來自數據集的xx?的 minibatch 和一個從隱含變量的模型先驗采樣的zz的 minibatch。然后兩個梯度步驟同時進行:一個更新?來降低?J(D),另一個更新?θ^(G)?來降低?J(G)。這兩個步驟都可以使用你選擇的基于梯度的優化算法。 Adam (Kingmaand Ba, 2014) 通常是一個好的選擇。

很多作者推薦其中某個參與人運行更多步驟(包括14年的文章上,算法過程在上圖),但是在 2016 年的年末,觀點是最好的機制就是同時梯度下降,每個參與人都是一步。

下面這張圖可能更加容易理解訓練過程

訓練對抗的生成網絡時,同時更新判別分布(D,藍色虛線)使D能區分數據生成分布px(黑色虛線)中的樣本和生成分布?p_g?(G,綠色實線) 中的樣本。下面的水平線為均勻采樣z的區域,上面的水平線為x的部分區域。朝上的箭頭顯示映射x=G(z)如何將非均勻分布p_g作用在轉換后的樣本上。G在pg高密度區域收縮,且在pg的低密度區域擴散。(a)考慮一個接近收斂的對抗的模型對:p_gp{data}相似,且D是個部分準確的分類器。(b)算法的內循環中,訓練D來判別數據中的樣本,收斂到:D^?(x)={p{data}(x)} \over {p{data}(x)+pg(x)}。(c)在G的1次更新后,D的梯度引導G(z)流向更可能分類為數據的區域。(d)訓練若干步后,如果G和D性能足夠,它們接近某個穩定點并都無法繼續提高性能,因為此時p_g=p{data}。判別器將無法區分訓練數據分布和生成數據分布,即D(x)=1 \over 2


3.3 cost function

目前為 GANs 設計的所有不同的博弈針對判別器?J(D)?使用了同樣的代價函數。他們僅僅是生成器?J(G)?的代價函數不同。

3.3.1 判別模型 cost function



其實就是標準的訓練一個 sigmoid 輸出的標準的二分類器交叉熵代價。唯一的不同就是分類器在兩個 minibatch 的數據上進行訓練;一個來自數據集(其中的標簽均是 1),另一個來自生成器(其標簽均是 0)。

GAN 博弈的所有版本都期望判別器能夠最小化(8)式。所有情況下,判別器有同樣最優策略。

3.3.2生成模型 cost function

- Minimax

最簡單的博弈版本是零和博弈,其中所有參與人的代價總是 0。在這個版本的博弈中

- 啟發式,非飽和博弈

在 minimax 博弈中用在生成器上的代價對理論分析很有用但是在實踐中表現很糟糕。

最小化目標類和分類器預測的分布的交叉熵是很高效的,因為代價不會在分類器有錯誤的輸出的時候飽和。最終代價會飽和到\theta,但是僅僅是在分類器選擇了正確的類標的情況下。

在 minimax 博弈中,判別器最小化交叉熵,但是生成器是最大化同一個交叉熵。這對于生成器是不利的,因為判別器成功地以高置信度反對生成器產生的樣本時,生成器的梯度會消失。

為了解決這個問題,一種方式是繼續使用交叉熵來最小化生成器。不過我們不是去改變判別器代價函數的正負號來獲得生成器的代價。我們是將用來構造交叉熵代價的目標的正負號。所以,生成器的代價函數就是:

-最大似然博弈

我們可能能夠使用 GANs 進行最大似然學習,這就意味著可以最小化數據和模型之間的 KL 散度

有很多中方式能夠使用 GAN 框架來近似(4)式:


上述不同損失函數的比較:


3.4 缺點

最大的缺點就是訓練困難,導致無法收斂和模式崩潰

現在 GAN 面臨的最大問題就是不穩定,很多情況下都無法收斂(non-convergence)。原因是我們使用的優化方法很容易只找到一個局部最優點,而不是全局最優點。或者,有些算法根本就沒法收斂。

模式崩潰(mode collapse)就是一種無法收斂的情況,這在 Ian 2014 年的首篇論文中就被提及了。比如,對于一個最小最大博弈的問題,我們把最小(min)還是最大(max)放在內循環?minmax V(G,D) 不等于 maxmin V(G,D)。如果 maxD 放在內圈,算法可以收斂到應該有的位置,如果 minG 放在內圈,算法就會一股腦地撲向其中一個聚集區,而不會看到全局分布

不過值得慶幸的是,現在已經有算法解決這些問題,這也是2016年GAN才火的一個原因吧

4. 后續發展

github上有人總結的GAN的文章:AdversarialNetsPapers

5. 參考

Generative Adversarial Nets

NIPS 2016 Tutorial: Generative Adversarial Networks

GAN之父NIPS 2016演講現場直擊:全方位解讀生成對抗網絡的原理及未來


原文地址: http://www.datalearner.com/blog/1051488206986609

總結

以上是生活随笔為你收集整理的Generative Adversarial Networks 生成对抗网络的简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。