每一个输入的向量( Embedding后的向量),均有q,k,v,三个东西。其中q由下图所生成
I矩阵有a1,a2,a3,a4组成,Wq为权重矩阵,将I与Wq相乘求得Q(q1,q2,q3,q4)。K和V与I同理均可求得。
将求得出来的K,转置为竖向量与Q相乘,就可以得出α11,α12…,其中表示的意思就是Query(查询)与线索的重合程度。
上图中A’为a11,a12,a13,a14…经过softmax后的结果。将A‘的第一列,也就是取q1和其他的k1,k2,k3,k4相乘的值,再经过softmax转换后,与vlue值相乘,再相加就得出b1。其中q1和其余的Key,哪一个重合度高,则其在b1中占比也高。
其中只有Wq,Wk,Wv需要训练。
多头注意力机制,每一个向量可能需要多个head,我们需要不同的q来应对不同种类的相关性。其中q(i,1)与q(i,2)是与两个不同的矩阵,相乘得出的。将 q(i,1)与对应的K(i,1)和K(j,1)相乘,再与V(i,1)和V(j,1)分别相乘,得出b(i,1)和b(i,2),再通过以下转换,输出。
语音讯号非常长,计算量比较大,所以这时候引入truncated self-attention,告诉机器不用看整句话只看一部分,每部分的大小为人为设定的。self-attention在图片上的应用,将以下图片看作一个5103的大小,其中3代表RGB通道为3。将每一个像素看作一个向量。