推断:从数学公式来看,起到一个缩放的效果,那么体现到注意力值上,我个人的理解是可以分散注意力而不至于过于集中某个token
实验:
描述:两组数据,原始得分数据为【8,16,32】,缩放后的数据【1,2,3】,最终看计算出来的值的差别
import numpy as np
def softmax(x, axis=1):
# 计算每行的最大值
row_max = x.max(axis=axis)
# 每行元素都需要减去对应的最大值,否则求exp(x)会溢出,导致inf情况
row_max=row_max.reshape(-1, 1)
x = x - row_max
# 计算e的指数次幂
x_exp = np.exp(x)
x_sum = np.sum(x_exp, axis=axis, keepdims=True)
s = x_exp / x_sum
return s
x = np.array([[8,16,24],[1,2,3]])
np.round(softmax(x),3)
array([[0. , 0. , 1. ],
[0.09 , 0.245, 0.665]])
结论证明:缩放具备分散注意力的作用;原始注意力值均聚集在得分最高的那个值即24,获得了权重为1;而缩放后,注意力值就分散些