自注意力机制-李宏毅

Self-Attention 李宏毅2021笔记

解决的问题

Self-Attention 考虑输入的不同部分之间的相关性

基础计算方式

image-20210719102615399

假设 a 1 , a 2 , a 3 , a 4 a^1, a^2, a^3,a^4 a1,a2,a3,a4为输入的四个部分,或是来自上一个隐藏层的输出,要考虑他们之间的关联性,并输出 b 1 , b 2 , b 3 , b 4 b^1,b^2,b^3,b^4 b1,b2,b3,b4

image-20210719103004046

单个输出的计算方式如上图所示,其中 query、key、value 均通过输入乘以矩阵 W q , W k , W v W^q,W^k,W^v Wq,Wk,Wv 计算而来,且该参数可以学习。

  1. 计算 a 1 a^1 a1 与其他部分的输入关系,即将 a 1 a^1 a1 乘以矩阵 W q W^q Wq 得到其对应 query q 1 q^1 q1
  2. 将所有的输入部分乘以 W k W^k Wk 得到对应 key k 1 , k 2 , k 3 , k 4 k^1, k^2, k^3, k^4 k1,k2,k3,k4 (此处包括计算 a 1 a^1 a1
  3. q 1 q^1 q1 k 1 , k 2 , k 3 , k 4 k^1, k^2, k^3, k^4 k1,k2,k3,k4 分别相乘得到他们之间的关联程度 α 1 , 1 , α 1 , 2 , α 1 , 3 , α 1 , 4 \alpha_{1,1},\alpha_{1,2},\alpha_{1,3},\alpha_{1,4} α1,1,α1,2,α1,3,α1,4
  4. α 1 , 1 , α 1 , 2 , α 1 , 3 , α 1 , 4 \alpha_{1,1},\alpha_{1,2},\alpha_{1,3},\alpha_{1,4} α1,1,α1,2,α1,3,α1,4softmax 处理,使其权值相加为 1,得到 α 1 , 1 ′ , α 1 , 2 ′ , α 1 , 3 ′ , α 1 , 4 ′ \alpha_{1,1}',\alpha_{1,2}',\alpha_{1,3}',\alpha_{1,4}' α1,1,α1,2,α1,3,α1,4
  5. 使用 a 1 , a 2 , a 3 , a 4 a^1, a^2, a^3,a^4 a1,a2,a3,a4 乘以 W v W^v Wv 得到对应 value v 1 , v 2 , v 3 , v 4 v^1, v^2, v^3,v^4 v1,v2,v3,v4
  6. α 1 , 1 ′ , α 1 , 2 ′ , α 1 , 3 ′ , α 1 , 4 ′ \alpha_{1,1}',\alpha_{1,2}',\alpha_{1,3}',\alpha_{1,4}' α1,1,α1,2,α1,3,α1,4 与对应 v 1 , v 2 , v 3 , v 4 v^1, v^2, v^3,v^4 v1,v2,v3,v4 相乘后并相加即可得到输出 b 1 b^1 b1

向量化计算方式

image-20210719105139226

D e n o t e . Q = [ q 1 , q 2 , q 3 , q 4 ] , K = [ k 1 , k 2 , k 3 , k 4 ] , I = [ a 1 , a 2 , a 3 , a 4 ] Q = W q I K = W k I Denote.\quad Q = [q^1, q^2, q^3, q^4],\quad K = [k^1, k^2, k^3, k^4],\quad I = [a^1, a^2, a^3, a^4]\\[1em] Q = W^q I\\ K = W^k I Denote.Q=[q1,q2,q3,q4],K=[k1,k2,k3,k4],I=[a1,a2,a3,a4]Q=WqIK=WkI
image-20210719105022431
D e n o t e . A 1 = [ α 1 , 1 , α 1 , 2 , α 1 , 3 , α 1 , 4 ] A 1 T = K T q 1 Denote.\quad A_1 = [\alpha_{1,1}, \alpha_{1,2}, \alpha_{1,3}, \alpha_{1,4}]\\[1em] A_1^T = K^T q^1 Denote.A1=[α1,1,α1,2,α1,3,α1,4]A1T=KTq1
image-20210719110134368
A = [ A 1 T , A 2 T , A 3 T , A 4 T ] = K T Q A = [A_1^T , A_2 ^T , A_3^T, A_4^T] = K^T Q A=[A1T,A2T,A3T,A4T]=KTQ
image-20210719110621148
A ′ = softmax ⁡ ( A ) A' = \operatorname{softmax} (A) A=softmax(A)

image-20210719110805357

D e n o t e . V = [ v 1 , v 2 , v 3 , v 4 ] V = W v I O = [ b 1 , b 2 , b 3 , b 4 ] = V A ′ Denote.\quad V = [v^1, v^2, v^3, v^4]\\[1em] V = W^v I\\ O = [b^1, b^2, b^3, b^4] = VA' Denote.V=[v1,v2,v3,v4]V=WvIO=[b1,b2,b3,b4]=VA

O = W v I softmax ⁡ ( ( W k I ) T W q I ) O = W^v I\operatorname{softmax}((W^k I)^T W^q I) O=WvIsoftmax((WkI)TWqI)

需要学习的参数只有 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv

Multi-head Self-attention (MHSA)

image-20210719113851988

MHSA 与常规 Self-attention 的区别为:每一个部分输入有多个 W q 、 W k 、 W v W^q、W^k、W^v WqWkWv

image-20210719113945011

如有输入 a 1 , a 2 , ⋯   , a n a^1, a^2,\cdots,a^n a1,a2,,an,设 head 的数量为 M,则对于任意 a i a^i ai 对应有 query q i , m q^{i,m} qi,m ,也有对应 key k i , m k^{i,m} ki,mvalue v i , m v^{i,m} vi,m 其中 m = 1 , 2 , ⋯   , M m = 1,2,\cdots, M m=1,2,,M

image-20210719114407812

得到 a i a^i ai 的 M 个 q q q 后,让所有项的 k k k 与其对应相乘,即 q i , 1 q^{i,1} qi,1 分别乘以 k j , 1 k^{j,1} kj,1 q i , 2 q^{i,2} qi,2 分别乘以 k j , 2 k^{j,2} kj,2 其中 j = 1 ⋯ n j = 1\cdots n j=1n ,得到 α i , j , m \alpha^{i,j,m} αi,j,m,其中 m = 1 , 2 , ⋯   , M m = 1,2,\cdots, M m=1,2,,M 。将他们进行 softmax 操作之后同样乘以各项的 value并相加得到 b i , m b^{i,m} bi,m 即:
b i , m = ∑ j = 1 N v j , m α i , j , m b^{i,m} = \sum_{j=1}^Nv^{j,m}\alpha^{i,j,m} bi,m=j=1Nvj,mαi,j,m
b i b^i bi 的计算方式为,将 b i , 1 , b i , 2 , ⋯   , b i , m b^{i,1},b^{i,2},\cdots,b^{i,m} bi,1,bi,2,,bi,mconcat 操作后,再通过一个全连接层得到:
b i = W [ b i , 1 , b i , 2 , ⋯   , b i , m ] b^i = W[b^{i,1},b^{i,2},\cdots,b^{i,m}] bi=W[bi,1,bi,2,,bi,m]

以上为 MHSA 的做法。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值