Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Attention Mechanism

アテンション機構は、クエリ、キー、バリューを用いて入力特徴量に関連度に応じた重みを付けます。数式、アテンションの種類、アテンションと畳み込みの比較を解説します。

アテンション機構とは、各入力が処理対象の要素にどれほど関連するかに基づいて重みを計算し、入力特徴量の加重平均として各出力を構成するニューラルネットワークの演算です。クエリベクトルとキー・ベクトルを比較して関連度を評価し、そのスコアで対応するバリューベクトルに重みを付けます。アテンションは2014年に機械翻訳向けに導入され、リカレントニューラルネットワーク(RNN)のデコーダーが、文全体を固定長の1つのベクトルに圧縮せず、すべての入力語を参照できるようにしました。2017年のTransformerはアテンションだけでアーキテクチャ全体を構成しました。アテンションは現在、大規模言語モデル、ビジョンTransformer、多くの物体検出モデルの中核的な演算です。

注意機構の仕組み#

アテンションでは、入力に対して学習可能な3つの線形射影を使用します。クエリ(Q)は現在のトークンが探しているものを表し、各キー(K)はトークンが提供する情報を表し、各バリュー(V)は伝達される内容を保持します。モデルはクエリをすべてのキーと比較し、比較スコアを重みに変換して、バリューの加重和を返します。翻訳モデルが「The black cat」に対して「noir」を生成する場合、そのステップのクエリは、フランス語では形容詞が名詞の後に来るにもかかわらず、「black」のキーに対して最も高いスコアを示します。

マルチヘッドアテンションでは、複数の計算をそれぞれ別の低次元射影上で並列実行し、その結果を連結します。これにより、異なるヘッドが同じレイヤー内の異なる関係に特化できます。

スケールド・ドット積アテンション#

TransformerのアテンションはAttention(Q, K, V) = softmax(QKᵀ / √d_k) Vと表されます。各クエリをすべてのキーとドット積で比較し、そのスコアをキーの次元数d_kの平方根で割ります。これにより、ベクトルサイズに応じてスコアが増大し、softmaxが飽和するのを防ぎます。Softmaxは各クエリのスコアを、合計が1になる重みに変換します。出力はバリューベクトルの加重和です。

import torch
import torch.nn.functional as F

torch.manual_seed(0)

# それぞれ8次元の4トークンからなるシーケンスのクエリ、キー、バリュー
q, k, v = torch.randn(3, 4, 8).unbind(0)

# 各クエリをすべてのキーと照合し、sqrt(d_k)でスケーリングして、各行をsoftmaxで正規化する
weights = (q @ k.T / k.shape[-1] ** 0.5).softmax(dim=-1)

# 各出力トークンはバリューベクトルの加重平均
output = weights @ v

print("Attention weights of token 0:", [round(w, 3) for w in weights[0].tolist()])
print("Matches PyTorch SDPA:", torch.allclose(output, F.scaled_dot_product_attention(q, k, v), atol=1e-6))

[0.121, 0.741, 0.106, 0.032]とTrueが出力されます。トークン0は、出力の74%をトークン1のバリューベクトルから取得します。また、4つの重みの合計は1となり、手動で計算した結果はPyTorchの融合scaled_dot_product_attentionと一致します。この処理は、対応するGPUでFlashAttentionなどのメモリー効率に優れたカーネルを呼び出します。

アテンションの種類#

  • セルフアテンション: クエリ、キー、バリューはすべて同じシーケンスから得られるため、各トークンは他のすべてのトークンからコンテキストを集めます。TransformerエンコーダーやViT内部のアテンションです。
  • クロスアテンション: クエリは一方のシーケンスから、キーとバリューはもう一方のシーケンスから得られます。翻訳デコーダーは入力文にアテンションを適用し、テキストから画像を生成する拡散モデルはプロンプトにアテンションを適用します。また、DETRデコーダーの物体クエリは画像特徴量にアテンションを適用します。
  • 因果アテンション: マスクによって各トークンが後続のトークンにアテンションを適用できないようにするため、言語モデルはテキストを左から右へ生成できます。また、先行するトークンのキーとバリューはKVキャッシュに保存できます。
  • 効率的なアテンション: スパースアテンション、スライディングウィンドウアテンション、線形アテンションは、すべてのトークンを他のすべてのトークンと比較する際の二次計算量を削減します。また、変形可能アテンションは、各基準位置の周囲にある、学習可能な少数の点だけをサンプリングします。
  • CNNのチャネルアテンション: Squeeze-and-Excitationネットワークは、特徴マップのグローバル平均を用いてチャネルの重みを調整します。これは計算コストの低いアテンション形式であり、ILSVRC 2017分類コンテストの優勝モデルの基盤となりました。

注意機構と畳み込みの比較#

畳み込みでは、同じ小さなフィルターをすべての位置に適用するため、各出力が参照する固定の局所ウィンドウがあり、その重みは画像によって変わりません。一方、アテンションは入力内容から重みを計算し、1つのレイヤー内の任意の2つの位置を結び付けられます。その代償として、トークン数の2乗に比例して計算コストが増大します。640×640の画像をストライド32で処理すると、20×20のグリッドに400トークンができ、クエリとキーの組み合わせは160,000通りになります。同じ画像のストライド8のグリッドでは6,400トークンとなり、組み合わせは約4,100万通りに達します。YOLO26は、アテンションブロックを適切な位置に配置しています。バックボーンの末尾にあるC2PSAブロックと、ネック内のアテンション対応C3k2ブロックの1つが、20×20のストライド32の特徴マップ上でマルチヘッドセルフアテンションを実行します。それより高解像度のレイヤーはすべて畳み込みのままです。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう