英文参考链接:
https://vaclavkosar.com/ml/cross-attention-in-transformer-architecture
交叉注意力与自我注意力
除了输入,cross-attention 计算与self-attention相同。交叉注意力不对称地组合了两个相同维度的独立嵌入序列,相比之下,自注意力输入是一个单一的嵌入序列。其中一个序列用作查询输入,而另一个用作键和值输入。SelfDoc 中的替代交叉注意力,使用来自一个序列的查询和值,以及来自另一个序列的键。
前馈层与交叉注意力相关,除了前馈层确实使用 softmax 并且其中一个输入序列是静态的。Augmenting Self-attention with Persistent Memory 论文表明,前馈层计算与自注意力相同。
交叉注意力实现
查看Diffusers 库中的CrossAttention 实现,它可以使用Stable Diffusion生成图像。在这种情况下,交叉注意力用于调节 UNet 层内的转换器,并带有图像生成的文本提示。构造函数显示,我们如何也可以有不同的维度,如果您使用调试器单步执行,您还将看到两种模式之间的不同序列长度。