chap9 现代循环神经网络(6) seq2seq

机器翻译中的输入序列和输出序列都是长度可变的。 为了解决这类问题,我们在 (5)节中设计了一个通用的”编码器-解码器“结构。

在本节中,我们将使用两个循环神经网络来设计这个结构中的编码器和解码器,并将其应用于机器翻译的 序列到序列(sequence to sequence,seq2seq)学习

  • 编码器是一个 RNN,读取输入句子
    • 可以是双向(双向可以 encoder,但不能 decoder,即不能用于预测)
  • 解码器使用另外一个 RNN 来输出

编码器-解码器细节

  • 编码器是没有输出的 RNN

  • 编码器最后时间步的隐状态用作解码器的初始隐状态

训练

  • 训练时,解码器使用目标句子作为输入

衡量生成序列好坏的 BLEU

对于预测序列中的任意 nn 元语法(n-grams),BLEU 的评估都是这个 nn 元语法是否出现在标签序列中。

pnp_n 表示 nn 元语法的精确度,它是两个数量的比值,第一个是预测序列与标签序列中匹配的 nn 元语法的数量,第二个是预测序列中 nn 元语法的数量的比率。

详细解释,即给定的标签序列 AABBCCDDEEFF 和预测序列 AABBBBCCDD

我们有 p1=4/5p_1 = 4/5p2=3/4p_2 = 3/4p3=1/3p_3 = 1/3p4=0p_4 = 0

另外, lenlabel\mathrm{len}_{\text{label}} 表示标签序列中的词元数和 lenpred\mathrm{len}_{\text{pred}} 表示预测序列中的词元数。

那么,BLEU 的定义是:

exp(min(0,1lenlabellenpred))n=1kpn1/2n, \exp\left(\min\left(0, 1 - \frac{\mathrm{len}_{\text{label}}}{\mathrm{len}_{\text{pred}}}\right)\right) \prod_{n=1}^k p_n^{1/2^n},

:eqlabel:eq_bleu

其中 kk 是用于匹配的最长的 nn 元语法。

根据 :eqref:eq_bleu 中 BLEU 的定义,当预测序列与标签序列完全相同时,BLEU 为 11。此外,由于 nn 元语法越长则匹配难度越大,所以 BLEU 为更长的 nn 元语法的精确度分配更大的权重。

具体来说,当 pnp_n 固定时,pn1/2np_n^{1/2^n} 会随着 nn 的增长而增加(原始论文使用 pn1/np_n^{1/n})。而且,由于预测的序列越短获得的 pnp_n 值越高,所以 :eqref:eq_bleu 中乘法项之前的系数用于惩罚较短的预测序列。

例如,当 k=2k=2 时,给定标签序列 AABBCCDDEEFF 和预测序列 AABB,尽管 p1=p2=1p_1 = p_2 = 1,惩罚因子 exp(16/2)0.14\exp(1-6/2) \approx 0.14 会降低 BLEU。

总结

  • seq2seq 从一个句子生成另一个句子
  • 编码器和解码器都是 RNN
  • 将编码器最后时间隐状态来初始解码器隐状态来完成信息传递
  • 常用 BLEU 来衡量生成序列的好坏