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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【GANs学习笔记】(三)GANs理论基础

發布時間:2024/1/1 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【GANs学习笔记】(三)GANs理论基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

完整筆記:http://www.gwylab.com/note-gans.html
——————————————————————-

第二章 GANs的理論與提升

?????? 本章會介紹一些與提升和改進GANs相關的paper,這涉及到一些與GANs理論相關的知識,在第一部分會用較簡短的話語介紹一些GANs的相關核心理論,第二部分是GANs存在的一些缺陷和改進手段,第三部分會介紹一個很有趣的paper――fGAN,它能幫助我們更深的理解GANs的算法思想,第四部分開始就是更多的paper,它們會用到一些很有意思的tricks去提升和改進GANs

1. GANs相關理論

?????? GANs本質上在做的事情是什么?

?????? 我們假設把每一個圖片看作二維空間中的一個點,并且現有圖片會滿足于某個數據分布,我們記作Pdata(x)。以人臉舉例,在很大的一個圖像分布空間中,實際上只有很小一部分的區域是人臉圖像。如上圖所示,只有在藍色區域采樣出的點才會看起來像人臉,而在藍色區域以外的區域采樣出的點就不是人臉。今天我們需要做的,就是讓機器去找到人臉的分布函數。具體來說,就是我們會有很多人臉圖片數據,我們觀測這些數據的分布,大致能猜測到哪些區域出現人臉圖片數據的概率比較高,但是如果讓我們找出一個具體的定義式,去給明這些人臉圖片數據的分布規律,我們是沒有辦法做到的。但是如今,我們有了機器學習,希望機器能夠學習到這樣一個分布規律,并能夠給出一個極致貼合的表達式。

?????? GANs出現之前,人們采用的方法是Maximum Likelihood Estimation

?????? 簡單來說,就是我們有一個生成器和一組參數 θ,我們還有從真實分布Pdata(x)sample出的數據{},我們不知道數據的真實分布具體長什么樣,但是我們希望不斷地調整和θ,讓越接近越好。具體的做法是,對于每一組參數θ和真實分布的抽樣,我們能夠計算出參數θ下的生成器生成該真實抽樣likelihood,于是我們希望找到一個最佳的參數組,使得生成器的結果最接近,也就是對于每個真實抽樣likelihood都最大,這等價于所有真實抽樣likelihood的乘積最大,那原始問題就轉換為如下這個最大似然問題:

?????? 下面我們需要求解這個maximizing the likelihood問題,我們先證明,它其實等價于求minimize KL divergenceKL divergence是一個衡量兩個分布之間的差異的計算式)問題。

?????? 首先我們加上一個對數log,將累乘轉化為累加問題。然后再將累加轉化為期望問題

?????? 然后這個期望也就是積分問題:

?????? 因為是arg max,后面可以再補上一項:

?????? 補完之后的式子便剛好等價于KL Divergence的最小化求解。

?????? 現在這個KL Divergance的最小化問題如何求解呢?我們不介紹傳統的數學方法求解了,我們下面考慮引用neural network

?????? 我們把這個neural network稱作generator。通過上述的分析我們知道,我們需要訓練出這樣的generator,對于一個已知分布的數據z,它可以把數據z轉化成一個未知分布的數據x,這個未知分布可以與z所在的分布完全不一樣,我們把它稱作,并且我們希望之間的Divergence越小越好。如果能找到這樣的,那也就意味著我們找到了真實數據分布的近似解,也就意味著我們能夠生成各種各樣符合真實分布規律的數據。

?????? 現在一個最關鍵的問題是,這個Divergence要如何計算出來呢?理論上來說我們不知道是什么,我們也不知道是什么,因此Divergence是我們無法計算的。但是,人無法計算的東西,交給神經網絡或許就知道如何計算了。于是,我們新建了一個neural network,專門來量之間的Divergence,這個neural network,就叫做Discriminator

?????? 如上圖所示,藍色星星是從sample出的數據,黃色星星是從sample出的數據,現在交給Discriminator去判別讀入數據是來自還是,實際上就是在衡量之間的Divergence,因為如果二者之間的Divergence越大,Discriminator就會給的數據更低的分數,給的數據更高的分數;而如果二者之間的Divergence越小,Discriminator就會給二者的分數越接近;當完全一致時,也就是Divergence=0時,

Discriminator給二者的分數就都是0.5了。

?????? 當然,上述只是我們直觀上覺得說,Discriminator是與Divergence有關的,下面我們需要用數學方法證明:Discriminator真的可以衡量Divergence的值。我們先來看一下Discriminator的目標式:

?????? 這個式子很好理解,如果來源x~D(x)盡可能高;如果來源x~D(x)盡可能低。下面我們求解一下這個目標式。

?????? 首先將目標式轉化為一個積分:

?????? 我們假設D(x)可以是任意函數。那么現在這個表達式,對于所有的x,計算出一個表達式,使得所有表達式的積分求和最大,這等價于,如果對于每一個表達式,我們能找到一個D的取值,使得這個表達式的最大,那么最終所有表達式的積分求和也最大,即:

?????? 這個方程的求解非常容易,最后的結果是;

?????? 現在把代入到目標表達式中得到:

?????? 進一步變形(分子分母同除以2),轉化為:

?????? 這個表達式等價為:

?????? 至此,我們證明了,最大化VGD)問題的求解實際上就是在求解之間JS Divergence的值(與前面提到的KL Divergence可以認為是等效的)。

?????? 于是,我們可以再回到Generator要解決的問題上:

?????? Generator的目的,是讓產生數據與真實數據之間的Divergence最小,本來Divergence是沒有辦法計算的,但是現在有了Discriminator之后,Divergence變得可以計算了,于是Generator的新的目標表達式變為:

?????? 接下來我們需要求解這個表達式。值得注意的是,在實際的網絡訓練中,discriminatorgenerator是交替訓練的,并且是先訓練discriminator再訓練generator,因此,當generator需要求解上述表達式的時候,discriminator是已經訓練好的,于是這個式子就可以寫成L(G),目標表達式就轉化成:

?????? 這是一個最初級的目標表達式,用基本的gradient descent就能求解

?????? 綜上,我們求解出了Disciminator,然后我們也求解出了Generator,下面我們先用一個完整的算法來回顧一下這整套流程,然后我們會反思目前的這套架構是否已經是完美的。

?????? 第一個部分是訓練discriminator,先從真實數據分布中抽樣,然后從先驗分布中抽樣z,并通過generator產生仿造數據,接著把丟入discriminator中訓練,使得目標函數最大;第二個部分是訓練generator,從先驗分布中抽樣新的z,接著把丟入generator中訓練,使得目標函數最小。這樣循環交替,最終generator產生的數據就會越來越接近真實數據

總結

以上是生活随笔為你收集整理的【GANs学习笔记】(三)GANs理论基础的全部內容,希望文章能夠幫你解決所遇到的問題。

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