Self_Attention

Huahuatii大约 2 分钟深度学习Deep LearningAttention

Attention机制

相关信息

个人理解注意力机制是一种特殊的全连接层,其中一共有若干个(多头)Wq,Wk,Wv三个矩阵作为注意力参数(每一个矩阵大小都是n特征维数的平方)

1 Self-attention

以a1得到b1为例讲解注意力机制:

attention计算过程
  1. a1通过叉乘Wq得到q1,即为query
  2. 【a1, a2, a3, ...】通过点乘Wk得到【k1, k2, k3, ...】,即为各个ankey
  3. 【a1, a2, a3, ...】通过点乘Wv得到【v1, v2, v3, ...】,即为各个anvalue
  4. 将q1(即 a1的query)点乘各个kn(即an的key),通常会再经过一个SoftMax层,最终得到a'1,n(即a1对anAttention Score);
  5. 最后一步用a1的注意力分数叉各个value,求和得到b1,公式如下:

    b1=iα1,ivi \boldsymbol{b}^{\mathbf{1}}=\sum_{i} \alpha_{1, i}^{\prime} \boldsymbol{v}^{\boldsymbol{i}}

    :::

2 Multi-head Self-attention

多头注意力机制其实和注意力机制相似,通过设定多个Wq,Wk,Wv矩阵以捕获不同的关系(学习不同类型的注意力),因此最终可以得到多个bi,可以通过一个新的矩阵W0将【bi,1,bi,2,bi,3, ...】整合成一个包含多个注意力信息的输出bi

3 Positional Encoding

Positional Encoding:https://arxiv.org/abs/2003.09229open in new window

Transformer:https://arxiv.org/abs/1706.03762open in new window

BERT:https://arxiv.org/abs/1810.04805open in new window

4 Cross attention

Cross attention同时也是Transformer中decoder所采用的架构,一个序列作为输入的Q,定义了输出的序列长度,另一个序列提供输入的K&V。

4 补充:SoftMax 以及 Cross Entropy

Soft:并非强硬地输出最大值

Max:求最大值

通过SoftMax不再唯一的确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性,计算公式如下:

其中为第i个节点的输出值,C为输出节点的个数,即分类的类别个数。通过Softmax函数就可以将多分类的输出值转换为范围在[0, 1]和为1的概率分布.

Softmax(zi)=ezic=1Ceec, \operatorname{Softmax}\left(z_{i}\right)=\frac{e^{z_{i}}}{\sum_{c=1}^{C} e^{e_{c}}},

当使用Softmax函数作为输出节点的激活函数的时候,一般使用交叉熵作为损失函数。

L=c=1Cyclog(pc) L=-\sum_{c=1}^{C} y_{c} \log \left(p_{c}\right)

5 参考视频(李宏毅老师课程)