深度学习---机器翻译(GRU、注意力机制)
目录
一、机器翻译(MT)
机器翻译(machine translation)指的是 将序列从一种语言自动翻译成另一种语言。 事实上,这个研究领域可以追溯到数字计算机发明后不久的20世纪40年代, 特别是在第二次世界大战中使用计算机破解语言编码。 几十年来,在使用神经网络进行端到端学习的兴起之前, 统计学方法在这一领域一直占据主导地位 (Brown et al., 1990, Brown et al., 1988)。 因为统计机器翻译(statistical machine translation)涉及了 翻译模型和语言模型等组成部分的统计分析, 因此基于神经网络的方法通常被称为 神经机器翻译(neural machine translation), 用于将两种翻译模型区分开来。
机器翻译作为自然语言处理(NLP)领域的重要分支,已经有数十年的发展历史。从最早的基于规则的方法,到后来统计机器翻译(Statistical Machine Translation,SMT)的出现,再到如今深度学习方法的应用,机器翻译技术不断进步。然而,传统方法在处理长句子或上下文依赖问题时常常表现不佳。
二、注意力机制
2.1 背景
随着深度学习的兴起,神经机器翻译(Neural Machine Translation,NMT)成为研究热点。然而,早期的NMT模型,如序列到序列(Seq2Seq)模型,在处理长句子时仍存在信息丢失的问题。为了解决这一问题,2015年,Bahdanau等人提出了注意力机制(Attention Mechanism),该机制允许模型在翻译时动态地“关注”源句子的不同部分,从而显著提升了翻译效果。
2.2 基本原理
注意力机制的核心思想是为每个输出词动态计算与所有输入词的关联权重,从而生成加权求和的上下文向量。具体来说,注意力机制通过计算查询(query)、键(key)和值(value)三者之间的相似度来获得权重。这种方法不仅有效缓解了长句翻译中的信息瓶颈问题,还提高了翻译的准确性和流畅度。
2.2.1 基本概念
注意力机制主要涉及三个核心组件:查询(Query),键(Key),值(Value)。这三个组件来自于输入数据,具体如下:
- Query:当前或目标位置的表示,用于查找与之最相关的信息。
- Key:与输入数据相关联的标识符,用于匹配查询。
- Value:如果查询与键匹配,那么相关的值将被用来构造输出。
图2.2.1.1 注意力机制通过注意力汇聚将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入)的选择倾向¶
2.2.2 工作机制
- 打分:系统计算查询与每个键之间的相似度或相关性得分。这通常通过点积或其他相似性函数(如加权和)来完成。
- 归一化:使用softmax函数将得分转换为概率分布,确保所有得分的和为1,这样得分高的键对应的值将获得更高的关注度。
- 加权和:将每个值乘以其对应键的归一化得分,然后将结果相加,得到最终的输出。输出是所有值的加权求和,权重由查询与每个键的匹配程度决定。
图2.2.2.1 计算注意力汇聚的输出为值的加权和¶
2.2.3 数学表达
假设有一个序列到序列的任务,其中Query来自于目标序列的当前状态,而Keys和Values来自于源序列。注意力机制可以用下面的数学形式表达:
具体来说,令编码器在时间步𝑡𝑡的隐藏状态为ℎ𝑡,且总时间步数为𝑇。那么解码器在时间步𝑡′′的背景变量为所有编码器隐藏状态的加权平均:
其中给定𝑡′时,权重𝛼𝑡′𝑡在𝑡=1,…,𝑇的值是一个概率分布。为了得到概率分布,我们可以使用softmax运算:
现在,我们需要定义如何计算上式中softmax运算的输入𝑒𝑡′𝑡。由于𝑒𝑡′𝑡同时取决于解码器的时间步𝑡′和编码器的时间步𝑡,我们不妨以解码器在时间步𝑡′−1𝑡′−1的隐藏状态𝑠𝑡′−1与编码器在时间步𝑡𝑡的隐藏状态ℎ𝑡为输入,并通过函数𝑎𝑎计算𝑒𝑡′𝑡:
这里函数𝑎有多种选择,如果两个输入向量长度相同,一个简单的选择是计算它们的内积𝑎(𝑠,ℎ)=𝑠⊤ℎ。而最早提出注意力机制的论文则将输入连结后通过含单隐藏层的多层感知机变换 [1]:
其中𝑣、𝑊𝑠、𝑊ℎ都是可以学习的模型参数。
三、GRU门控循环单元
门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。 这些机制是可学习的,并且能够解决了上面列出的问题。 例如,如果第一个词元非常重要, 模型将学会在第一次观测之后不更新隐状态。 同样,模型也可以学会跳过不相关的临时观测。 最后,模型还将学会在需要的时候重置隐状态。 下面我们将详细讨论各类门控。
3.1 重置门和更新门
本文首先介绍重置门(reset gate)和更新门(update gate)。 我们把它们设计成(0,1)区间中的向量, 这样我们就可以进行凸组合。 重置门允许我们控制“可能还想记住”的过去状态的数量; 更新门将允许我们控制新状态中有多少个是旧状态的副本。
图3.1.1 重置门、更新门
本文从构造这些门控开始。图中描述了门控循环单元中的重置门和更新门的