文章目录
transformer组成
由若干encoder-decoder组成
encoder/decoder组成
1.self-Attenion
背景
九几年,Attention机制在视觉图像领域被提出。2014年,有团队使用attention机制在RNN上进行图像分类。2017年,谷歌团队使用大量self-attention进行NLP任务处理。
概念
Attention机制来源人类视觉注意力机制。是指人们在感知事物时不会将一个场景全部看完,而是将注意力放在局部,并在将来学习时若出现类似场景,也会将注意力放到该部分上。
attention函数计算
NLP中常用的一种attention计算方法。是将一个查询(query)到一系列(键key-值value)对的映射。
Attention计算有三步:
1.将query和key进行相似度计算,得到权重。
计算相似度可以使用的函数有:点积、拼接、感知机等。
2.使用softmax(归一化指数)函数对权重进行归一化处理。
3.将权重和响应键值value进行加权求和,得到attention值。
NLP中,通常key=value
2.Feed Forward Neural Network(前馈神经网络)
神经网络提供一种非线性模型,用来拟合我们的训练样本集数据(x(i),y(i))
神经网络由神经元组成,每个神经元具有多个输入和一个输出。
使“输入->输出”的函数称为“激活函数”。
常见的激活函数有:sigmoid函数,tanh(z) 函数
1.是一个在生物学中常见的S型函数,其输出为[0,1]之间。
2.tanh是双曲正切函数,其输出为[−1,1]之间。
神经元构成神经网络。
1.标有“+1”的节点称为“偏置节点”。
2.神经网络最左侧的一列称为“输入层”。
3.神经网络最右侧的一列称为“输出层”。
4.神经网络除输入输出层以外的所有节点组成“隐藏层”。
上图中有3个”’输入单元”’(偏置单元不计在内),3个”’隐藏单元”’及一个”’输出单元”’。
使用激活函数从L1层逐一计算至L3层,称为前向传播。
transformer的输入
将单词利用词嵌入方式变为词向量,论文中词向量为dim=512
(词嵌入方法见上一篇文章)
词向量(称为tensor)输入encoder的第一个block,第一个block的输出作为第二个block的输入。
Self-Attention(核心)的计算
每个单词对应三个向量query,key,value,dim=64
同时有三个512*64的权值矩阵:Wq,Wk,Wv
每个单词通过词嵌入得到一个词向量,词向量与权值矩阵分别相乘获得qkv三个向量
【Query,Key,Value取自信息检索系统。
举个简单的搜索的例子来说。当你在某电商平台搜索某件商品(年轻女士冬季穿的红色薄款羽绒服)时,你在搜索引擎上输入的内容便是Query,然后搜索引擎根据Query为你匹配Key(例如商品的种类,颜色,描述等),然后根据Query和Key的相似度得到匹配的内容(Value)。】
Attention计算步骤如下:
1.q*k,得score
2.将score归一化处理
3.对score使用Softmax归一化函数,其结果为[0,1]
4.Softmax·value,得每个单词的评分v
5.将评分加和,得句子的评分z
self-attention使用了残差网络中的short-cut结构,为解决深度学习中的退化问题。
退化问题:在模型的每层中只有少量隐藏单元对不同的输入改变它们的激活值,而大部分隐藏单元对不同输入都是相同反应。
在深度网络的若干曾/每一层之间增加short-cut(捷径)可以缓解退化问题。
深度网络:网络结构复杂,难优化,误差较大。
Multi-Head Attention层计算
【transformer的完整结构】
Multi-Head Attention = n个self-attention的集成
若n为8,则其计算步骤如下:
1.由单词的词向量,先获得q,k,v三个向量,再利用self-attention的计算公式,即获得句子的加和评价z
2.8个z组成一个特征矩阵
3.特征矩阵经过全连接层后输出
multi-head attention也加入了short-cut机制。
Encoder-Decoder Attention计算
decoder比encoder多了一个encoder-cecoder attention。
encoder-cecoder attention中:
1.q的输入为上一个decoder的输出
2.k,v的输入为对应encoder的输出
由于解码过程是顺序操作过程,即解码第k个特征向量时,只能知道第k-1及其以前的解码结果,故称为multi-head attention为masked multi-head attention。
损失层
decoder的输出向量,作为使用Softmax为激活函数的全连接层的输入,得到表示每个词概率的输出。
位置编码
此外,由于transformer中词语和出现顺序在计算中无关,所以需要引入位置编码作为单词位置的特征表示。
论文使用编码公式计算位置编码。