Transformer结构解读(Multi-Head AttentionAdd&NormFeed Forward)
Posted 霄耀在努力
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Transformer结构解读(Multi-Head AttentionAdd&NormFeed Forward)相关的知识,希望对你有一定的参考价值。
咱们还是照图讨论,transformer结构图如下,本文主要讨论Encoder部分,从低端输入inputs开始,逐个结构进行:
一、首先说一下Encoder的输入部分:
在NLP领域,个人理解,这个inputs就是我们的句子分词之后的词语,比如:我的句子是“我喜欢中国”,那么inputs为“我“,”喜欢“,”中国”,然后Input Embedding就是对这些词语的向量化(词向量),之后加上这些词对应的位置信息(比如“喜欢”在“我喜欢中国”中位置为2),两者结合作为Multi-Head Attention(多头注意力机制)的输入。
二、Multi-Head Attention
多头注意力机制,可以简单的理解为:对这个操作重复了n次,得到n个结果 .....,之后对这n个结果求平均,得到一个更稳健的输出。
重复n次实际上就是进行n次单独的self-attention,由于每次的、、都不同,所以每次self-attention的输出Z也不同,高级的意义:通过重复n次操作,将输入映射到不同的子空间,以便于提取更多的特征信息,从而提高准确性。
大白话:与从不同方位观察物体一样,从前面、侧面、后面看物体,肯定能获取关于这个物体更多的信息对吧,提取更多特征,从而有更深的理解,通俗易懂👏👏👏,Multi-Head Attention的基本思想和这差不多。
三、图一中标号部分讨论:
蓝色圆圈标注的“add”是什么呢?好像初始注意力机制(如下图)中并没有add呀??
如图所示,在self-attention中求出 Z(i) ()后直接将Z放入全连接层中,而transformer又经过了add&Norm步骤 ,这个add是什么呢???
其实add就是在Z的基础上加了一个残差块X,加入残差块X的目的是为了防止在深度神经网络训练中发生退化问题,退化的意思就是深度神经网络通过增加网络的层数,Loss逐渐减小,然后趋于稳定达到饱和,然后再继续增加网络层数,Loss反而增大。这个Add具体操作如下:其实就是将self-attention的output+input作为新的output,如下图:
关于首图所标记的2,Add&Norm这一过程指什么呢?
就是指对新的output做标准化,也就是上图的,对a+b做标准化
FeedForward:FeedForward又是什么呢?好像图二(注意力机制)中这里应该是全连接层(FC)呀?❓❓❓
先说一下FeedForward是什么?其实FeedForward是由全连接层(FC)与激活ReLu组成的结构,其实和bp神经网络结构差不多,输入:Add&Norm的输出(记作:Z'(i) ), FC:全连接层
接下来再说一下为什么要用FeedForward呢?不用单纯的FC呢?
其实主要还是想提取更深层次的特征,在Multi-Head Attention中,主要是进行矩阵乘法,即都是线性变换,而线性变换的学习能力不如非线性变换的学习能力强,我们希望通过引入ReLu激活函数,使模型增加非线性成分,强化学习能力。
以上是关于Transformer结构解读(Multi-Head AttentionAdd&NormFeed Forward)的主要内容,如果未能解决你的问题,请参考以下文章