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

前言

首先本文主要是对《 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,但是文本生成仍然存在着一些挑战需要大家去解决。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值