英語の参考リンク:
https://vaclavkosar.com/ml/cross-attention-in-transformer-architecture
交差注意と自己注意
入力を除き、クロスアテンションの計算はセルフアテンションと同じです。クロスアテンションは、セルフ アテンションへの入力として単一のエンベディング シーケンスとは対照的に、同じ次元の 2 つの独立したエンベディング シーケンスを非対称に組み合わせます。シーケンスの 1 つはクエリ入力として使用され、もう 1 つはキーと値の入力として使用されます。SelfDoc での代替クロスアテンション。あるシーケンスのクエリと値、および別のシーケンスのキーを使用します。
フィードフォワード層は、ソフトマックスを使用し、入力シーケンスの 1 つが静的であることを除いて、クロスアテンションに関連します。 「Augmenting Self-attention with Persistent Memory」の論文では、フィードフォワード層の計算が自己注意と同じであることが示されています。
クロスアテンションの実装
Stable Diffusionを使用して画像を生成できる、 Diffusers ライブラリの CrossAttendance 実装を確認してください。この場合、画像から生成されたテキスト キューを使用して、クロス アテンションを使用して UNet レイヤー内のトランスフォーマーを調整します。コンストラクターは、異なる次元をどのように設定できるかを示しています。デバッガーをステップ実行すると、 2 つのモード間のシーケンスの長さが異なることもわかります。