本篇博客仅为方便个人日后翻阅,对公式的解读代表了个人观点,希望能给大家带来一些启发。
Sequence Generative Adversarial Nets
序列生成问题的描述:给定真实世界的结构化序列的数据集,训练一个含有参数θ的生成网络Gθ
我们基于强化学习来解释这一问题,在第t个时间步,状态s是先前已生成的词(y1,...,yt−1),动作a是如何选择要生成的词yt,这也是生成模型的工作Gθ(yt|Y1:t−1),它通过前t-1个词以及模型参数θ来选择下一个词,确定了该词之后,状态也随之改变成s’,对应词(y1,...,yt),以此类推,最终生成的系列(y1,...,yt,...,yT),对序列的评分就是奖励r,如果生成的系列成功地骗过了判别模型D,则得1分,如果被识别出是机器生成的则得0分。
另外,我们训练一个含有参数φ的鉴别器Dφ,Dφ(Y1:T)表示序列为真实的可能性有多大。通过提供来自真实序列数据的正例和来自生成模型Gφ生成的合成序列的反例来训练判别模型Dθ。同时,对生成模型Gθ进行了更新,采用了策略梯度和MC搜索的方法,并根据从判别模型Dφ得到的期望最终报酬对其进行了修正。奖励是根据它欺骗歧视模型Dφ的可能性来估计的。具体的提法在下一小节给出.
SeqGAN via Policy Gradient
没有中间奖励,生成器模型 (policy)Gθ(yt|Y1:t−1) 的目标是从起始状态 0 生成一个序列,以最大化其预期的最终奖励:
怎么理解这个公式?目标函数:整个序列的奖励最大
公式(1)可以这样理解:在初始状态下,策略函数可能选出的每个y,都对应着不同的动作价值, 把这些动作价值根据y的概率分布加权求和,就得到了初始状态的