一、self-attention
1、经过卷积操作将原始输入图像转换为多个patch
2、针对每个得到的patch,首先进行MLP算法,得到多个对应的向量ai
3、将向量ai与Wq,Wk,Wv进行矩阵计算,得到对应的qi,ki,vi。将得到的qi,ki,vi各自进行组合,得到对应的Q,K,V。
4、利用公式对Q,K进行计算,得到对应的权值信息;在经过softmax进行处理,得到归一化后的权值信息。将其与V的信息进行对应加权操作,得到最终的结果。
二、Multi-head self-attention
操作与self-attention相似,只不过最终的head不是单一的
1、将原始输入图像经过卷积操作获得多个patch
2、将得到的patch经过MLP操作,得到多个对应的向量ai
3、将多个ai分别与Wq,Wk,Wv进行矩阵计算,得到对应的qi,ki,wi。在这里与self-attention操作有所不同。根据multi-head的数目,将所得到的qi,ki,vi进行划分。若的2head,则qi变换为qi1,qi2;ki,vi转变为ki1,ki2,ci1,vi2。根据multi-head个数进行划分。
4、针对head1,根据不同的i,对qi1,ki1利用公式进行计算,得到对用的bi1。采用softmax对其进行归一化计算,得到最终的权值信息。针对head2-i所有操作均与head1一致。得到对应的bi信息。
5、对得到的最终信息进行拼接融合。将单个head得到的信息进行cat,例如原来的b11,b12转变为b11b12。在将所有头部信息进行融合,得到b11b12
b21b22
b31b32
......
bi1bi2
5、将得到的b矩阵与Wo进行矩阵计算,得到最终的b信息。