【自然语言处理】神经文本生成综述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/tudaodiaozhale/article/details/90487263

前言

首先本文主要是对《 Neural Text Generation: Past, Present and Beyond 》这篇论文的总结,该论文是上海交通大学团队写的,查阅过数次,觉得写得很棒,在此总结一下,以此共勉。

要点

这篇的文章关注点在于神经网络的文本生成。

极大似然估计

首先,最开始的是用神经网络语言模型(NNLM)。以及的后来的RNNLM(基于RNN循环神经网络)。
P ( x t s t ) P\left( {{x_t}|{s_t}} \right) 是基于生成序列 s t {s_t} 生成下一次词 x t {x_t} 的概率。
由此得到似然函数 L ( s n ) = t = 0 n 1 P ( x t s t ) L\left( {{s_n}} \right) = \prod\limits_{t = 0}^{n - 1} {P\left( {{x_t}|{s_t}} \right)}
取对数,得到目标函数 J θ ( s n ) = t = 0 n 1 log P ( x t s t ) {J_\theta }\left( {{s_n}} \right) = - \sum\limits_{t = 0}^{n - 1} {\log P\left( {{x_t}|{s_t}} \right)}
以上就是极大似然估计法。
不过极大似然估计存在着曝光误差(exposure bias)。这个就是训练的时候都是用真实的样本进行训练的。但是在推理的时候,是基于上一个词生成当前的词,而上一个词本来就是生成的(有误差)。
解决这个问题的一个办法是采用计划采样(Scheduled Sampling)。

策略梯度(强化学习)

生成模型也可以视为马尔科夫序列决策过程,这样就可以使用策略梯度算法进行训练。
比如PG-BLEU就是以BLEU作为Reward对策略梯度 J θ ( s n ) = t = 0 n 1 R t log P ( x t s t ) {J_\theta }\left( {{s_n}} \right) = - \sum\limits_{t = 0}^{n - 1} {{R_t}\log P\left( {{x_t}|{s_t}} \right)}
随着GAN的提出,SeqGAN使用了判别器判别句子的真实性,得到概率作为Reward。
SeqGAN也存在着两个问题。
1.梯度消失(Gradient vanishing)问题,就是判别器经常训练得太好,容易会把生成的句子判别出来(概率非常小)。
为了解决以上这个问题,都对reward进行了修改,有MaliGAN,RankGAN。
2.模式崩塌(Model collapse),总是生成短而且重复的句子(生成器学习数据分布的时候只能学到一部分)。
为了解决模式崩塌,大家根据Wasserstein GAN提出的方法,在此进行改进,比如DP-GAN。或者是对结构进行改进,比如LeakGAN。

总结

从NNLM到RNNLM,从极大似然估计到强化学习。目前比较流行还是以生成对抗网络进行文本生成,但是也存在着问题,许多学者都提出了自己的方法,比如MaliGAN,RankGAN,DP-GAN和LeakGAN,但是文本生成仍然存在着一些挑战需要大家去解决。

猜你喜欢

转载自blog.csdn.net/tudaodiaozhale/article/details/90487263
今日推荐