论文《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》是由Kyunghyun Cho等人于2014年发表的。该论文主要有两个贡献:(1)是提出了RNN Encoder-Decoder架构,首次将Seq2Seq模型引入到统计机器翻译(SMT),为后续基于神经网络的机器翻译奠定了基础;(2)是提出了门控循环单元(GRU),通过引入重置门(reset gate)和更新门(update gate)的门控机制,解决了传统RNN的梯度消失问题和长期依赖学习困难。
本文对该论文的上述两个贡献做详细的讲解。
一、GRU门控循环单元
GRU的网络架构如下(我借用网上的一张图,在论文中的原始图片并这样,原论文中的图片较为简单,不便于理解)
与LSTM不同,GRU没有细胞状态,而是直接使用隐藏状态。GRU由两个门控制:重置门(R)和更新门(Z)。
1.1 重置门
- 作用:控制历史隐藏状态对当前候选状态的影响,决定是否“遗忘”部分历史信息。
- 数学表达式:
(1)
- 功能解析:若
,重置门关闭,忽略前一时刻隐藏状态
,候选状态
仅基于当前输入
计算:
适用于需要丢弃无关历史信息的场景;若
,保留全部历史信息,候选状态由
和
共同决定:
适用于依赖上下文的任务。
- 示例:在句子“The cat, which ate the fish, was happy”中,处理到“was”时,重置门可能关闭(
),忽略“which ate the fish”的中间信息,直接关联主语“The cat”。
1.2 更新门
- 作用:平衡历史隐状态与新候选状态的比例,决定隐状态的更新程度。
- 数学表达式:
(2)
- 功能解析:最终隐藏状态
是历史状态
和候选状态
的加权和:
(3)
其中 (4)
若,保留大部分历史信息(
),适合长期记忆;若
,优先采用新信息(
),适合快速适用变化。
- 示例:在时序预测中,若当前输入与历史模式高度相关(如气温周期性变化),更新门倾向于
,保留历史模式;若出现异常值(如突然降温),则
,快速更新状态。
因此,GRU前向传播(除输出外)的公式为(1)~(4)。
二、RNN Encoder-Decoder
循环神经网络编码器-解码器(简称RNN Encoder-Decoder)由两个协同工作的循环神经网络RNN构成,分别担任编码器与解码器的功能。编码器将变长源语言序列映射为定长向量表征,而解码器则将该向量表征重构为变长目标语言序列。两个网络通过联合训练,旨在最大化给定源语言序列条件下目标语言序列的条件概率。RNN Encoder-Decoder网络结构如下图所示:
“两个网络通过联合训练,旨在最大化给定源语言序列条件下目标语言序列的条件概率”这句话的意思是:对于每一个源语言-目标语言对(),都有条件概率
,那么目标函数可写为:
,取对数后,目标函数变为
。其中,
可使用softmax进行求解。在RNN Encoder-Decoder中,条件概率
更为复杂些,因为Decoder预测
时受定长向量c、隐藏状态
(Decoder中的隐藏状态)和前一时刻输出
的影响。下面对Encoder和Decoder进行详述:
2.1 Encoder
在训练时,作者先是把源语言短句和目标语言短句进行了分词,变为了一个个词,然后将词进行了embedding,每个词都映射到了500维的次空间。表示的就是将词embedding到词空间。
Encoder中包含了1000个GRU,计算过程见上文的公式(1)~(4)。隐藏状态初始化为0()。
定长向量c的计算公式为 (5)
下标N表示源语言在Encoder中经过N步后完成计算。因此,整个Encoder的过程就是公式(1)~(5)。
2.2 Decoder
在Decoder中,初始化的隐藏状态为,为了进行区分,用
表示Decoder中的隐藏状态,
表示Decoder中C的权重向量。
在时刻t,Decoder中的隐藏状态为:
其中:
Decoder需要生成目标语言短句。在时刻t,Decoder生成第j个词的概率为:
上式中,为输出层权重矩阵的第j行,对应词表中的第j个词的权重向量。
为输出层的输出。不过,作者采用了maxout激活函数,所以
并不是直接输出层的输出。输出层的输出为:
经过maxout后,中的第i个元素为
对做个解释:
在RNN编码器-解码器中,输出层权重矩阵G的每一行对应目标语言此表的第j个词的权重向量,其作用是将隐藏状态映射到词表空间,计算生成每个词的概率。
1、输出层权重矩阵的结构
假设:
- 目标语言词表大小为K(例如:法语词表中有50000个词)
- 解码器隐藏状态维度为d(例如:d=1000)
则输出层权重矩阵的结构为:
- 每一行
对应此表中的第j个词的权重向量;
- 第j个词的生成概率由
与解码器隐藏状态
的点击决定。
2、权重向量的作用
在时间步t,解码器隐藏状态为。生成第j个词的概率计算为:
- 点积意义:
衡量隐藏状态
与词j的权重向量的相似度。相似度越高,生成该词的概率越大。
- softmax归一化:将所有词的得分转换为概率分布(和为1)
3、直观理解
- 每个词对应一个“方向”:
可视为词j在d维空间中的方向向量。当隐藏状态
指向某个词的方向时,生成该词的概率更高。例如:若
与g"chat"(法语“猫”)方向接近,模型倾向于生成“chat”。
- 与词嵌入关系:在部分模型中,
可能与词嵌入矩阵E绑定(即
),此时:
是词j的嵌入向量的转置。
4、实际应用
假设目标词表包含3个词:“chat”(猫)、“chien”(狗)、“oiseau”(鸟),隐藏状态维度d=2。
权重矩阵G可能如下(简化示意):
若解码器隐藏状态,计算得分:
- softmax概率为:
所以,模型更可能生成“chat”。
三、论文实验
3.1 实验数据
在本论文中,作者采用了英法双语语料库,包括:欧洲会议(61M word)、新闻评论(5.5M)、UN(421M)和两个网络爬虫文本(分别为90M和780M)。网络爬虫文本数据集的噪声较多些。这里的所有词数均是指经过分词后对应的法语词汇数量。作者对源语言和目标语言的词汇进行了限制:仅保留了最高词频的15000个词,其他的词用[UNK]来代替。然后作者将这些词都embedding到维度为100的向量中。
3.2 RNN Encoder-Decoder网络
1、网络结构:在RNN Encoder-Decoder中,编码器和解码器均采用了1000个隐藏单元。候选状态的激活函数采用双曲正切函数。在decoder的输出层采用的是maxout激活函数。
2、权重初始化:除RNN的权重外,其他权重初始化值来自于均值为0,标准差为0.01的高斯分布。对于RNN的权重初始化采用如下方式:随机生成一个均值为0,标准差为0.01的高斯分布W。对W进行SVD分解,得到。取左奇异向量矩阵U作为初始化权重,得到的U为正交矩阵。在训练初期,权重矩阵的正交性有助于缓解梯度问题。
3.3 定量与定性分析
在定量分析方面,作者采用BLEU得分作为模型性能的评判标准。通过实验可知,RNN Encoder-Decoder、CSLM+RNN Encoder-Decoder及CSLM+RNN Encoder-Decoder+WP(WP为UNK单词惩罚项,与UNK的数量相关)的得分要比传统统计契机翻译要高。在定性分析方面,为了探究模型性能提升的来源,作者分析了RNN Encoder-Decoder计算的 短句对 评分与传统翻译模型中的短句翻译概率p(f|e)的差异。结果显示,RNN Encoder-Decoder通过捕捉语音规律而非语料统计特性,有效弥补了传统模型在低频短句上的不足。