cs224n学习笔记L8:机器翻译(MT)、Seq2Seq、Attention

一、机器翻译

1.1 基于规则

1950年代由于冷战,研发了最早的基于规则的机器翻译系统:俄语2英语

1.2 基于概率(statistical)统计(SMT)

1990s-2010s: 基于概率统计的机器翻译系统。
例如我们需要将法语的句子x翻译为英语句子y, 任务描述如下
argmaxyP(yx)argmax_yP(y|x)
由于源语言x序列确定,使用贝叶斯公式将该规则拆分为两个独立的部分,拆分工作便于模型训练效果提升:
argmaxyP(xy)P(y)P(x)=argmaxyP(xy)P(y)argmax_y\frac{P(x|y)P(y)}{P(x)} = argmax_y P(x|y)P(y)
其中P(xy)P(x|y)为从双语对照数据学习到的翻译模型,P(y)P(y)为从目标语言学习到的语言模型,决定目标语言流畅度。

1.2.1 P(x|y)的学习

  • 需要大量源语言-目标语言数据对
  • 任务进一步拆分,考虑学习P(x, a|y), a为alignment,即语言对齐作为一个指标单独考虑
  • alignment:两种语言句子词素之间的对应关系,有一对多、多对一、多对多、顺序混乱等多种复杂的可能
    在这里插入图片描述
    在这里插入图片描述
  • P(x,ay)P(x,a|y)代表了多个目标任务:(a)某个位置的特定词的对齐 (b)某个词的译文…
  • 使用启发式搜索最佳译文,优良的SMT还有非常多的细节,十分复杂,例如复杂的特征工程、借助同义词短语表等。(课程介绍也比较模糊)
    在这里插入图片描述

1.3 神经网络机器翻译(NMT)

1.3.1 seq2seq结构

用来输入一段序列生成另一段序列的网络架构称为seq2seq, 一般有两个RNN。先来看这张图,信息量很丰富。在这里插入图片描述
总结一下上面图中的信息:

  • 两个RNN分别处理源语言与目标语言,当然也需要两个Embedding
  • 源语言和目标语言分别对应的是encoder、decoder
  • encoder负责对源语言编码,并将编码结果提供给decoder作为其初始状态。
  • decoder是一个语言模型,负责带条件的语言生成。

seq2seq除了能用来翻译,还能干很多事:

  • 摘要
  • 对话
  • 文档解析
  • 代码生成

1.3.2 seq2seq模型训练

seq2seq的decoder是一个条件语言模型,预测P(yx)P(y|x),其中x为源语言句子。
P(yx)=P(y1x)P(y2y1,x)P(y3y1,y2,x)P(yTy1,,yT1,x)(1.3.2) P ( y | x ) = P \left( y _ { 1 } | x \right) P \left( y _ { 2 } | y _ { 1 } , x \right) P \left( y _ { 3 } | y _ { 1 } , y _ { 2 } , x \right) \ldots P \left( y _ { T } | y _ { 1 } , \ldots , y _ { T - 1 } , x \right)\\ \tag{1.3.2}
训练原理如下:
在这里插入图片描述

  • 训练阶段,time-steps的数目不固定,一般来说是每个batch中最长序列的长度(也可以固定序列为一个较大值,使用padding填充)
  • decoder不会因为提前预测到<end>导致loss计算出问题,因为在预测阶段,预测到表示这句话结束,而训练阶段,如果使用那就是在固定长度下计算loss,这当然ok, 而使用变长序列的话,在decoder的hidden中传递的是向量,即使该向量对应的是符号,也仍然可以往后传递,loss计算以训练集样本y的长度来确定。

1.3.3 贪心解码

贪心是指每一步都寻找当前最接近的答案。这里decoder计算是这样的,利用上一步的argmax的词向量作为下一个的输入,而不是直接用ht1h_{t-1}。这么做的缺点是,在每个词上先进行了argmax, 这并不一定是整个句子的argmax。
在这里插入图片描述
由于decoder贪心解码的缺点是由于没有回退撤销,我们对它进行改进

1.3.4 穷举(exhaustive)搜索解码

根据公式1.3.2, 如果每一步都考虑所有可能序列的概率,那就是O(TV)O(T^{V})复杂度,复杂度太高了。

1.3.5 启发式搜索方法:Beam Search

