1. 程式人生 > >生成式對抗網路GAN-入門篇

生成式對抗網路GAN-入門篇

生成式對抗網路GAN-入門篇

近年來,GAN逐漸成為了最熱門的神經網路框架。在閱讀了若干篇關於GAN的文章後,希望用盡量通俗易懂的語言對GAN的基本工作原理,最優解推導,訓練方法,存在的問題以及應用做一個簡單的總結並與大家交流,可作為GAN的一個入門參考。

1 寫在GAN之前

生成模型和判別模型是機器學習領域的兩個重要內容。判別模型是通過尋找不同類別資料之間的分介面來實現資料的分類;而生成模型則通過是估計資料的分佈來生成新的資料,當然也可以用於分類。生成模型的構建方法可以大致分為兩類,即顯示地估計樣本分佈和隱式地估計樣本分佈[1],也人有將其稱為從人理解資料的角度建模和從機器理解資料的角度建模[2]。

樣本分佈的顯示估計一般包括分佈假設和引數學習,首先根據對資料的分析人為地假設資料服從某種分佈形式,然後通過極大似然估計等方法選擇令樣本資料似然度最大的分佈引數,即選擇最可能產生所有訓練樣本的分佈。如圖1所示,通過顯示地估計資料樣本的分佈,可以將樣本分佈顯示地表達成人類可以理解的分佈形式。

樣本分佈的隱式估計則不需要假設資料的分佈形式,如圖2所示,直接根據所採集的樣本資料訓練生成模型,機器將根據自己對於資料的理解建立生成模型併產生新的資料。這樣得到的生成模型無法對於樣本的分佈進行顯示地表達,對於人類來說不具有可解釋性,但是它所產生的樣本確實人類可以理解的。在GAN提出之前,這種方法一般需要使用馬爾科夫鏈進行模型訓練,效率較低。


Explicit Estimation
圖1:樣本分佈的顯示估計。(圖片來源:Goodfellow. (2016)[1])


Implicit Estimation
圖2:樣本分佈的隱式估計。(圖片來源:Goodfellow. (2016)[1])

2 什麼是GAN

2.1 GAN的基本思想

生成對抗網路GAN(Generative Adversarial networks)是受了博弈論的啟發,目的是希望通過對抗學習,有效地估計樣本資料的真實分佈 pdata 。GAN由兩個互相博弈的生成模型 G 和判別模型 D

組成,其中,生成模型 G 需要儘可能地估計樣本的真實分佈,並據此產生新的樣本,而判別模型 G 需要儘可能地區分出樣本是來自真實分佈還是生成模型。在博弈的過程中,兩個模型通過交替地學習,相互博弈,不斷地提高自己的生成和判別能力,當判別模型的能力提高到一定程度,且無法正確區分樣本的來源時,可以認為生成模型已習得了樣本的真實分佈,此時也達到了博弈的一個均衡點。

舉例來說,GAN中判別模型和生成模型之間的博弈可以看成是警察和假幣制造者之間的博弈。生成模型就好比是一個假幣制作者,希望通過製造高仿的假幣從中獲利。而判別模型就好比是警察,能夠專業地判斷是紙幣的真假。警察的判別能力和假幣制造者的造假能力都在雙方的博弈中不斷提高,而當假幣制造者製造的假幣能夠跟真的一模一樣時,警察也就無法再分別真假了。

2.2 GAN的計算框架

如圖3,判別模型 D 同時接受真實樣本 x (真樣本,標註為1)和生成模型產生的樣本 G(z) (假樣本,標註為0),判別模型要儘可能地判別出樣本的真偽;生成模型 G 的輸入為隨機變數 z ,表示的是從隨機變數到近似樣本空間 pg 的一種對映,儘可能地產生符合真實資料分佈的樣本 G(z) ;根據判別模型的判別結果和樣本的真實情況,對於判別模型和生成模型進行迭代更新。


Computationnal Framework
圖3: GAN的計算框架.(圖片來源:WANG Kun-Feng et al.(2017)[2])

2.3 GAN的目標函式

2.3.1 判別模型的目標函式

在GAN中,判別模型 D 是一個二分類器,要儘可能地將真樣本(源於真實資料)判為1,將偽樣本(由生成模型產生)判為0,因此,可得目標函式如下:

