深度学习
文章目录
一、机器翻译(MT)
- 用神经网络进行机器翻译-----神经机器翻译(NMT)。困难点在于输入和输出的序列长度不一样。
- 有一种结构可以解决这个困难,如下图。在Encoder结构中将原语言转换为语义编码c(隐藏状态),再通过Decoder过程转换为目标语言。
- Encoder到Decoder有一种Sequence to Sequence模型,如下图所示。将源语言和目标语言的单词都形成词向量输入到隐藏层中,再根据对应的编码实现从输入到输出。
二、注意力机制
1.基本概念
- 上面的Sequence to Sequence模型在各个时间步数上依赖相同的背景变量(循环神经网络的背景变量是最终时间步的隐藏状态)。由于RNN机制存在长程梯度消失的问题,随着句子长度增加,seq2seq模型的结构效果不佳。
- 另一个问题是Decoder的目标词语可能只与输入的部分词语有关而不是与所有的输入有关,在Encoder-Decoder模型中,所有输出的单词使用的语义编码C是相同的,而语义编码C是根据输入句子X的单词经过Encoder编码产生的,所以句子X的任意单词对生成最后的目标单词的影响力是相同的。而在seq2seq模型中由于RNN的结构原因,后输入的单词影响较前输入的单词的影响力大,非等权影响。
- 注意力机制(Attention)可以部分解决以上问题。注意力机制可以分配给不同单词不同的注意力大小,这意味着在生成输出单词
时,Encoder-Decoder模型中固定的语义编码C会换成加入根据输出单词进行调整的注意力模型变化的
。
- 注意力机制具体过程:
- 第一步计算attention scores:将当前隐藏状态 与输入句子的每个单词对应的隐藏单元节点状态 对比,即通过函数 获得目标单词和每个输入单词对应的可能性。(不同attention layer 的区别在于该函数的选择)
- 第二步将函数经过 归一化,取得注意力权重。
- 最后输入值与权重相乘加权求和输出。
- 表达式:
- 参考blog:https://www.jianshu.com/p/e14c6a722381
2.常见的注意力层
(1)点积注意力(dot product/multiplicative attention)
- 表达式:
(2)多层感知机注意力
- 表达式:
(3)引入注意力机制的Seq2seq模型
-
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218003252897.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTYwOTgz,size_16,color_FFFFFF,t_70)
三、transformer
- transformer模型利用attention机制实现了并行化捕捉序列依赖,并且同时处理序列的每个位置的tokens,从而减少训练时间同时保持性能良好。
- transformer模型基于Encoder-Decoder结构,此外还将seq2seq模型的循环网络替换为transformer blocks,该模块包含一个多头注意力层(Muti-head attention)和两个基于位置的前馈网络(Position-wise FFN).
- 基于位置的前馈网络接受一个形状为(batch_size,seq_length, feature_size)的三维张量。由两个全连接层组成,作用在最后一维上。
- 相加归一化层(Add and norm):多头注意力层和前馈网络的输出被送到两个“add and norm”层进行处理,该层包含残差结构以及层归一化。
- 位置编码(Position encoding):由于自注意力层并没有区分元素的顺序,所以一个位置编码层被用于向序列元素里添加位置信息。
多头注意层
- 多头注意力层包含 个并行的自注意力层,每一个自注意力层是一个head,每次先计算并行的自注意力层输出,然后对这 个注意力头的输出拼接后整合到一个线性层中。
- 自注意力层结构如下图:
- 表达式:
每个头的输出: 线性整合: