Attention本质
Attention本质的工作是,计算两两向量的内积并softmax作为相似度(权重),并基于该相似度对向量进行重构(加权求和)。
假想有一个长度为4,EMB_dim的矩阵,对其进行Attention计算,如下图。
首先做以及的操作,结果如下:
解释,第一行中每一个点表示第一个向量和第N个向量归一化后的相似度,例如第1-1个元素的值为0.6,表示softmax之后,vec1和vec1的相似度为0.6。第1-2个元素的值为0.2,表示softmax之后,vec1和vec2的相似度为0.2。其他点以此类推。
紧接着,进行向量重构,如下图
新的VEC1,由vec1-4加权求和构成,权重就是上一步中计算出来的“相似度”。以此类推,重构出vec2-4。就得到了Attention操作后的矩阵。(忽略了其他操作,例如除以)。
为什么要除以?blog.csdn.net/tailonh/art… 降低qk的大小,避免落入饱和区,除以可以保证为均值为0,方差为1.
这就是Attention操作的本质,获取了跟自己更"相似"的向量,忽略了与自己无关的向量。
关于相似性的解释
这里的相似,本质上由内积定义,内积并不是传统意义上的距离,因为距离有以下基本定义: 对于距离,有如下基本特性:
但点积在ML中可以作为相似性使用,因为本质上,在学习过程中,会奖励内积大且相关的向量,因此相关向量的点积在学习过程中会越来越大。就达到了利用点积计算相似度的目的。
BERT输入的向量是Mask后还是Mask前的
Mask后的,15%的进行Mask,针对这部分,选取10%随机替换,10%不动,80%替换为MASK标记
BERT的三个向量为什么能直接相加
因为加起来和把onehot拼起来过一个大的全连接没有区别。
一些无端的思考
在AI发展的过程中,一些人的先天知识的干预是显著能带来更好的效果的。并不是说一坨原始的基本算子迭代优化就能达到很好的效果。Attention本质也是在复杂的经验主义模型中加入相对的先天知识(对两个向量求点积)。
Transformer Decoder的Query分别是什么输入
- Encoder每一步的输入