這篇文章是在GAN的基礎上加入了pg策略,從而可以進行文本等離散數據的生成與處理。
看一遍文章倒是不需要多少時間,但是看代碼花費了大量時間。感覺有代碼的還是收穫要多一些。
GAN之所以無法對離散數據進行很好的生成,是因爲:離散輸出使得從d到g的梯度難以傳遞。(微小的變化引起的改變,可能沒有與之對應的標籤)。同時也只有當d得到一個完整的數據的時候,纔可以進行判斷。部分完成的無法給出評分。
這裏面處理數據的時候有一個問題,那麼就是不完整數據無法使用D進行評價,因此本文使用的是一種稍微妥協的方法。
我們根據已有狀態進行一個MCsearch隨後這個狀態去獲得一個結果,而假設一段文本具有L長度,那麼前L-1長度都需要進行這個MC search,最後一個L長度是完整的,最後在進行取平均值操作,就可以得到最後的結果。(如下)
對於G,有兩個損失函數,一種是有監督的,一種是無監督的,有監督的情況下,也就是傳入的數據爲positive的數據,那麼此時
我們直接從進行embedding,隨後直接算出每個數據在LSTM中出現的概率,直接最大化(概率*選擇的動作(onehot))即可。
無監督的情況下,最大的區別就是乘上了一個reward,也就是pg的部分了。
也就是pretrain G使用 MLE(maximum likelihood estimation)
評分也就是
下面是我看了源碼以後寫的筆記: