SeqGAN 原理簡述


1. 背景
GAN在之前發的文章里已經說過了,雖然現在GAN的變種越來越多,用途廣泛,但是它們的對抗思想都是沒有變化的。簡單來說,就是在生成的過程中加入一個可以鑒別真實數據和生成數據的鑒別器,使生成器G和鑒別器D相互對抗,D的作用是努力地分辨真實數據和生成數據,G的作用是努力改進自己從而生成可以迷惑D的數據。當D無法再分別出真假數據,則認為此時的G已經達到了一個很優的效果。
它的諸多優點是它如今可以這么火爆的原因:
- 可以生成更好的樣本
- 模型只用到了反向傳播,而不需要馬爾科夫鏈
- 訓練時不需要對隱變量做推斷
- G的參數更新不是直接來自數據樣本,而是使用來自D的反向傳播
- 理論上,只要是可微分函數都可以用於構建D和G,因為能夠與深度神經網絡結合做深度生成式模型

它的最后一條優點也恰恰就是它的局限,在NLP中,數據不像圖片處理時是連續的,可以微分,我們在優化生成器的過程中不能找到“中國 + 0.1”這樣的東西代表什么,因此對於離散的數據,普通的GAN是無法work的。

2. 大體思路
這位還在讀本科的作者想到了使用RL來解決這個問題。

 

如上圖(左)所示,仍然是對抗的思想,真實數據加上G的生成數據來訓練D。但是從前邊背景章節所述的內容中,我們可以知道G的離散輸出,讓D很難回傳一個梯度用來更新G,因此需要做一些改變,看上圖(右),paper中將policy network當做G,已經存在的紅色圓點稱為現在的狀態(state),要生成的下一個紅色圓點稱作動作(action),因為D需要對一個完整的序列評分,所以就是用MCTS(蒙特卡洛樹搜索)將每一個動作的各種可能性補全,D對這些完整的序列產生reward,回傳給G,通過增強學習更新G。這樣就是用Reinforcement learning的方式,訓練出一個可以產生下一個最優的action的生成網絡。

3. 主要內容
不論怎么對抗,目的都是為了更好的生成,因此我們可以把生成作為切入點。生成器G的目標是生成sequence來最大化reward的期望。

 

在這里把這個reward的期望叫做J(θ)。就是在s0和θ的條件下,產生某個完全的sequence的reward的期望。其中Gθ()部分可以輕易地看出就是Generator Model。而QDφGθ()(我在這里叫它Q值)在文中被叫做一個sequence的action-value function 。因此,我們可以這樣理解這個式子:G生成某一個y1的概率乘以這個y1的Q值,這樣求出所有y1的概率乘Q值,再求和,則得到了這個J(θ),也就是我們生成模型想要最大化的函數。

所以問題來了,這個Q值怎么求?
paper中使用的是REINFORCE algorithm 並且就把這個Q值看作是鑒別器D的返回值。

 

因為不完整的軌跡產生的reward沒有實際意義,因此在原有y_1到y_t-1的情況下,產生的y_t的Q值並不能在y_t產生后直接計算,除非y_t就是整個序列的最后一個。paper中想了一個辦法,使用蒙特卡洛搜索(就我所知“蒙特卡洛”這四個字可以等同於“隨意”)將y_t后的內容進行補全。既然是隨意補全就說明會產生多種情況,paper中將同一個y_t后使用蒙特卡洛搜索補全的所有可能的sequence全都計算reward,然后求平均。

 

就這樣,我們生成了一些逼真的sequence。我們就要用如下方式訓練D。

 

這個式子很容易理解,最大化D判斷真實數據為真加上D判斷生成數據為假,也就是最小化它們的相反數。

D訓練了一輪或者多輪(因為GAN的訓練一直是個難題,找好G和D的訓練輪數比例是關鍵)之后,就得到了一個更優秀的D,此時要用D去更新G。G的更新可以看做是梯度下降。

 

其中,

 

αh代表學習率。

以上就是大概的seqGAN的原理。

4. 算法


首先隨機初始化G網絡和D網絡參數。

通過MLE預訓練G網絡,目的是提高G網絡的搜索效率。

使用預訓練的G生成一些數據,用來通過最小化交叉熵來預訓練D。

開始生成sequence,並使用方程(4)計算reward(這個reward來自於G生成的sequence與D產生的Q值)。

使用方程(8)更新G的參數。

更優的G生成更好的sequence,和真實數據一起通過方程(5)訓練D。

以上1,2,3循環訓練直到收斂。

5. 實驗
論文的實驗部分就不是本文的重點了,有興趣的話看一下paper就可以了。


---------------------

原文:https://blog.csdn.net/yinruiyang94/article/details/77675586

另一篇不錯的文章:https://blog.csdn.net/Mr_tyting/article/details/80269143


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM