GAN论文详细解读+思想
論文地址:?[PDF] Generative Adversarial Nets | Semantic Scholar
注:由于這篇精讀是之前總結在word中,里面公式不能直接copy到這里,我就直接截圖了,省事但帶來的問題是有個別公式截圖被水印擋了一點,大家可以打開論文尋找相應的公式哈,很方便。
Intro
深度學習不僅僅是講深度神經網絡,它更多的是對整個數據分布的一個特征的表示。
深度學習在生成模式上做的比較差的原因:在最大化似然函數的時候,我們要對這個概率分布進行很多近似,近似會帶來很多計算上的困難。因此GAN就是一個不需要近似函數且計算上更好的模型。
生成模型是一個MLP,輸入是一個隨機的噪音,MLP會把一個產生噪音的分布(通常是高斯分布)可以映射到任何一個我們想要去擬合的分布。如果判別模型也是MLP的情況下,我們就可以通過誤差的反向傳遞,進而不需要通過像馬爾科夫鏈一樣來對一個分布進行復雜的采樣,進而在計算上有優勢。
Relat
作者發現之前的方法都是想辦法構造出一個分布函數出來,然后把函數提供一些參數進行學習,這些參數通過最大化它的對數似然函數來做。但他的缺點就是在維度比較高的時候計算量很大。而GAN是通過學一個模型來近似分布。但缺點是他最后不知道分布長什么樣子,但計算上比較容易。
?
作者后來發現對于f的期望求導等價于他對于f自己求導。這也是為什么我們通過誤差的反向傳遞對GAN進行求解。
Adversarial nets
其中z是隨機噪音向量,Pz是一個分布,θ都是需要學習的參數。的作用是將z輸入然后產生一個x向量。的作用是將x向量輸入,然后產生一個標量,這個標量是判斷輸入的x向量是否是真實值還是G生成值(越靠近真實值就越接近1,否則接近0),由于我們本身知道x是G生成的還是真實值,因此我們可以直接將數據標上真實值為1,G生成為0。然后采用一些數據訓練一個二分類。
?
?
-----------------------------------------------------------------------------------------------------------------------------
這個是網絡的目標函數,其中的x代表真實圖片(向量),z代表噪因圖片(隨機向量)。
當D(辨別器)訓練的很好的時候:D(x)=1,D(G(z))=0,因此V(D,G)=0。
但往往D不可能訓練的那么好,又因為有log,因此V(D,G)<0。我們在訓練D的時候是看V(D,G)的,這也是為什么是要MAX~D的原因。而訓練G的時候,只需要看即可,而G的目的是盡可能的讓D給他生成的圖片打分高,因此盡可能讓D(G(z))趨向于1,1-D(G(z))趨向于0,因此log(1-D(G(z)))趨向于無窮小。這也是MIN~G的原因。
?
需要注意的是剛開始訓練的時候G生產的圖片效果很差,很容易讓D(G(z))=0,這就導致了log(1-D(G(z)))=0,因此會導致對他求梯度再進行更新,會出現求不動的現象。因此作者建議訓練G的時候求MAX~G,用log(D(G(z)))來求。
Theroretical
????????綠色分布代表G生成的數據,黑色點陣分布代表真實數據,藍色點陣分布代表D(判別器)的判別分布。
????????(a)剛開始訓練的時候由于D沒有訓練,所以藍色點陣是無規則波動。此時G生成的數據在真實數據右側,D根據真實值分高,G生成的數據分低原則進行學習,進而產生(b)的藍色點陣分布。
?????????隨后G訓練更新參數(將生成的數據波峰左移)使其更接近真實值。然后再訓練D,讓其產生新的藍色點陣分布。
????????最后讓G產生的數據分布與真實分布幾乎重合,此時的D無法區分G產生的數據真假。
算法:
????????先制造m個隨機噪音向量,和m個從database中提取出來的真實數據
????????隨后開始將數據傳入中開始計算辨別器的參數求梯度來更新辨別器,迭代k輪。?
????????然后再制造m個隨機噪音向量,然后把這m個隨機噪音向量代入來更新生成器,計算機生成器的梯度進而更新生成器,迭代k輪。k是超參數。?
結論部分:
目標函數最優解:生成器學到的分布和真實數據的分布相等時?
最優解時:
當G固定住的時候,辨別器D的最優解是
Pdata(x)是指我把x放入真實數據分布中的數值是多少
Pg(x)是指我把x放入G學習到的分布中的數值是多少
Pdata和Pg分布數值都是0-1之間,因此D*G(x)的數值也在0-1之間。
當Pdata(x)==Pg(x),那么D*G(x)=1/2。意味著辨別器D最優解的時候輸出的值永遠都是1/2,
表示這兩個分布是完全重合,D無法區分開。
D是通過從兩個分布(真實的數據和生成的數據)分別采樣,用V(D,G)這個目標函數訓練一個二分類的分類器,如果這個分類器的值都是1/2,就證明這兩個分布完全重合了。
Two Sample Test方法:用來區分兩塊數據是不是來源于同一個分布。
下面開始證明(MAX~D)最優解公式:
---------------------------------------------------------------------------------------------------------------------------------
?
這個是求f(x)的期望公式,且x來自p的分布。
---------------------------------------------------------------------------------------------------------------------------------
?
上下公式通過x=g(z)來推導。
????????又因為Pdata(x)和Pg(x)都是常量所以分別設為a,b,我們想要求D(x),我們需要設D(x)為y,因此,這個是一個凸函數,因此可以通過求導)來求得最大值因此y=a/(a+b),因此也就是D(x)=Pdata(x)/{Pdata(x)+Pg(x)}。?
求完MAX~D,然后就該求MIN~G。
把D*G(x)帶入V(D,G)中得C(G),且C(G)求得最小值時Pdata(x)=Pg(x)
?
KL散度:公式:,其中x來自于p分布。?
KL散度的意義:已知p的情況下,需要多少個比特能把q表達出來。
且KL散度一定是大于等于0,且等于0時,q==p。
由于中
?
的log中的分子的范圍都是0-1,而分母的范圍都是0-2,而KL散度公式中分子分母范圍都需要是0-1,因此需要將log中分母乘1/2,使分母的范圍從0-2變成0-1。Log中分母乘1/2,分子也要乘1/2,因此相當于(-log2)*2=-log4。所以C(G)變為:
由于KL散度當等于0時才取到最小,所以Pdata=(Pdata+Pg)/2 ????Pg=(Pdata+Pg)/2 ?=>Pdata=Pg
GAN思想淺入:
GAN網絡由generator(生成器)和discriminator(分辨器)組成。
所謂對抗的思想可以認為,generator是個做假鈔的販子,discriminator是個警察,第一次先將白紙給generator,生成一張假鈔,然后discrimination進行檢查(discrimination根據他所掌握真鈔的某個特征來判斷是否是假鈔),每一輪剛開始檢查的時候discrimination都沒有發現是假鈔,通過updata他的參數最終學會了真鈔的其他某個特征,然后discrimination發現是假鈔后,generator會updata他的參數。優化后第二輪generator繼續生成一張假鈔.....
??一張圖片通過generator后是出來一張圖片,而出來的圖片通過discrimination后出來的是數值(數值越大,證明假鈔越逼真)
Generator想要自己生成的假鈔通過discrimination出來的分數越來越高,所以不斷updata自己的參數,discrimination為了讓自己能識別出是假鈔(為了使,通過自己出來后的分數低而updata自己的參數)
總結
以上是生活随笔為你收集整理的GAN论文详细解读+思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝牙血压计医疗方案设计
- 下一篇: 电子地图开发方式