https//www.youtube.com/watch?v=X7PH3NuYW0Q
self-attention处理整个sequence,FC专注处理某一个位置的资讯,self-attention和FC可以交替使用。
a1-a4可能是input也可以作为中间层的输入,b1~b4每个向量都会考虑整个input sequence
计算关联性(例如向量a1和a2的关联性,一般都是使用下图左边的方法Dot-product)
计算a1和a1自身以及a2,a3,a4的关联性,得到a11,a12,a13,a14
得到关联性向量之后,再经过softmax处理(和分类是一个softmax)
基于attention scores抽取信息
a1-a4每个向量都可以×Wv得到对应的value: v1-v4。然后将关联性向量a11‘-a14’乘上对应的value,然后结果相加得到b1
然后依次计算b2,b3,b4,所以哪个关联性更大,得到的结果也就越接近那个关联性数据(比如a11’最大,得到的b1也就最接近a11‘,或者说b1的主要构成是由a11’构成)
概括计算b2流程
a1-a4乘上martix Wq,得到q1-q4,a1-a4乘上martix Wk,得到k1-k4,q2和k1-k4做dot-product操作,得到self-attention score(可能还会经过softmax处理): a21‘,a22‘,a23‘,a24‘,然后各自与v1~v4相乘,然后相加得到b2。
从矩阵角度理解计算过程
我的理解:这样就很容易提高运算速度,因为并行度高