什么是曝光偏差?
- 曝光误差(exposure bias)简单来讲是因为文本生成在训练和推断时的不一致造成的。
- 不一致体现在推断和训练时使用的输入不同,在训练时每一个词输入都来自真实样本(GroudTruth),但是在推断时当前输入用的却是上一个词的输出。
NLP中的曝光偏差?
常见的曝光偏差问题出现场景分析?
- Transformer在训练阶段有mask而在预测阶段无mask,在训练时每一个词输入都来自真实样本(GroudTruth),但是在推断时当前输入用的却是上一个词的输出。个人认为此场景存在曝光偏差问题;
- Teacher forcing场景下也可以理解为存在曝光偏差问题;
- Seq2Seq生成模型中,因为Encoder和Decoder的输入词向量表达不相同,个人认为此处也是存在曝光偏差问题;
- Dropout(随机失活),个人主观上认为此处也是存在曝光偏差问题(此处也有人持反对意见,大家可以积极讨论);
个人解决思路分析?
- 重点:根本解决个人觉得不现实,目前在工业界也没有听说,哪家企业在根本上解决了曝光偏差问题的消息,但是有些大企业的做法是我们可以借鉴的,确实在一定程度上缓解了该问题。
- 先说说个人的愚见:
个人在面对NLP中常见的的曝光偏差问题,也有自己的一些经验手段;
- 例如:
- 我们在使用teacher forcing手段时,设置一个概率值,这个概率值最好不要超过50%;(或者其他策略也可以适当缓解曝光偏差问题,根本上不好解决)
- Dropout,随机失活,在使用过程中经验值是失活比率尽量不超过0.2;
- Seq2Seq生成模型中,因为Encoder和Decoder的输入词向量表达不相同,而导致的曝光偏差问题,可以通过共享词向量矩阵来解决曝光偏差问题。我印象中这种解决方案的官方名称叫weight tying
- 其实,大家会发现,面对这一问题,我这边大致的解决思路就是用概率去控制曝光偏差问题,确实,目前这个问题在工业圈,包括一些国际上的大企业也不能从根本上解决的问题;但是谷歌的一些缓解曝光偏差问题的思路还是值得我们参考的;
- 在BERT预训练的MLM任务中通过预测Mark(掩盖)的词(这些词用一个标记来表示),然而下游任务并没有这个标记;
- 在BERT中也采用了类似做法,就是训练时句子有p的概率是有掩盖的词,有q的概率是替换的词,有1-p-q的概率没有掩盖。
- 后来我查了一些资料,这个思路叫scheduled-sampling,翻译成中文叫计划油样分析,计划油样分析策略个人也是比较倾向于可以有效缓解 teacher forcing 带来的曝光偏差问题,大家有兴趣的可以查阅相关论文