GAN做生成存在的问题
- GAN 不适用于离散数值,梯度不能回传到生成模型的问题
解决方法:将生成器看作是强化学习中的 stochastic policy,SeqGAN 可以直接通过 gradient policy update 避免生成器中的可导问题。
- 只能对整个sequence打分,如果生成器生成序列的同时判别器来判断,如何平衡当前序列的分数和未来序列的分数又是一个难题
解决方法:判别器对整个序列的评分作为强化学习的奖励信号可以通过 Monte Carlo 搜索传递到序列生成的中间时刻。
使用RL
生成模型被看作一个 agent
目前为止已生成的序列表示当前 state
下一个要生成的单词则是采取的 action
判别模型对序列的评价分数则是返回的 reward
具体过程
- 生成器 用 LSTM 来编码 sentences,然后将其映射到 下一个时刻 token 的概率分布
- 鉴别器使用CNN,将 Word 转为 vector,一句话一个 matrix,用多个卷积核,进行特征提取,添加了 fc layer 以及 sigmoid activation 来输出 给定的序列为真的概率。
- 采用了MLE来预训练生成器G
- 再用G生成的样本和真实样本来pretrain D
- 当D达到某一个准确率的时候,进入对抗性训练的环节