5 注意力机制
-
学习目标:
-
了解什么是注意力计算规则以及常见的计算规则.
-
了解什么是注意力机制及其作用.
-
掌握注意力机制的实现步骤.
-
-
5.1 什么是注意力:
-
我们观察事物时,之所以能够快速判断一种事物(当然允许判断是错误的), 是因为我们大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断,而并非是从头到尾的观察一遍事物后,才能有判断结果. 正是基于这样的理论,就产生了注意力机制.
-
-
5.2 什么是注意力计算规则:
-
它需要三个指定的输入Q(query), K(key), V(value), 然后通过计算公式得到注意力的结果, 这个结果代表query在key和value作用下的注意力表示. 当输入的Q=K=V时, 称作自注意力计算规则.
-
-
5.2.1 常见的注意力计算规则:
将Q,K进行纵轴拼接, 做一次线性变化, 再使用softmax处理获得结果最后与V做张量乘法.
将Q,K进行纵轴拼接, 做一次线性变化后再使用tanh函数激活, 然后再进行内部求和, 最后使用softmax处理获得结果再与V做张量乘法.
将Q与K的转置做点积运算, 然后除以一个缩放系数, 再使用softmax处理获得结果最后与V做张量乘法.
-
说明:当注意力权重矩阵和V都是三维张量且第一维代表为batch条数时, 则做bmm运算.bmm是一种特殊的张量乘法运算.
-
bmm运算演示:
#
如果参数
1
形状是
(
b
×
n
×
m
),
参数
2
形状是
(
b
×
m
×
p
),
则输出为
(
b
×
n
×
p
)
>>>
input
=
torch
.
randn
(
10
,
3
,
4
)
>>>
mat2
=
torch
.
randn
(
10
,
4
,
5
)
>>>
res
=
torch
.
bmm
(
input
,
mat2
)
>>>
res
.
size
()
torch
.
Size
([
10
,
3
,
5
])
-
5.3 什么是注意力机制:
-
注意力机制是注意力计算规则能够应用的深度学习网络的载体, 同时包括一些必要的全连接层以及相关张量处理, 使其与应用网络融为一体. 使用自注意力计算规则的注意力机制称为自注意力机制.
-
-
说明: NLP领域中, 当前的注意力机制大多数应用于seq2seq架构, 即编码器和解码器模型.
-
5.4 注意力机制的作用:
-
在解码器端的注意力机制: 能够根据模型目标有效的聚焦编码器的输出结果, 当其作为解码器的输入时提升效果. 改善以往编码器输出是单一定长张量, 无法存储过多信息的情况.
-
在编码器端的注意力机制: 主要解决表征问题, 相当于特征提取过程, 得到输入的注意力表示. 一般使用自注意力(self-attention).
-