max  J(D)(θD,θG)Expdata[logD(x)]+Ezpz(z)[log(1D(G(z)))]

其中, x 為源於真實資料分佈 pdata 的真樣本, z 為源於先驗分佈 p(z) 的隨機噪聲, G(z) 為生成模型產生的偽樣本,判別模型 D 要儘可能地令 D(x)=1,D(G(x))=0 .

2.3.2 最小最大博弈問題

生成模型則要儘可能地逼近真實的資料分佈,令產生的偽樣本更接近真樣本以騙過判別器,因此可以假設生成模型和判別模型之間為零和博弈,令兩者的目標函式正好相反,形式如下:

max  J(G),J(G)=J(D)

 min  J(G),J(G)=J(D)

因此,也可以得到GAN的整體目標函式,將GAN問題表示生成如下的極小-極大優化問題:

minθG maxθDJ(D,G)Expdata[logD(x)]+Ezpz(z)[log(1D(G(z)))]

2.3.3 非飽和博弈

但是,在實際應用中採用最小最大問題博弈問題得到的目標函式的效果並不夠好。在最小最大博弈問題中,判別模型要最大化目標函式,生成模型要最小化目標函式,但是當判別函式以較高的置信度拒絕了由生成模型產生的樣本時,生成模型的更新梯度將很小,對於生成模型的訓練存在梯度消失的情況,具體分析如下:

因為在最小最大博弈中,生成模型的目標函式為:

min J(G)Expdata[logD(x)]+Ezpz(z)[log(1D(G(z)))]

