动手学深度学习笔记4机器翻译与attention模型

一、机器翻译
机器翻译:将一段文本从一种语言自动翻译为另一种语言,用神经网络解决这个问题通常称为神经机器翻译(NMT)。 主要特征:输出是单词序列而不是单个单词。 输出序列的长度可能与源序列的长度不同。
机器翻译的步骤:
①数据预处理(数据清洗、转换成神经网络输入的minibatch);
②分词:(字符串—单词组成的列表);
③建立词典:单词id组成的列表;
④载入数据集;

生成模型:Encoder-decoder
在这里插入图片描述
适用于生成系统对话任务中。

Sequence to sequence模型:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
维特比算法:
在这里插入图片描述
维特比算法是一种特殊的但应用最广的动态规划算法。利用动态规划可以解决任何一个图中的最短路径问题,而维特比算法则是针对一种特殊的图——篱笆网络的有向图的最短路径问题提出的。之所以重要,是因为凡是使用隐马尔可夫模型描述的问题都可以用它来解码。
转载了一篇写的很好的便于理解的博客:https://blog.csdn.net/qq_16234613/article/details/82835641

简单贪心搜索:
在这里插入图片描述

以下于https://blog.csdn.net/qq_16234613/article/details/83012046转载
集束搜索(beam search):
集束搜索可以认为是维特比算法的贪心形式,在维特比所有中由于利用动态规划导致当字典较大时效率低,而集束搜索使用beam size参数来限制在每一步保留下来的可能性词的数量。集束搜索是在测试阶段为了获得更好准确性而采取的一种策略,在训练阶段无需使用。

假设字典为[a,b,c],beam size选择2,则如下图有:

1:在生成第1个词的时候,选择概率最大的2个词,那么当前序列就是a或b

2:生成第2个词的时候,我们将当前序列a或b,分别与字典中的所有词进行组合,得到新的6个序列aa ab ac ba bb bc,然后从其中选择2个概率最高的,作为当前序列,即ab或bb

3:不断重复这个过程,直到遇到结束符为止。最终输出2个概率最高的序列。

在这里插入图片描述
二、注意力机制于seq2seq模型
解码器在各个时间步依赖相同的背景变量(context vector)来获取输⼊序列信息。当编码器为循环神经⽹络时,
①背景变量来⾃它最终时间步的隐藏状态。
②将源序列输入信息以循环单位状态编码,
③然后将其传递给解码器以生成目标序列。
然而这种结构存在着问题,尤其是RNN机制实际中存在长程梯度消失的问题,对于较长的句子,我们很难寄希望于将输入的序列转化为定长的向量而保存所有的有效信息,所以随着所需翻译句子的长度的增加,这种结构的效果会显著下降。
与此同时,解码的目标词语可能只与原输入的部分词语有关,而并不是与所有的输入有关。例如,当把“Hello world”翻译成“Bonjour le monde”时,“Hello”映射成“Bonjour”,“world”映射成“monde”。在seq2seq模型中,解码器只能隐式地从编码器的最终状态中选择相应的信息。然而,注意力机制可以将这种选择过程显式地建模。
在这里插入图片描述
注意力机制框架:
Attention 是一种通用的带权池化方法,输入由两部分构成:询问(query)和键值对(key-value pairs)。对于一个query来说,attention layer 会与每一个key计算注意力分数并进行权重的归一化,输出的向量 o则是value的加权求和,而每个key计算的权重与value一一对应。
在这里插入图片描述
在这里插入图片描述
不同的attetion layer的区别在于score函数的选择

引入注意力机制的Seq2seq模型:
将注意机制添加到sequence to sequence 模型中,以显式地使用权重聚合states。
在这里插入图片描述
时间步为t的时候。此刻attention layer保存着encoding看到的所有信息——即encoding的每一步输出。
在decoding阶段,解码器的t时刻的隐藏状态被当作query,encoder的每个时间步的hidden states作为key和value进行attention聚合.
Attetion model的输出当作成上下文信息context vector,并与解码器输入 Dt 拼接起来一起送到解码器。

下图展示了seq2seq机制的所以层的关系,下面展示了encoder和decoder的layer结构
在这里插入图片描述
3.Transformer
CNN、RNN分别特点:
·CNNs易于并行化,但是不适合捕捉长序列的依赖关系。
·RNNs适合捕捉长距离变长序列的依赖,但是却难以实现并行化处理序列
为了整合CNN和RNN的优势,[Vaswani et al., 2017] 创新性地使用注意力机制设计了Transformer模型。该模型利用attention机制实现了并行化捕捉序列依赖,并且同时处理序列的每个位置的tokens,上述优势使得Transformer模型在性能优异的同时大大减少了训练时间。
Transformer结构:
在这里插入图片描述
与seq2seq主要有以下三点区别
1.Transformer blocks:将seq2seq模型重的循环网络替换为了Transformer Blocks,该模块包含一个多头注意力层(Multi-head Attention Layers)以及两个position-wise feed-forward networks(FFN)。对于解码器来说,另一个多头注意力层被用于接受编码器的隐藏状态。
2.Add and norm:多头注意力层和前馈网络的输出被送到两个“add and norm”层进行处理,该层包含残差结构以及层归一化。
3.Position encoding:由于自注意力层并没有区分元素的顺序,所以一个位置编码层被用于向序列元素里添加位置信息。

多头注意力层
自注意力(self-attention):自注意力模型是一个正规的注意力模型,序列的每一个元素对应的key,value,query是完全一致的。如图自注意力输出了一个与输入长度相同的表征序列,与循环神经网络相比,自注意力对每个元素输出的计算是并行的,所以我们可以高效的实现这个模块。

在这里插入图片描述
多头注意力层包含 h个并行的自注意力层,每一个这种层被成为一个head。对每个头来说,在进行注意力计算之前,我们会将query、key和value用三个现行层进行映射,这 h个注意力头的输出将会被拼接之后输入最后一个线性层进行整合。
在这里插入图片描述
在这里插入图片描述
位置编码:
与循环神经网络不同,无论是多头注意力网络还是前馈神经网络都是独立地对每个位置的元素进行更新,这种特性帮助我们实现了高效的并行,却丢失了重要的序列顺序的信息。为了更好的捕捉序列信息,Transformer模型引入了位置编码保持输入序列元素的位置
在这里插入图片描述
解码器:
Transformer 模型的解码器与编码器结构类似,然而,除了之前介绍的几个模块之外,编码器部分有另一个子模块。该模块也是多头注意力层,接受编码器的输出作为key和value,decoder的状态作为query。与编码器部分相类似,解码器同样是使用了add and norm机制,用残差层归一化将各个子层的输出相连。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值