seqGAN
1.0.0
“ seqgan:序列生成的對抗網的Pytorch實施,具有策略梯度”。 (Yu,Lantao等)。該代碼被高度簡化,評論和(希望)直接理解。實施的策略梯度也比原始工作(https://github.com/lantaoyu/seqgan/)簡單得多,並且不涉及整個句子的單一獎勵(靈感來自http://karpathy.github.io.github.io/2016/05/05/31/rl/)。
所使用的體系結構與Orignal工作中的架構不同。具體而言,將復發性雙向GRU網絡用作歧視者。
如本文所述,該代碼對合成數據執行實驗。
鼓勵您提出對代碼工作作為問題的任何疑問。
運行代碼:
python main.pyMain.py應該是您進入代碼的切入點。
在這種情況下,以下hacks(從https://github.com/soumith/ganhacks借用)似乎有效:
訓練判別器比發電機要多得多(生成器僅針對一批示例進行訓練,並且增加批量尺寸會損害穩定性)
使用Adam進行發電機和Adagrad進行歧視者
在GAN階段調整髮電機的學習率
在訓練和測試階段使用輟學
穩定性幾乎對每個參數非常敏感:/
GAN階段可能並不總是會導致NLL大量下降(有時很少) - 我懷疑這是由於實施的政策梯度的非常粗略的性質(沒有推出)。
MLE訓練後獲得100個時期的學習曲線,然後進行對抗訓練。 (您的結果可能會有所不同!)