在更新G時第一項為常數,當判別函式以較高的置信度否定了由生成模型產生的樣本即 D(G(z) 為較小值(接近0)時, log(1D(G(z))) 關於 D 的導數為1,因此 J(G)θG 較小,容易產生梯度消失,則導致生成模型無法得到有效的學習。為了解決這種梯度消失的情況,可以定義新的生成模型的目標函式如下:

JG=12EzlogD(G(z))

此時,當判別函式以較高的置信度否定了由生成模型產生的樣本即 D(G(z) 為較小值(接近0)時, log(D(G(z))) 關於 D 的導數也為較大值(接近 ),可以保證生成模型得到有效的學習。

非飽和博弈可以保證當生成模型 G 在博弈中處於劣勢時,仍能夠得到較大梯度和充分的學習,彌補了最小最大博弈中的不足。

2.4 GAN的最優解

可證明GAN具有唯一的全域性最優解 pg=pdata

  1. 首先證明,當生成模型 G 固定時,最優的判別模型為:

    相關推薦

    生成對抗網路GAN-入門

    生成式對抗網路GAN-入門篇 近年來,GAN逐漸成為了最熱門的神經網路框架。在閱讀了若干篇關於GAN的文章後,希望用盡量通俗易懂的語言對GAN的基本工作原理,最優解推導,訓練方法,存在的問題以及應用做一個簡單的總結並與大家交流,可作為GAN的一個入門參考。

    生成對抗網路(GAN)綜述——粗淺入門

    第一頁今天我要給大家介紹的是GAN(GenerativeAdversarial Networks)生成式對抗網路的研究進展與展望,GAN是一個比較新的生成模型方法,在2014年由Hinton的博士生lan Goodfellow提出,隨後關於GAN的改進型在學術界研究的如火如荼

    深度學習-54:生成對抗網路GAN(原理、模型和演進)

    深度學習-52:生成式對抗網路GAN(原理、模型和演進) 一般的學習模型都是基於一個假設的隨機分佈,然後通過訓練真實資料來擬合出模型。網路模型複雜並且資料集規模也不小,這種方法簡直就是憑藉天生蠻力解決問題。Goodfellow認為正確使用資料的方式,先對資料集

    到底什麼是生成對抗網路 GAN

    到底什麼是生成式對抗網路 GAN? 先來看一下 百度百科-GAN 的解釋 生成式對抗網路(GAN, Generative Adversarial Networks )是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的方法之一。 模型通過框架中(至少)兩個模組:生成模型

    生成對抗網路GAN研究進展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN

    【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

    生成對抗網路GAN彙總

    關於生成式對抗學習(Generative Adversarial Network, GAN)相關文章的閱讀整理以及資源彙總。 文章: Generative Adversarial Nets (20

    生成對抗網路GAN研究進展(二)——原始GAN

    【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

    生成對抗網路GAN研究進展(四)——Laplacian Pyramid of Adversarial Networks,LAPGAN

    【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

    生成對抗網路GAN研究進展(一)

    【前言】     本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文

    生成對抗網路GAN)如何快速理解?這裡有一最直觀的解讀

    原文來源:freeCodeCamp作者:Thalles Silva「雷克世界」編譯:嗯~阿童木呀

    生成對抗網路GAN

       生成對抗網路(GAN),是深度學習模型之一,2014年lan Goodfellow的開篇之作Generative Adversarial Network, GAN概述   GAN包括兩個模型,一個是生成模型(generative model),一個

    GAN (生成對抗網路) (一): GAN 簡介

    自從 Ian Goodfellow 在 14 年發表了 論文 Generative Adversarial Nets 以來,生成式對抗網路 GAN 廣受關注,加上學界大牛 Yann Lecun 在 Quora 答題時曾說,他最激動的深度學習進展是生成式對抗網路,使得 GAN 成為近年來在機器學習

    生成對抗網路GAN)相關問題彙總(較全面)

    今年暑假在北京大學參加了一個月的人工智慧DeeCamp訓練營培訓,期間實踐課題是:基於文字的影象生成,用到了各種GAN網路對比試驗結果。當時只是想著實驗各種GAN看效果,對於每一個GAN都有什麼改進一知半解。接下來還要指導一篇基於GAN的水下影象生成本科生畢設,現在整理一下網

    不要慫,就是GAN (生成對抗網路) (四):訓練和測試 GAN

    在 /home/your_name/TensorFlow/DCGAN/ 下新建檔案 train.py,同時新建資料夾 logs 和資料夾 samples,前者用來儲存訓練過程中的日誌和模型,後者用來儲存訓練過程中取樣器的取樣圖片,在 train.py 中輸入如下程式碼:

    不要慫,就是GAN (生成對抗網路) (六):Wasserstein GAN(WGAN) TensorFlow 程式碼

    先來梳理一下我們之前所寫的程式碼,原始的生成對抗網路,所要優化的目標函式為:  此目標函式可以分為兩部分來看: ①固定生成器 G,優化判別器 D, 則上式可以寫成如下形式:    可以轉化為最小化形式:  我們編寫的程式碼中,d_loss_real =

    GAN生成對抗網路介紹和其優缺點以及研究現狀

    本博文是轉載自一篇博文,介紹GAN(Generative Adversarial Networks)即生成式對抗網路的原理以及GAN的優缺點的分析和GAN網路研究發展現狀。下面是內容。 1. 生成式模型 1.1 概述     機器學習方法可以分為生成方法(gen

    【Learning Notes】生成對抗網路(Generative Adversarial Networks,GAN

    在學習 Variational Auto-Encoder時,同時注意到了 GAN 研究的火熱。但當時覺得 GAN 非常不成熟(訓練不穩定,依賴各種說不清的 tricks;沒有有效的監控指標,需要大量的人工判斷,因此難以擴展到圖像之外的高維數據)。在讀了 Good

    【機器學習】生成對抗網路模型綜述

    生成式對抗網路模型綜述 摘要 生成式對抗網路模型(GAN)是基於深度學習的一種強大的生成模型,可以應用於計算機視覺、自然語言處理、半監督學習等重要領域。生成式對抗網路最最直接的應用是資料的生成,而資料質量的好壞則是評判GAN成功與否的關鍵。本文介紹了GAN最初被提出時的基本思想,闡述了其一步

    GANs學習系列(7): 拉普拉斯金字塔生成對抗網路Laplacian Pyramid of Adversarial Networks

    【前言】      本文首先介紹生成式模型,然後著重梳理生成式模型(Generative Models)中生成對抗網路(Generative Adversarial Network)的研究與發展。作者按照GAN主幹論文、GAN應用性論文、GAN相關論文分類整理了45篇近

    簡述生成對抗網路

    本文主要闡述了對生成式對抗網路的理解,首先談到了什麼是對抗樣本,以及它與對抗網路的關係,然後解釋了對抗網路的每個組成部分,再結合演算法流程和程式碼實現來解釋具體是如何實現並執行這個演算法的,最後給出一個基於對抗網路改寫的去噪網路執行的結果,效果雖然挺差的,但是有些地方還是挺有意思的。 1.