Self-Attention
ディープラーニングにおける自己注意の基礎を解説します。Query、Key、ValueベクトルがTransformerとUltralytics YOLO26を支え、高性能なAIを実現する仕組みを学びます。
セルフアテンションは、入力シーケンス内の異なる要素の重要度を相互の関係に基づいてモデルが評価できるようにする、ディープラーニングの基盤となるメカニズムです。データを逐次的に処理したり、局所的な近傍だけに焦点を当てたりする従来のアーキテクチャとは異なり、セルフアテンションではニューラルネットワークがコンテキスト全体を同時に調べることができます。この機能により、文中の単語や画像内の異なる領域など、データの離れた部分間にある複雑な関係をシステムが特定できます。これはTransformerアーキテクチャの中核となる構成要素であり、生成AIや最新の知覚システムに大きな進歩をもたらしてきました。
セルフアテンションの仕組み#
このメカニズムは、各入力特徴量に重み(「アテンションスコア」と呼ばれることが多い)を割り当てることで、認知的な焦点の当て方を模倣します。これらのスコアを計算するために、モデルは入力データ(通常は埋め込みとして表現されます)を、3つの異なるベクトルであるQuery、Key、Valueに変換します。
- Query (Q): シーケンスの残りの部分から関連するコンテキストを探す、現在の項目を表します。
- Key (K): Queryとの照合対象となる、シーケンス内の各項目のラベルまたは識別子として機能します。
- Value (V): 集約される項目の実際の情報内容を含みます。
モデルは、ある要素のQueryと他のすべての要素のKeyを比較して、適合度を判定します。これらの適合度スコアはsoftmax関数を使用して正規化され、確率に似た重みが生成されます。次に、これらの重みがValueに適用され、コンテキストが豊富な表現が生成されます。このプロセスにより、大規模言語モデル (LLMs)やビジョンシステムは、ノイズを除外しながら重要な情報を優先できます。
実世界での利用例#
セルフアテンションの汎用性により、さまざまな人工知能 (AI)分野で広く採用されるようになりました。
- 自然言語処理 (NLP): 機械翻訳などのタスクでは、セルフアテンションによって代名詞とその指示対象を関連付け、曖昧さを解消します。たとえば、「The animal didn't cross the street because it was too tired」という文では、モデルはセルフアテンションを使用して、「it」を「street」ではなく「animal」と強く関連付けます。このコンテキスト認識が、Google Translateなどのツールを支えています。
- グローバルな画像コンテキスト: コンピュータビジョン (CV)では、Vision Transformer (ViT)などのアーキテクチャが画像をパッチに分割し、セルフアテンションを適用してシーンを全体的に理解します。これは、物体の特定が周囲の状況の理解に依存する複雑な環境での物体検出に不可欠です。
関連用語との違い#
これらの用語は似た概念とともに説明されることが多い一方で、技術的な定義はそれぞれ異なります。
- アテンションメカニズム: モデルがデータの特定の部分に焦点を当てられるようにする技術の幅広いカテゴリです。これには、モデルがあるシーケンス(デコーダーの出力など)を使用して、別のシーケンス(エンコーダーの入力など)にクエリを実行するクロスアテンションが含まれます。
- セルフアテンション: Query、Key、Valueのすべてが同じ入力シーケンスに由来する、特定のタイプのアテンションです。単一のデータセット内にある内部依存関係を学習するように設計されています。
- Flash Attention: スタンフォード大学の研究者が開発した最適化アルゴリズムで、数学的な出力を変更することなく、GPU上でセルフアテンションの計算を大幅に高速化し、メモリ効率を高めます。
コード例#
次のPythonスニペットは、RTDETR(ultralyticsパッケージに含まれるTransformerベースの物体検出器)の使用方法を示しています。標準的な畳み込みネットワークとは異なり、このモデルは視覚特徴量の処理にセルフアテンションを大きく活用します。
from ultralytics import RTDETR
# Load the RT-DETR model which utilizes self-attention for detection
model = RTDETR("rtdetr-l.pt")
# Perform inference on an image to detect objects with global context
# Self-attention helps the model understand relationships between distant objects
results = model("https://ultralytics.com/images/bus.jpg")
# Print the number of objects detected
print(f"Detected {len(results[0].boxes)} objects using Transformer attention.")進化と将来への影響#
セルフアテンションは、従来のリカレントニューラルネットワーク (RNNs)の妨げとなっていた勾配消失問題を効果的に解決し、大規模な基盤モデルのトレーニングを可能にしました。非常に効果的である一方、標準的なセルフアテンションの計算コストは、シーケンス長に対して二次関数的に増加します。これに対処するため、現在の研究では効率的な線形アテンションメカニズムに焦点が当てられています。
Ultralyticsは、YOLO26などの最先端モデルにこれらの進歩を統合しています。YOLO26は、CNNsの速度とアテンションのコンテキスト処理能力を組み合わせ、優れたリアルタイム推論を実現します。これらの最適化モデルはUltralyticsプラットフォームを介して簡単にトレーニングおよびデプロイできるため、次世代のインテリジェントアプリケーションを構築する開発者のワークフローを効率化できます。









