72_text_generation/vae-seq2seq 曝光偏差(exposure bias)

seq2seq中的曝光偏差(exposure bias)现象

mismatch between train and test
exposure bias
在训练阶段,我们采用的是teacher forcing (教师指导)方式,也就是在decoder端的当前时间步的输入是上一个时间步的真实标签,而不是模型在上一个时间步的预测值

然而测试阶段,当前时间步的输入是模型上一时间步的预测值,此时没有教师指导。

所谓exposure bias(曝光偏差),就是因为模型在训练阶段从来没有看过自己的输出,也就是自己的输出从来没有曝光出来,然而测试阶段却始终看到的是自己的输出.

评估指标不一致
另外一个不匹配的原因是,训练阶段我们是对每一个时间步的输出的概率分布与当前时间步的标签做交叉熵。然而测试阶段我们是对decoder端生成的整个句子的质量做评估,而不是对单个单词是否正确做评估。比如机器翻译中,我们关注的是生成的句子与参考答案之间的BLEU分数或者ROUGE分数,而不是生成的句子中每一个单词与参考答案的每一个单词是否完全一致。

前言
曝光误差(exposure bias)简单来讲是因为文本生成在训练和推断时的不一致造成的。不一致体现在推断和训练时使用的输入不同,在训练时每一个词输入都来自真实样本(GroudTruth),但是在推断时当前输入用的却是上一个词的输出。
解决方案
1.使用scheduled-sampling,简单的做法就是在训练阶段使用的输入以p的概率选择真实样本,以1-p的概率选择上一个词的输出。而这个概率p是随着训练次数的增加衰减,可以使用指数函数的衰减,或者反sigmoid函数或者线性函数。
在这里插入图片描述
2.在loss中增加一定约束(曾经见到有人这么做过,但是我后面想仔细查阅时却发现一直都找不到这篇文章了)。
3.强化学习+GAN,就是SeqGAN的方法。这个Exposure Bias也是从《SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient》这篇文章我看到的,但是作者阐述了这个问题(作者阐述的是用极大似然估计法会导致这个问题),不过SeqGAN并未阐述如何解决这个问题的。后来仔细思考,可以发现在SeqGAN训练阶段给于每个词是对应的奖励而不是像极大似然估计一样来提高这个词的概率,所以不会导致这个Exposure Bias。
相关资料
在BERT训练的任务通过预测Mark(掩盖)的词(这些词用一个标记来表示),然而下游任务并没有这个标记,所以在BERT中也采用了类似做法,就是训练时句子有p的概率是有掩盖的词,有q的概率是替换的词,有1-p-q的概率没有掩盖。然而这种做法就跟scheduled-sampling非常相似(或者是借鉴)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值