DP-GAN指的是Diversity-Promoting GAN(而不是另外一篇论文里提出的Differentially Private GAN ),论文的标题是Diversity-Promoting GAN: A Cross-Entropy Based Generative Adversarial Network for Diversified Text Generation,发表于EMNLP 2018。
主要亮点
从标题可以看出,这篇文章是着眼于多样化的文本生成而提出的。SeqGAN在用GAN处理序列问题这方面取得了令人满意的结果,然而,SeqGAN的Discriminator仍是一个传统的真伪分类器,不能很好地反映文本的novelty(新颖性)。鉴于这一观察,作者在SeqGAN的基础上对Discriminator进行了改进,提出了一种基于language model的Discriminator。
Reward
显然reward也需要重新定义一番,作者提出了两种reward:局部的word-level reward和全局的sentence-level reward。
Word-level reward有点像是当前状态的immediate reward,可以直接根据当前的词来给出,采用的是language model的cross entropy输出:
Cross entropy的定义原本是这样的:
这里把ground-truth概率t都视为1,所以得到这样的公式。
不过这里reward的取值意义是越大越好,因此导致language model的输出概率尽可能小(与原本的cross-entropy loss正相反),这样一来就保证了用词的novelty。
至于sentence-level reward,则是简单地对整个句子的word-level reward取平均值:
这里对比一下SeqGAN的reward:
后者简单地以Discriminator判定句子为真的概率作为reward,带来的问题是,reward的值域只在0到1之间,而Discriminator很容易被训练到一个较高的精度,真实的文本往往得到非常接近1的reward,即使它们的novelty有所差异,这也无法反映在reward上,类似的问题也出现在生成的文本上。
下面是一个直观的对比图:
相比之下,DP-GAN的sentence-level reward对文本novelty的反映就准确得多。
一个完整句子的reward是上述两类reward的结合:
训练
类似于SeqGAN,DP-GAN Generator的目标函数同样是最大化期望的reward:
这里的Q值以“当前句子在以
作为第一个词的情况下所期望取得的reward”作为估计值,其中的计算过程论文并没有清楚地阐述出来,与师兄讨论了一番后,我们都认为应该还是需要用到类似Monte Carlo search的方法来模拟一个完整的序列出来,就如SeqGAN采用的方法一样。
小结
1. DP-GAN和SeqGAN都采用了“GAN+RL”的模式,这套方法论让人看到把GAN应用到序列问题上的无穷潜力,同时,应用到这些问题上的具体公式也加深了我对强化学习进一步的理解。
2. DP-GAN创新性地对Discriminator进行了改进,不再局限于把Discriminator当做一个二元分类器,而且可以直接给出单个词的reward。