【笔记3-7】CS224N课程笔记 - 神经网络机器翻译seq2seq注意力机制

【笔记3-1】CS224N课程笔记 - 深度自然语言处理
【笔记3-2】CS224N课程笔记 - 词向量表示 word2vec
【笔记3-3】CS224N课程笔记 - 高级词向量表示
【笔记3-4】CS224N课程笔记 - 分类与神经网络
【笔记3-5】CS224N课程笔记 - 依存分析
【笔记3-6】CS224N课程笔记 - RNN和语言模型
【笔记3-8】CS224N课程笔记 - 卷积神经网络

CS224n:深度学习的自然语言处理(2017年冬季)1080p https://www.bilibili.com/video/av28030942/

关键词:seq2seq,注意力机制,神经网络机器翻译,语音处理

seq2seq神经网络机器翻译

前面已经讲解过预测单个输出的问题,比如一个单词的NER标签,给定过去几个单词预测最有可能出现的下一个单词。还有一些NLP任务依赖于顺序输出,或者是长度可变的序列。比如

  • 翻译:用一种语言输入一个句子,然后用另一种语言输出相同的句子。
  • 对话:把一个陈述或问题作为输入并做出回应。
  • 摘要:将大量文本作为输入并输出摘要。

本章将关注seq2seq模型,一个用于处理上述问题的基于深度学习的框架。

历史方法

在过去,翻译系统是基于以下概率模型构建的:

  • 翻译模型,源语言中的句子/短语最可能翻译成什么
  • 语言模型,一个给定的句子/短语整体的可能性。

这些组件用于构建基于单词或短语的翻译系统。但一个简单的基于单词的系统不能捕捉语言之间排序的差异(例如否定词的位置、句子中主语和动词的位置,等等)。在Seq2Seq之前,基于短语的翻译系统可以根据短语序列考虑输入和输出,并且可以处理比基于单词的系统更复杂的语法。然而,长期依赖关系仍然很难在基于短语的系统中捕获。

Seq2Seq的优势,尤其是使用LSTM,是现代翻译系统能够生成的看到整个输入后的任意输出序列。甚至可以自动关注输入的特定部分来提供帮助生成有用的翻译。

seq2seq基础

seq2seq模型是由两个递归神经网络组成的端到端模型:

  • 编码器,将模型的输入序列作为输入,并将其编码为固定大小的“上下文向量”
  • 解码器,它使用上面的上下文向量作为“种子”,从中生成输出序列。

因此,Seq2Seq模型通常被称为“编解码器模型”。

seq2seq - 编码部分

编码器将输入序列读入Seq2Seq模型,并为序列生成一个固定维上下文向量C。
编码器
为此,编码器使用一个RNN单元(通常是LSTM)一次读取一个输入标记。最后隐藏状态的细胞将成为C。由于压缩一个任意长度的向量序列成固定大小较为困难(尤其是翻译等困难的任务),编码器通常由堆叠LSTM组成,即一系列LSTM层,每一层的输出是下一层的输入。最后一层的LSTM隐藏状态将作为C使用。

Seq2Seq编码器经常反向处理输入序列,这样编码器看到的最后一件事大致对应于模型输出的第一个东西;这使解码器更容易“开始”输出,更容易生成正确的输出语句。在翻译中,要让网络尽快翻译输入的头几个单词,一旦头几个单词翻译正确,继续构造一个正确的句子要容易得多。

seq2seq - 解码部分

解码器也是LSTM网络,但比编码器稍复杂一些。本质上,希望将其用作一种语言模型,能够利用到目前为止生成的单词和输入。保留编码器的堆叠LSTM结构,使用上下文向量初始化第一层的隐藏状态;使用输入的上下文来生成输出。
解码
解码器与上下文设置好后,传递一个特殊的标志来表示输出生成的开始,通常是一个附加到输入末尾的 &lt; E O S &gt; &lt;EOS&gt; <EOS>(在输出末尾也有一个)。然后运行所有LSTM层,一个接着一个,在最后一层的输出上使用softmax生成第一个输出单词。然后将该单词传递到第一层,并重复生成。这就是LSTM充当语言模型的方法。

有了输出序列就使用相同的学习策略,定义损失为预测序列上的交叉熵,并用梯度下降和反向传播将其最小化。编码解码器同时训练,因此都学习相同的上下文向量表示。

NMT示例

注意输入和输出的长度之间没有联系,任何长度的输入都可以传入,任何长度的输出都可以生成。由于LSTM的实际限制,Seq2Seq模型在很长的输入时间内会失效。

