論文札記之-GenerativeAdversarialNets
摘要
GAN 是一個框架 ,有兩個 model,一個是用於刻畫資料分佈的生成式模型 G ; 另一個是判別模型 D ,用於判斷資料是從 G 生成的還是從訓練樣本中取樣的。理所應當的, G 模型要讓 D 模型相信資料是從自身產生的,因此目標就是 “maximize the probability of D making a mistake” 。作為一個判別模型,D 的目標更明確,就是讓模型的判別誤差最小。所以,GAN 框架就是一個 minmax two-player game。模型就是函式,對於任意函式 G 、 D , 在 G 覆蓋所有的訓練資料的情況下,並且 D = 1/2 的時候,minmax 目標函式存在唯一解。也就是說 GAN 的最優化的目標是讓判別模型 D 失去了分類能力,證明過程不復雜,稍後分解。Goodfellow 稱,我的框架很給力,不需要馬爾科夫鏈、近似推斷等方法,只需要兩個 MLP 加上 bp , Mission Success !
框架
為了能夠直觀的看出 GAN 的框架,摳一張圖來說明下。
左邊就是沒有加入對抗的訓練過程,判別模型 D 希望能幹儘量擬合訓練資料的分佈。右邊就是加入了對抗 G 的訓練過程,G 學習 加入 noise z 後的資料分佈,x = G( z; theta(G) ) 讓 D 判別 x 的來源,有了一個框架圖,是不是 so easy 呢。
優化目標
再來看看 GAN 的目標函式是啥,繼續截圖。。。
訓練方式,其實訓練 D 就類似於最大似然的過程,用於估計 P ( Y = y | x ) , Y 表示 x 的來源,由於單獨訓練 D 會導致過擬合,因此採取 k 個 batch 訓練 D, 一個 batch 訓練 G,具體過程如下:
- 分 k 個 batch, 每個 batch 從 pg 分佈中取樣 { z1, z2, z3, … , zm } , 從 pdata 分佈中取樣 { x1, x2, x3, .., xm }, pdata 反應訓練資料的分佈,pg 是訓練資料加入噪音後的分佈固定 G, 對 目標函式進行梯度下降,更新 D 的引數
- k 個 batch 訓練完成後,再從 pg 中取一個 batch , { z1, z2, z3, … , zm },更新 G 的引數,G 目標是最小化 log(1-D(G(z))) , 也可以看成最大化 log(D(G(z)))
收斂證明
剛才說到 min max 目標函式的收斂問題,也就是證明這個公式的收斂下界,首先,固定 G, 先找到 Dmax 為 D’ , 利用 D` , 求 G 。那 Dmax 是啥呢?
先丟擲結論
證明,先把
展開,得到
由於,y -> alog( y) + blog(1 – y ) 在 [0,1] 取得最大值為 a/a+b .
所以,將 pdata 視為a,pg 視為 b , D(x) 的最大值為 pdata / pdata + pg ; 因此 V(G, D) 變成了 C(G),下一步是求 min C(G)
再次丟擲結論,C(G) 當且僅當 pg = pdata 的時候取得唯一解 -log4 。怎麼證明 ?
將 C(G) 結合 KL 離散度進行變換,得到
再由 KL 離散度變為 Jensen–Shannon 離散度
由於 兩個概率分佈的 Jensen–Shannon 離散度總是非負的,當兩個分佈相同的時候為0,所以呢 ,當 pg = pdata 的時候 C(G) 取得最小值,為 -log4,也就是文章開始說的 minmax 的唯一解。
到此,證明過程就結束了。
總結
推導完之後,也大概能夠發現,在 GAN 框架的訓練過程中 D model 是變得越來約弱的,從最後的收斂條件也能夠看出來,D = 1/2 , 也就是說 D 徹底失去的分類能力。G model 才是最終需要的。
那麼,在一番訓練之後,我們到底從 G 模型中得到了什麼呢? 我理解是現實世界中的真實資料是遠多於訓練資料的,通過訓練資料直接學習出來的生成模型在真實資料中的擬合結果存在gap,通過對抗學習的框架,
在訓練過程中不斷加入干擾,用於模擬真實資料,同時用一個判別模型進行判斷真偽,從而使得生成模型泛化能力更強。當然還是有很多限制條件的,比如 G 必須是可導的,z 的維度一般要高於 x ; etc .
最後,本文到此結束,果然不出所料的水,能有興趣看到這裡的也不多了。。。
References
[Goodfellow and others 2014] Goodfellow, I., et al. Generative adversarial nets. In NIPS, 2672–2680
[Goodfellow, Bengio, and Courville 2016] Goodfellow, I.;Bengio, Y.; and Courville, A. 2016. Deep learning. 2015.
相關文章
- JavaScript札記JavaScript
- 論文記錄
- 論文筆記筆記
- Java面試札記Java面試
- React Hooks 札記ReactHook
- Ruby 札記 - Ruby 集合家族之陣列(Array)陣列
- 論文筆記:RankIQA筆記
- Louvain 論文筆記AI筆記
- BERT 論文筆記筆記
- 論文筆記(2)筆記
- Java_面試札記Java面試
- 中山醫工作札記
- GhostNet論文筆記筆記
- 【論文筆記】UNet筆記
- Ruby 札記 - 閒理字串字串
- 三篇論文之bigtable
- 論文查重之小白都懂
- MapReduce 論文閱讀筆記筆記
- Raft論文讀書筆記Raft筆記
- SSD論文閱讀筆記筆記
- 9/12讀論文筆記筆記
- Ruby 札記 - 淺嘗 Ruby 特性
- JS 非同步系列 —— Promise 札記JS非同步Promise
- [CTO札記]業務流程圖Sample流程圖
- 【論文】軍事理論課程論文
- 隨手記_論文讀寫策略
- AutoEmbedding論文閱讀筆記筆記
- 與搭訕大師邂逅札記
- Ruby 札記 - 淺談和配置 Ruby
- SQL Server效能調優札記 [zt]SQLServer
- rac讀書札記---後臺程式
- k8s 學習札記K8S
- 論文筆記之:Human-level control through deep reinforcement learning筆記
- 【論文筆記】 Popularity Bias in Dynamic Recommendation筆記
- CSS札記(二):級聯與繼承CSS繼承
- 微軟外服札記④——Spark中的那些坑...微軟Spark
- 論文
- 軟考論文之論軟體的可靠性設計