Encoder是6层结构,每层内部结构相同,都由Multi-Head Attention和Feed Forward组成,而这两层后都带有有一个Add&Norm层,Add&Norm层由 Add 和 Norm 两部分组成, 如下:
见Transformer模型-5-MultiHead Attention-笔记
Add&Norm层由Add和Norm两部分组成,是Transformer的常有层,用于在多头自注意力机制和前馈神经网络之间添加残差连接和归一化操作。
Add指X+MultiHeadAttention(X),是一种残差连接。Norm是Layer Normalization。
这个层是将前一层的输出与前一层的输入相加,并进行归一化,以便更好地传递信息和控制梯度。其作用可以总结为在保持信息流畅性的同时,避免梯度消失或爆炸的问题,从而提高模型的训练效率和性能。
Add&Norm层主要完成以下几件事情:
残差连接:将前一层的输出与前一层的输入相加,得到一个残差向量。
归一化:对残差向量进行归一化,以便更好地传递信息和控制梯度。归一化可以采用不同的方法,如Layer Normalization或Batch Normalization。
线性变换:对归一化后的向量进行线性变换,以便更好地适应下一层的输入。
什么是残差连接呢?残差连接就是把网络的输入和输出相加,得到网络的输出为F(x)+xF(x)+xF(x)+x。
分析在网络结构比较深的时候,网络梯度反向传播更新参数时,容易造成梯度消失的问题,但是如果每层的输出都加上一个x的时候,就变成了F(x)+x,对x求导结果为1,所以就相当于每一层求导时都加上了一个常数项'1',这样就有效解决了梯度消失问题。
在Transformer中,数据过Attention层和FFN层后,都会经过一个Add & Norm处理。其中Add为residule block(残差模块) ,数据在这里进行residule connection(残差连接)
残差连接的图表如下所示:
Encoder架构图 | 残差链接方式 |
---|---|
![]() | Add是一种残差连接,用于缓解梯度消失,这一概念在ResNet中被提出: ![]() |
Add可以让反向传播过程中,有一路的梯度不会经过梯度F(x) 计算(如上右图公式中的第一个F(x)),直接经过后续的处理(传播), 能够保存更多的梯度信息。
有了Add(残差连接)我们可以将网络做的更深。
Norm即为Normalization(标准化)模块,就是把输入数据X,在输送给神经元之前先对其进行平移和伸缩变换,将X的分布规范化成在固定区间范围的标准分布,简单的说就是 将数据统一到固定区间内。变化框架
Transformer中采用的是Layer Normalization(层标准化)方式。
Encoder架构图 | 数学公式 |
---|---|
![]() | Add的结果经过LN进行层归一化:![]() |
前馈神经网络(Feedforward Neural Network, FNN) 是最早发明的简单人工神经网络。在前馈神经网络中,各神经元分别属于不同的层,每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层。第0层称为输入层,最后一层称为输出层,其他中间层称为隐藏层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。
Feed Forward 层是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数:
阅读量:2016
点赞量:0
收藏量:0