考虑Seq2Seq模型如何将“what is your name”翻译成“comment t 'appelles tu”。

首先,从输入四个独热向量开始(这些输入可能嵌入到密集的向量表示中,也可能不嵌入)然后一个堆叠的LSTM网络反向读取序列并将其编码到一个上下文向量中(这个上下文向量是一个向量空间,表示询问某人姓名的概念)用于初始化另一个堆叠LSTM的第一层。对网络的每一层运行一个步骤,对最后一层的输出执行softmax,选择第一个输出单词,这个单词被反馈回网络作为输入。

在反向传播过程中,编码器的LSTM权值被更新,以便更好地学习句子的向量空间表示,解码器的LSTM权值被训练,使其生成与上下文向量相关的语法正确的句子。

双向RNN

句子中的依赖关系并不只在一个方向上起作用,一个单词可以依赖于之前或之后的另一个单词。到目前为止的Seq2Seq并不能解释这一点。在任何时候,我们只考虑当前单词之前单词的信息(通过LSTM隐藏状态)。对于NMT,我们需要能够有效地编码任何输入,而不管输入中的依赖关系方向如何。
双向
双向RNNs通过在两个方向遍历一个序列并连接结果输出(cell输出和最终隐藏状态)来解决这个问题。对于每个RNN单元,只是简单地添加另一个单元,但以相反的方向提供输入。与第t个单词对应的输出 o t o_t ot 是连接的向量 [ o t ( f ) o t ( b ) ] [o_t^{(f)} o_t^{(b)}] [ot(f)ot(b)],其中 o t ( f ) o_t^{(f)} ot(f) 为正向RNN对单词t的输出, o t ( b ) o ^{(b)} _t ot(b)为反向RNN的相应输出。同理,最终隐藏状态 h = [ h ( f ) h ( b ) ] h=[h^{(f)} h^{(b)}] h=[h(f)h(b)],其中 h ( f ) h^{(f)} h(f)为正向RNN的最终隐藏状态, h ( b ) h^{(b)} h(b)为反向RNN的最终隐藏状态。

注意力机制

提出的动机

人们在听到一句话时,会重点关注被认为重要的某些单词。类似地,Bahdanau等人注意到使用最终的RNN隐藏状态作为seq2seq模型的上下文向量的缺陷:通常,输入的不同部分具有不同的重要性级别。此外,输出的不同部分甚至可能认为输入的不同部分“重要”。例如在翻译中,输出的第一个单词通常基于输入的前几个单词,最后一个单词很可能基于输入的最后几个单词。

注意力机制利用这一观察结果,为解码器网络提供了在每个解码步骤查看整个输入序列的功能,然后解码器可以在任何时间点决定哪些输入单词是重要的。

Bahdanau et al. NMT

前面说过,seq2seq模型由两个部分组成,一个是编码输入语句的编码器,另一个是利用解码器提取的信息生成翻译后的句子的解码器。
基本上,输入是一个要翻译的单词序列 x 1 , . . . , x n x_1,...,x_n x1,...,xn,目标句子是一系列单词 y 1 , . . . . , y m y_1,....,y_m y1,....,ym

  • encoder
    ( h 1 , … , h n ) (h_1,…, h_n) (h1,,hn)为表示输入语句的隐藏向量。例如,这些向量是bi-LSTM的输出,包含有句子中每个单词的上下文表示。
  • decoder
    解码器的隐藏状态 s i s_i si使用递归公式 s i = f ( s i − 1 , y i − 1 , c i ) s_i=f(s_{i-1},y_{i-1},c_i) si=f(si1,yi1,ci) 进行计算。其中 s i − 1 s_{i-1} si1为之前的隐藏向量, y i − 1 y_{i-1} yi1是上一步生成的词, c i c_i ci是上下文向量,包含有解码器时间步i中来自原句子的上下文相关信息。
    上下文向量 c i c_i ci捕获第i个解码时间步的相关信息(不像标准的Seq2Seq只有一个上下文向量)。对于原始语句中的每个隐藏向量 h j h_j hj,计算一个分数 e i , j = a ( s i − 1 , h j ) e_{i,j}=a(s_{i-1},h_j) ei,j=a(si1,hj) 其中a是实数域上的函数,例如单层全连接神经网络。然后得到一个标量值序列 e i , 1 , … , e i , n e_{i,1},… ,e_{i, n} ei,1,,ei,n 使用softmax层 α i , j = e x p ( e i , j ) ∑ k = 1 n e x p ( e i , k ) \alpha_{i,j}=\frac{exp(e_{i,j})}{\sum_{k=1}^{n}exp(e_{i,k})} α
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值