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

    xiaoxiao2022-07-14  152

    前言

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

    要点

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

    极大似然估计

    首先,最开始的是用神经网络语言模型(NNLM)。以及的后来的RNNLM(基于RNN循环神经网络)。 P ( x t ∣ s t ) P\left( {{x_t}|{s_t}} \right) P(xtst)是基于生成序列 s t {s_t} st生成下一次词 x t {x_t} xt的概率。 由此得到似然函数 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)} L(sn)=t=0n1P(xtst) 取对数,得到目标函数 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)} Jθ(sn)=t=0n1logP(xtst)。 以上就是极大似然估计法。 不过极大似然估计存在着曝光误差(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)} Jθ(sn)=t=0n1RtlogP(xtst)。 随着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,但是文本生成仍然存在着一些挑战需要大家去解决。

    最新回复(0)