Transformer结构解读(Multi-Head Attention、AddNorm、Feed Forward)
创始人
2024-05-25 10:00:06
0

咱们还是照图讨论,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的基本思想和这差不多。

三、图一中标号部分讨论:
  1. 蓝色圆圈标注的“add”是什么呢?好像初始注意力机制(如下图)中并没有add呀??

图二

如图所示,在self-attention中求出 Z(i) ()后直接将Z放入全连接层中,而transformer又经过了add&Norm步骤 ,这个add是什么呢???

其实add就是在Z的基础上加了一个残差块X,加入残差块X的目的是为了防止在深度神经网络训练中发生退化问题,退化的意思就是深度神经网络通过增加网络的层数,Loss逐渐减小,然后趋于稳定达到饱和,然后再继续增加网络层数,Loss反而增大。这个Add具体操作如下:其实就是将self-attention的output+input作为新的output,如下图:

图三

  1. 关于首图所标记的2,Add&Norm这一过程指什么呢?

就是指对新的output做标准化,也就是上图的,对a+b做标准化

  1. FeedForward:FeedForward又是什么呢?好像图二(注意力机制)中这里应该是全连接层(FC)呀?❓❓❓

先说一下FeedForward是什么?其实FeedForward是由全连接层(FC)与激活ReLu组成的结构,其实和bp神经网络结构差不多,输入:Add&Norm的输出(记作:Z'(i) ), FC:全连接层

接下来再说一下为什么要用FeedForward呢?不用单纯的FC呢?

其实主要还是想提取更深层次的特征,在Multi-Head Attention中,主要是进行矩阵乘法,即都是线性变换,而线性变换的学习能力不如非线性变换的学习能力强,我们希望通过引入ReLu激活函数,使模型增加非线性成分,强化学习能力。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...