【论文笔记】填补训练和推理之间的空隙

总结自acl2019最佳长论文《Bridging the Gap between Training and Inference for Neural Machine Translation》

 

背景:

在训练神经翻译模型的时候,实际译文被用作上下文。在使用神经翻译模型推理时,整个序列是由结果模型自己生成的,因此由模型生成的前一个单词作为上下文提供。因此,训练和推理时的预测词是从不同的分布中提取的,即从数据分布中提取,而不是从模型分布中提取。这种差异被称为暴露偏差,导致了训练和推断之间的差距。随着目标序列的增长,误差在序列之间积累,模型必须在训练时从未遇到过的条件下进行预测。直观地说,为了解决这个问题,模型应该在它在推理时所面临的相同条件下进行预测训练。

数据准备:

在数据集中,原序列表示为【论文笔记】填补训练和推理之间的空隙,实际译文表示为【论文笔记】填补训练和推理之间的空隙

编码器:

用ei表示xi的嵌入向量 ,用一个双向的GRU来得到两个隐状态序列,

【论文笔记】填补训练和推理之间的空隙

【论文笔记】填补训练和推理之间的空隙

添加注意力:

计算目标单词y*j和第i个原单词的相关系数

 【论文笔记】填补训练和推理之间的空隙 

【论文笔记】填补训练和推理之间的空隙

解码器:

计算目标隐状态

【论文笔记】填补训练和推理之间的空隙

计算目标单词的概率分布

【论文笔记】填补训练和推理之间的空隙

其中g是一个线性变换

主要方法框架:

【论文笔记】填补训练和推理之间的空隙

作为上下文输入的单词有两种选择:实际单词(原文是ground truth word,gtw)或之前预测的单词(称为oracle word,ow),两种单词是以概率p随机选择的

方法包含以下3个部分:

1. 选择ow

2. 以概率p选择实际单词或以概率1-p选择ow

3. 将选择的单词带入6,7式预测下一个单词

选择ow:

选择ow的方式有两种:句子级ow和单词级ow

1. 单词级ow

【论文笔记】填补训练和推理之间的空隙

计算各ow候选词的概率,选出概率最大的一个

【论文笔记】填补训练和推理之间的空隙

【论文笔记】填补训练和推理之间的空隙 

2. 句子级ow

1)在每个batch的所有句子上进行beam查找,得到k个最佳翻译结果

2)在查找过程中添加Gumbel噪声

3)采用BLEU句子级度量来评估翻译结果,选择得分最高的作为oracle句子(os),记为【论文笔记】填补训练和推理之间的空隙

 【论文笔记】填补训练和推理之间的空隙

句子级ow可以从os中对应位置选出

 【论文笔记】填补训练和推理之间的空隙 

强制编码:

句子级ow的一个问题是无法保证和实际译文等长,这样不能进行BLEU评分,因此需要采用某种方法使os与实际译文等长,做法如下:

1)如果产生译文的过程中<EOS>为下一单词的概率最大且此时译文长度小于实际的,则跳过<EOS>选择第二个单词

2)如果产生译文的过程译文长度超过了实际的但<EOS>还不是下一单词的概率最大的,则直接选择<EOS>作为下一单词

衰减采样:

对于之前提到的选择实际单词还是ow作为上下文输入的概率p,应有以下特征:

1)在训练初期,为了避免收敛慢或陷入局部收敛,应尽量选择实际单词作为输入

2)在训练后期,为了模拟推理时遇到的情况,应尽量选择ow作为单词输入

因此,可以这样选择p,其中e是训练轮次,mu是超参数

【论文笔记】填补训练和推理之间的空隙 

训练:

选出yj-1后,就可以根据6,7,8,9式推算出yj,损失函数如下

【论文笔记】填补训练和推理之间的空隙

N是数据集中句子的数量,|yn|是第n个实际句子的长度,Pnj是第j步中预测的第n个句子的概率分布,Pnj[ynj]是第j步生成实际单词的概率

上一篇:SSLOJ 1682 最短网络


下一篇:论文研读《Highly Accurate Machine Fault Diagnosis Using Deep Transfer Learning》采用深度转移学习的高精度机械故障诊断——2019