这里写目录标题

  • 1. 注意力机制计算
  • 2. 注意力机制和权重的区别 注意力机制计算公式_人工智能的意义
  • 3. Multi-Head作用
  • 4. 位置编码
  • 5. Encoder与Decoder
  • 6. LayerNorm
  • 7. Self-attention与Cross-attention


1. 注意力机制计算

注意力机制的计算公式如下:

注意力机制和权重的区别 注意力机制计算公式_机器学习_02

其基本流程为:将query和key之间两两计算相似度,依据相似度对各个value进行加权;

注意力机制和权重的区别 注意力机制计算公式_深度学习_03


在这里,要求Q与K的单个向量是等长的,对这两个向量计算内积,也就是余弦相似度,如果两个向量正交,则内积为0,也就是不相关;反之,如果相关,则二者内积就会很大。

其中,key与query的计算方式不同,决定了这是什么类型的注意力机制。上述为scaled dot-product机制(有加性注意力和乘性注意力)。

2. 注意力机制和权重的区别 注意力机制计算公式_深度学习_04的意义

由于相似度计算时,如果计算用的向量维度比较长,则计算的值的绝对大小差距会很大,Softmax之后可能会出现有的值极度趋近1,其余值极度趋近0的情况。这会导致梯度比较小,不利于网络的训练。

3. Multi-Head作用

注意力机制和权重的区别 注意力机制计算公式_注意力机制和权重的区别_05


主要的动机在于:

1)乘性注意力中,没有可学习的参数;

2)用单头注意力获得一个高维向量(512),不如用多头注意力获得多个低维向量(64/32等)效果好,有些类似于CNN中的多通道数;

因此多头注意力主要进行了如下操作:

1)利用多组可学习的参数矩阵注意力机制和权重的区别 注意力机制计算公式_人工智能_06,将注意力机制和权重的区别 注意力机制计算公式_人工智能_07映射成低维向量;

2)对多组低维注意力机制和权重的区别 注意力机制计算公式_人工智能_07向量进行注意力计算,得到多组注意力结果;

3)将多组注意力结果concat成高维向量并通过MLP,最后输出;

4. 位置编码

注意力机制本身不支持时序运算,所以将各个元素打乱会得到一样的注意力结果。为了增加时序信息,添加了余弦位置编码:

注意力机制和权重的区别 注意力机制计算公式_机器学习_09


利用余弦编码的优势在于:

1)通过正余弦的取值,保证不同位置编码的唯一性

2)将位置向量的大小限制在注意力机制和权重的区别 注意力机制计算公式_深度学习_10之间,有利于网络收敛

5. Encoder与Decoder

注意力机制和权重的区别 注意力机制计算公式_深度学习_11

二者的主要区别在于:
1)Encoder中只利用的自注意力和MLP,而Decoder还用到了互注意力模块;
2)Encoder的自注意力是不需要mask的,而Decoder的自注意力需要掩膜进行时序上的推理

6. LayerNorm

注意力机制和权重的区别 注意力机制计算公式_归一化_12

BatchNorm主要是对当前batch里的每个特征(通道)进行归一化操作,而LayerNorm主要是对一个样本本身进行归一化操作。
BN与LN的差异主要在计算均值和方差的时候体现:
1) 对于BN:句子本身可能是不等长的,对于特征做归一化,有些位置的特征可能是空缺的,就导致每个batch计算的均值、方差波动比较大,而且如果实际推理时出现一个之前从未出现过的超长向量,可能对应位置没有预先计算好的均值、方差
2.)对于LN:由于是对样本进行的归一化计算,则会避免上述波动大、推理训练无法对齐等问题

7. Self-attention与Cross-attention

注意力机制和权重的区别 注意力机制计算公式_注意力机制和权重的区别_13


自注意力:key, value, query来源均相同

互注意力:query与key, value来源不同