本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本文将分 3 期进行连载,共介绍 18 个在机器翻译任务上曾取得 SOTA 的经典模型。
- 第 1 期:RNNsearch、Multi-task、attention-model、Convolutional Encoder、Attention、Value-Network
- 第 2 期:Unsupervised NMT、PBSMT、coarse-to-fine、two-pass decoder translation、XLMs、MASS
- 第 3 期:FlowSeq、mBART、BERT-fused、mRASP、mRASP2、CeMAT
您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本期收录模型速览
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
RNNsearch | https://sota.jiqizhixin.com/project/rnn-search50 收录实现数量:6 支持框架:PyTorch、TensorFlow等 |
Neural machine translation by jointly learning to align and translate |
Multi-task | https://sota.jiqizhixin.com/project/multi-task-3 | Multi-task Learning for Multiple Language Translation |
attention-model | https://sota.jiqizhixin.com/project/attention-model 收录实现数量:5 支持框架:PyTorch、TensorFlow等 |
Effective Approaches to Attention-based Neural Machine Translation |
Convolutional Encoder | https://sota.jiqizhixin.com/project/convolutional-encoder | A Convolutional Encoder Model for Neural Machine Translation |
Attention | https://sota.jiqizhixin.com/project/attention-2 收录实现数量:5 支持框架:PyTorch、TensorFlow等 |
Attention is All You Need |
Value-Network | https://sota.jiqizhixin.com/project/value-network | Decoding with Value Networks for Neural Machine Translation |
机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。
一般而言,RBMT分析一段文字,通常会先建立目标语言中介的、象征性的表义字词。再根据中介的表义字词来决定使用人工国际语言(interlingual)化的机器翻译,或是使用转化原则法的机器翻译(transfer-based machine translation)。这些方法都必须拥有具备足够形态学的、语句学的以及语义学的资讯以及大量的字词规则所建构的辞汇。常见RBMT的难处在于无法给于适当且足够庞大的资讯,来满足不同领域或是不同法则的机器翻译法。
统计机器翻译(SMT)的首要任务是为语言的产生构造某种合理的统计模型,并在此统计模型基础上,定义要估计的模型参数,并设计参数估计算法。早期的基于词的统计机器翻译采用的是噪声信道模型,采用最大似然准则进行无监督训练,而近年来常用的基于短语的统计机器翻译则采用区分性训练方法,一般来说需要参考语料进行有监督训练。
2014年Dzmitry Bahdanau和Yoshua Bengio等学者提出了神经机器翻译。神经机器翻译(NMT)基于深度神经网络,为机器翻译提供了端到端的解决方案,在研究社区中受到了越来越多的关注,且近几年已被逐渐应用到了产业中。NMT 使用基于 RNN 的编码器-解码器框架对整个翻译过程建模,编码器是把源语言经过一系列的神经网络的变换之后,表示成一个高维向量。解码器负责把这个高维向量再重新解码(翻译)成目标语言。在训练过程中,它会最大化目标语句对给定源语句的似然度。在测试的时候,给定一个源语句 x,它会寻找目标语言中的一个语句 y,以最大化条件概率 P(y|x)。由于目标语句的可能数目是指数量级的,找到最优的 y 是 NP-hard 的。因此通常会使用束搜索(beam search)以找到合理的 y。束搜索是一种启发式搜索算法,会以从左向右的形式保留得分最高的部分序列扩展。特别是,它保存了一群候选的部分序列。在每个时间步长上,该算法都会通过添加新词的方法扩展每一个候选部分语句,然后保留由 NMT 模型评分最高的新候选语句。当达到最大解码深度或者所有的语句都完全生成的时候(即所有的语句都包含 EOS 符号后缀的时候),算法就会终止。
我们在这篇报告中总结了神经机器翻译中的经典TOP模型。
RNNsearch
RNNsearch是编码器-解码器模型的扩展,该模型学习联合对齐和翻译,每次在翻译中生成单词时,都会(软)搜索源句子中最相关信息集中的一组位置。然后,模型基于与这些源位置和所有先前生成的目标词关联的上下文向量来预测目标词。与基本的编码器/解码器相比,RNNsearch最重要的区别在于,它不会尝试将整个输入语句编码为单个固定长度的向量。取而代之的是,它将输入的句子编码为一系列向量,并在解码翻译时自适应地选择这些向量的子集。这使得神经翻译模型不必将源句子的所有信息压缩为固定长度的向量。
RNNsearch架构包括一个(双向RNN)编码器和一个解码器,在解码过程中模拟搜索源句。在解码翻译过程中通过源句进行搜索。
解码器。条件概率如下:
与经典的编码器-解码器方法不同,这里的概率是以每个目标词y_i的不同上下文向量c_i为条件的。上下文向量c_i取决于注释序列(h_1, ..., h_Tx),编码器将输入句子映射到该注释中。每个注释h_i包含整个输入序列的信息,主要集中在输入序列的第i个词的周围部分。c_i为这些注释h_i的加权和:
其中,e_ij是一个对齐模型,对位置j附近的输入和位置i的输出的匹配程度进行评分。将比对模型a参数化为前馈神经网络,该神经网络与系统的所有其他组件共同训练。与传统机器翻译不同,对齐方式不被视为潜在变量。取而代之的是,对齐模型直接计算软对齐,从而实现了反向传播成本函数的梯度。该梯度可用于联合训练对齐模型以及整个翻译模型。
编码器。实现每个词的注释不仅要总结前面的词,而且要总结后面的词。RNNsearch用编码器所有hidden state的加权平均来表示上下文,权重表示解码器中中各state与编码器各state的相关性,简单的seq2seq认为解码器中每一个state都与输入的全部信息(用last state表示)有关,而本文则认为只与相关的state有关系,即在解码器部分中,模型只将注意力放在了相关的部分,对其他部分注意很少,这一点与人类的行为很像,当人看到一段话或者一幅图的时候,往往会将注意力放在一个很小的局部,而不是全部。如图1所示。
图1. RNNsearch模型在给定的源句(x_1, x_2, ..., x_T)中生成第t个目标词y_t的图形说明
RNNsearch的编码器是一个双向RNN(biRNN)。一个biRNN包括前向和后向RNN。前向RNN 按顺序读取输入向量并计算前向隐状态序列 。后向RNN 逆序读取序列,得到一个后向隐状态序列。将前向隐状态和后向隐状态联系起来,得到每个单词的注释。用这样的方法,注释既能总结前面的单词又能总结后面的单词。注释序列被解码器和排列模型之后用来计算文本向量。
当前 SOTA!平台收录 RNNsearch 共 6 个模型实现资源。
项目 | SOTA!平台项目详情页 |
RNNsearch | 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/rnn-search50 |
Multi-task
Multi-task是百度提出的用来解决语料稀疏问题的多任务学习框架。在这项研究中,百度翻译提出了共享编码器的多任务学习神经网络翻译模型,建立了基于神经网络的多语言翻译统一框架。如图2所示。
图2. 用于多目标语言翻译的多任务学习框架
给定一对训练句子{x, y},基于标准的循环神经网络的编码器-解码器机器翻译模型适合一个参数化的模型,以最大化给定源句子x的目标句子y的条件概率,即argmax p(y|x)。可以将此扩展到多语言设置。特别是,假设想从英语翻译成许多不同的语言,例如,法语(Fr)、荷兰语(Nl)、西班牙语(Es)。训练前收集平行训练数据,即En-Fr、En-NL、En-Es平行句子。由于三个语言对的英文表述是在一个编码器中共享的,优化的目标函数是以同一编码器产生的表述为条件的几个条件概率项的总和:
假设我们有几个语言对。对于一个特定的语言对,给定一个源句子输入序列,目标是共同最大化每个生成的目标词的条件概率。估计生成第t个目标词的概率为:
g可以被看作是一个具有神经网络的概率预测器。(s_t)^Tp是时间t的循环神经网络隐状态,可以被估计为:
上下文向量(c_t)^Tp取决于一连串的注释(h_1, ..., h_Lx),编码器将输入句子映射到这些注释上,其中,Lx是x中的标记数量。每个注释h_i是一个双向的循环表示,围绕着第i个词前向和后向的序列信息:
计算h_j 时,也使用了一个双向的循环神经网络。
从概率的角度来看,该模型能够在相同的源语料库中学习几种目标语言的条件分布。因此,循环编码器-解码器是用几个条件概率加在一起进行联合训练的。至于双向循环神经网络模块,采用门控递归神经网络。在多任务学习框架中,编码器中门控递归神经网络的参数是共享的,其表述如下:
循环计算的过程如图3所示,其中,x_t表示序列中第t个词的独热向量。
图3. 门控循环神经网络计算,其中,r_t是负责记忆单元消除的复位门,z_t可以看作是当前状态信息和历史信息之间的软权重。
项目 | SOTA!平台项目详情页 |
Multi-task | 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/multi-task-3 |
attention-model
这篇论文主要是提出了Global attention 和 Local attention, 即两种attention 机制:一种始终关注所有源词的全局方法和一种每次仅查看源词子集的局部方法。这两种类型模型的共同之处在于,在解码阶段的每个时间步长t 中,两种方法都首先在堆叠LSTM的顶层将隐状态h_t 作为输入。目标是获得一个上下文向量c_t,捕获相关的源端信息以帮助预测当前目标单词y_t。虽然这些模型在获得上下文向量c_t 的方式上有所不同,但它们共享相同的后续步骤。
图4. : 全局注意力模型—在每个时间步长t,该模型根据当前目标状态h_t和所有源状态h¯s推导出一个可变长度的对齐权重向量a_t。然后,根据a_t计算出一个全局上下文向量c_t,即所有源状态的加权平均数
图5. 局部注意力模型—该模型首先预测出当前目标词的单一对齐位置p_t。然后用一个以源位置p_t为中心的窗口来计算上下文向量c_t,即窗口中源隐状态的加权平均。权重是由当前目标状态h_t和窗口中的源状态h¯s推断出来的
在给定目标隐状态h_t和源侧上下文向量c_t的情况下,采用一个简单的连接层来结合这两个向量的信息,生成一个注意力隐状态,如下所示:
注意力向量h˜t通过softmax层反馈,生成预测分布,表述为:
全局注意力。全局注意力模型的思路是在推导上下文向量c_t时考虑编码器的所有隐状态。在这种模型类型中,通过比较当前的目标隐状态h_t和每个源隐状态h¯s,得出一个可变长度的排列向量a_t,其大小等于源侧的时间步长数:
这里,score被称为基于内容的函数,考虑三种不同的选择:
此外,使用了一个基于位置的函数,其中对齐分数仅从目标隐状态h_t计算出来,具体如下:
考虑到对齐矢量作为权重,上下文矢量c_t计算为所有源隐状态的加权平均。
局部注意力。全局注意力有一个缺点,即它必须为每个目标词关注源头的所有单词,而且有可能使它在翻译较长的序列,如段落或文件时不切实际。为了解决这一缺陷,提出了一种局部注意力机制,即选择只关注每个目标词的一小部分源位置。局部注意力机制有选择地集中在一个小的背景窗口上,并且是可区分的。这种方法的优点是避免了软注意力中所需的昂贵的计算消耗,同时,比硬注意力方法更容易训练。具体而言,该模型首先为每个目标词在时间t生成一个对齐的位置p_t。然后,推导上下文向量c_t为窗口[pt-D, pt+D]内源隐状态集合的加权平均;D是根据经验选择的。与全局方法不同,现在的局部排列向量a_t是固定维度的,即∈R^2D+1。考虑该模型的以下两种变体。
单调对齐(local-m) — 简单地设置p_t = t,假设源和目标大体上是单调对齐的。
可预测的对齐(local-p) — 模型不再假设单调对齐,而是预测一个对齐位置,如下所示:
W_p 和v_p 是模型的参数,它们用于学习来预测位置。S 为源语句的长度。sigmoid 的结果使得p_t ∈ [0,S ]。为了使对齐点靠近p_t,放置一个以p_t为中心的高斯分布。具体而言,对齐权重定义为:
Input-feeding 方法。在全局和局部方法中,attention 的决策是独立进行的。在标准机器翻译中,在翻译过程中经常保持一个coverage 集以跟踪哪些源词已被翻译。同样,在attention NMT中,应该考虑到过去的对齐信息共同作出决定。为了解决这个问题,提出了一种input-feeding 方法,其中,attention 向量h_t 在下一个时间步长与输入串联,如图6所示。这种联接有两重效果:(a)希望使得模型更完整地关注前面对齐的选择;(b) 创建一个非常深的网络,在水平和垂直方向同时扩展。
图6. input-feeding—将注意力向量h˜t输入到下一个时间步长中,以告知模型过去的排列决定。
当前 SOTA!平台收录 attention-model 共 5 个模型实现资源。
项目 | SOTA!平台项目详情页 |
attention-model | 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/attention-model |