自注意力机制
这样我们就得到了自注意矩阵,自注意力并不能将不同特征融合起来,他的特点是能在整个图像上进行信息交互,而不是想卷积一样仅限于图像的局部。
Q、K
例如:RGB图像通常有三个通道,将图像划分为4个像素,就有4*3的矩阵
现在要用三种不同的方法将这些像素投射到潜在空间使用自注意力机制,就有了变换矩阵WQ、WK、WV,这里我们假如将3维投射到2维,就构建3*2的变换矩阵
这样就得到所有4*2的矩阵
再看公式中Q*K的转置,就是将每个像素的点积,得到的是一个数值,表示向量之间的相似度(向量点积本身就是考虑余弦相似度,方向一致性)
这样做,可以得到每个像素和其他所有像素之间的相似度矩阵。Q*K就可以解释为一种相似度测量。
除以dk只是为了让训练过程更加稳定
softmax函数:
归一化每个像素对其他像素的注意力大小,实现所有像素之间的关注度交互,这样就得到相似度矩阵
V
最后一步就是相似度矩阵乘以V,可以理解为对相似度矩阵进行加权平均,我们将通过相似度矩阵中的权重来调整V中每个像素的值。
可以看到,最终的矩阵的每个像素值(每一行),都是由自己对自己的关注度乘上自身,加上自己对其他行的关注度乘上其他行。所以可以看出来,一开始,Q|K|V每个嵌入值都只受自身影响,但现在我们获得了所有像素嵌入的组合,混合的方式和比例都可以自己设置。
最后将得到的ATTENTION矩阵投射回原来的空间,再与原始输入相加,称为残差连接、跳过连接
保留原始输入的同时,还能更关注自己想关注的部分。
交叉注意力机制
交叉注意力机制的计算公式还是如下
只是改变了Q、K、V的生成过程,这些矩阵不再来源于同一信息(上面自注意力机制三个矩阵都是来自那个图像,为的是图像的各个像素之间可以相互影响信息交互)而交叉注意力机制则是Q|K|V可以来自不同的信息。
如下:只有Q这个信息来自于图像,KV是由其他信息得到
stable difussion里面就是用文本来进行交叉注意,来提示想要生成的图片。K和V都来自条件信息
通常的文本处理,使用大模型Transformer的encoder编码器部分
首先会将句子拆分(分词)成一个个有意义的小部分(称为token)
然后会在每个