beam search是以上两种办法的折中,即在第t步保留前k(一般为4-5)个高概率的可能序列。以k=2为例的一个搜索过程如图:
在这里插入图片描述
终止条件:由于在测试阶段,表示结束,而使用beam search会导致一些不通长度的预测序列。终止规则如下:1. 设置非固定最大长度T。 2. 设置当有n个搜索结果达到时。
为了平衡不通长度结果的评分,使用如下评分函数:
score=1ti=1tlogPLM(yiy1,,yi1,x) score = \frac { 1 } { t } \sum _ { i = 1 } ^ { t } \log P _ { \mathrm { LM } } \left( y _ { i } | y _ { 1 } , \ldots , y _ { i - 1 } , x \right)

1.3.6 NMT优势与缺点

优势:

  • 翻译更流畅、更好的利用上下文、更少的人力投入,端到端,一个框架多种语言

缺点:

  • 不可解释、不好debug,不可预测
  • 难以控制,比如一些很明显的语言短语映射规则,不能直接规定

1.3.7 模型验证

BLEU(bilingual evalution understudy): 比较机器翻译结果和人类翻译结果如下相似度指标:

  • n-gram准确率
  • 对太短的机器翻译结果增加惩罚

BLEU缺点:

  • 一种语言可以有多种翻译,一个好的翻译模型可能获得较低分数

1.3.8 NMT发展史及现存问题

  • 2014年提出seq2seq, 2016年google将SMT换为NMT
  • 几百人历时数十年研发的SMT, 比不过几个人几个月训练的NMT

待解决问题:

  1. 词汇表中没有的词的处理
  2. 训练集与测试集领域不匹配时,表现较差
  3. 在长文本中维持context
  4. 某些语言缺少训练数据
  5. 不可解释性的系统奇怪举止:
    在这里插入图片描述

二、Attention

2.1 Attention结构

2.1.1 预备知识

  • RNN结构、前向反向传播
  • seq2seq

2.1.2 朴素seq2seq的缺点

  • 原始的seq2seq, encoder从一开始的每一个time-step的信息都可能会丢失,无法有效传播到decoder的对应位置。
  • encoder只有最后一个状态传到decoder,大量信息损失

2.1.3 dot-product Attention计算方式

如下图,在seq2seq的基础上:

  1. 有encoder的hidden向量h1,,hNRh\boldsymbol h_{1}, \ldots, \boldsymbol h_{N} \in \mathbb{R}^{h}
  2. 对于decoder每个step有hidden向量sts_t
  3. 通过点击计算注意力分数:et=[stTh1,,stThN]RN\boldsymbol{e}^{t}=\left[\boldsymbol{s}_{t}^{T} \boldsymbol{h}_{1}, \ldots, \boldsymbol{s}_{t}^{T} \boldsymbol{h}_{N}\right] \in \mathbb{R}^{N}
  4. 使用softmax将分数转换为注意力权重:αt=softmax(et)RN\boldsymbol \alpha^t = softmax(\boldsymbol e^t)\in \mathbb{R}^N(在attention论文中提出还要乘以缩放因子1h\frac{1}{\sqrt{h}},避免因维度过大导致分数太大,使得softmax函数梯度太小)
  5. 对encoder的hidden向量加权求和:at=i=1NαithiR2h\boldsymbol a^t=\sum_{i=1}^N \alpha_i^t \boldsymbol h_i \in \mathbb{R}^{2h}
  6. st\boldsymbol s_tat\boldsymbol a_t拼接作为decoder输出。
  7. 在decoder的设计中,有时候会将前一个time-step的attention作为当前这一步的输入之一。
    decoder在这里插入图片描述
    在这里插入图片描述
    扩展: Attention论文中对该结构的解释用到了Q(query), K(key), V(value),其中Q对应这里的decoder的hidden向量, K和V对应encoder的hidden向量。直观理解就是将每一个decoder的时间不作为一个查询,通过encoder计算得到输出向量,这个向量包含了整个encoder的加权信息。

其他Attention

点积attention是计算代价最小的一种,它要求s\boldsymbol{s}h\boldsymbol{h}维度相同,如果维度不同怎么办呢?有了前面的基础,应该能想到:

  1. multiplicative Attention
    ei=sTWhiR\boldsymbol{e_i} = \boldsymbol{s}^T\boldsymbol{W}\boldsymbol{h_i} \in \mathbb R

  2. addictive attention, 这里v\boldsymbol{v}是模型参数,它的维度是一个超参数。
    ei=vTtanh(W1hi+W2s)R \boldsymbol{e}_{i}=\boldsymbol{v}^{T} \tanh \left(\boldsymbol{W}_{1} \boldsymbol{h}_{i}+\boldsymbol{W}_{2} \boldsymbol{s}\right) \in \mathbb{R}

这两种Attention都引入了新的模型参数,学习能力比dot-product更强(但个人觉得attention的瓶颈是加权求和会损失信息,因此引入更多参数的意义似乎不大)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章