self-attention的本质就是从一个矩阵生成三个新的矩阵,这三个矩阵分别记作qkv,然后将q乘以k的转置,得到的结果再与v相乘,再将最后得到的结果送入下游任务。因此实际上任何网络都可以融入self-attention,生成三个新矩阵的方式也很简单,只需要调用三次nn.Linear()。用什么矩阵来生成三个矩阵?随意,比方说nlp中可以用word2vec的输出来作为"母矩阵",通过三次nn.linear()将"母矩阵"生成三个"子矩阵"
以上就是我所理解的self-attention的本质
你能比较一下Attention和self-Attention的区别嘛,从Transform的代码来看,self-Attention中的QKV都是由不同的权值矩阵得到的,可以算作是来源于相同信息的不同变换;Attention中的Q和V是一样的,也是同源,K是由什么生成的,你的文章里的x'是什么,是target嘛;所以,self就是体现在K的来源嘛?