深度学习之Transformer笔记

Transformer笔记

  • 一、Transformer概览
  • 二、Encoder详解
  • 三、Decoder详解


本文是根据哔哩哔哩up主视频讲解所写,加入了一些个人理解。视频地址:Transformer从零详细解读

一、Transformer概览

Transformer最初用于机器翻译,具体功能可以看成:

深度学习之Transformer笔记_第1张图片

进一步细分:
深度学习之Transformer笔记_第2张图片

再进一步细分:Encoder-Decoder结构,多个Encoder和Decoder个数可以自行设置,每个Encoder和Decoder参数不同,但是是循环结构。
深度学习之Transformer笔记_第3张图片

Transformer原文结构:
深度学习之Transformer笔记_第4张图片

二、Encoder详解

Encoder结构划分:
深度学习之Transformer笔记_第5张图片

  1. 输入部分

1.1 Embedding

单词到词向量的过程,可采用word2vec等操作,对句子进行处理,生成其对应的词向量表征。

1.2 位置编码

RNN在进行序列信息处理时共享的是一套参数,因为是循环使用同一个模块,因此在训练时,对于不同的输入也是对同一套参数进行更新。
RNN梯度消失的解释:RNN的梯度是梯度和,随着时间的推进,根据链式传播的法则,RNN的梯度被近时间距离的梯度主导,远时间距离梯度可以忽略不计。
深度学习之Transformer笔记_第6张图片

而Transformer的Encoder中采用的是多头注意力机制,是直接对整个句子输入进行处理,没有保留句子中单词位置信息。位置编码方式如下:
深度学习之Transformer笔记_第7张图片

位置编码规则:对于偶数位置采用sin,奇数位置采用cos。
然后将词向量Embedding同位置编码相加,形成最终输入表征向量。
深度学习之Transformer笔记_第8张图片

PS:引入位置编码为何有意义?
根据sin和cos的运算规则,可以得出不同位置向量之间的相对位置关系。
深度学习之Transformer笔记_第9张图片

  1. 注意力机制

注意力机制的核心在于Q、K、V的计算。除以dk是为了防止Q、K点乘过大时导致的梯度消失问题。且控制方差为1。
深度学习之Transformer笔记_第10张图片

举个图文对应的例子:“婴儿在干嘛”这句话+右上角的图。
从例子中看,第一个Query是从输入向量中提取出来的的短时序列特征,而Key表示图片中局部命名特征和Value一一对应,Value表示从图片中提取的不同命名局部区域的特征。
Q、K的点乘运算可以体现不同特征之间的相似性,如例子中的“婴儿”和图片中那个区域联系更紧密,从而得到针对不同局部区域的权重信息。最后将结果同V相乘,得到加权和。

深度学习之Transformer笔记_第11张图片

NLP的例子。
Query是输入短时特征,需要计算该特征同其他不同时序信息之间的关系,Key则代表着不同时序信息,Value是一一对应的时序信息内容所对应的向量表征。
深度学习之Transformer笔记_第12张图片
深度学习之Transformer笔记_第13张图片

在只有单词向量时,如何获取Q、K、V,并计算对应的Attention值。
深度学习之Transformer笔记_第14张图片
深度学习之Transformer笔记_第15张图片
深度学习之Transformer笔记_第16张图片

多头注意力机制:注意到更多不同子空间的信息。
深度学习之Transformer笔记_第17张图片
深度学习之Transformer笔记_第18张图片

  1. 残差和LayNorm

Encoder的运算过程。
深度学习之Transformer笔记_第19张图片

3.1 残差

残差,反向传播链式法则易产生梯度消失的问题,而残差则通过相加和shortcut操作避免了梯度为0的情况出现,可以缓解梯度消失。
深度学习之Transformer笔记_第20张图片
深度学习之Transformer笔记_第21张图片

3.2 Layer Normalization(LN)

Batch Normalization(BN)在NLP中效果差,所以用LN。
BN是针对所有样本在同一维度的特征进行处理,可以解决内部协变量偏移,缓解梯度饱和(使用sigmoid作为激活函数时)加速收敛。
但是Batch_size较小时效果很差,均值方差只是在小范围内进行计算。
深度学习之Transformer笔记_第22张图片

BN在NLP中的体现:“我”和“今”属于同一维度特征,“爱”和“天”属于同一维度特征,以此类推。这种类比没有意义。
深度学习之Transformer笔记_第23张图片

Layer Norm则是针对每一个样本,在该样本范围内计算均值和方差来进行规范化。即“我”、“爱”、“中”、“国”、“共”、“产”、“党”范围内作规范化。

三、Decoder详解

Decoder结构划分:
深度学习之Transformer笔记_第24张图片

在Decoder中的第一个多头注意力处理过程中需要对当前和之后的单词作mask,隐藏未来时刻的信息,这样就符合预测时的情境。因为在预测时,只是输入之前信息来预测当前信息,不可能提前预知未来信息。
深度学习之Transformer笔记_第25张图片

Decoder的第二个多头注意力层是交互的,任意Encoder都会与所有的Decoder建立联系。
深度学习之Transformer笔记_第26张图片

Encoder生成K、V向量,Decoder生成Q向量。
深度学习之Transformer笔记_第27张图片

深度学习之Transformer笔记_第28张图片

你可能感兴趣的:(深度学习,深度学习,python,attention)