結論
Self-Attentionは、クエリ・キー・バリューをすべて同じ系列から作り、系列の中の要素どうしの関係を捉えます。Source-Target Attentionは、クエリを出力側(デコーダ)の系列から、キーとバリューを入力側(エンコーダの出力)から作り、入力と出力の系列の対応を捉えます。
比較表
| 観点 | Self-Attention | Source-Target Attention |
|---|---|---|
| 別名 | 自己注意機構 | Encoder-Decoder Attention、クロスアテンション(Cross-Attention) |
| クエリを作る系列 | 同じ系列 | 出力側の系列(デコーダ) |
| キーとバリューを作る系列 | 同じ系列 | 入力側の系列(エンコーダの出力) |
| 捉える関係 | 1つの系列の中の要素どうしの関係(例:代名詞と、それが指す語) | 2つの系列の間の対応(例:訳語と、原文のどの語が対応するか) |
| 元のTransformerでの位置 | エンコーダの各層と、デコーダの各層(デコーダでは未来の位置を隠すマスク付き) | デコーダの各層だけ(マスク付きSelf-Attentionの次) |
| 未来の位置を隠すマスク | デコーダで使う場合は必要 | 不要(入力側の系列は最初からすべてそろっている) |
| 使っているモデルの例 | BERT(エンコーダのみ)、GPT(デコーダのみ)、Vision Transformer | 元のTransformerの翻訳モデル、文章の指示を取り込む画像生成の拡散モデル |
| シラバス項目 | 技術分野 項目23 Attention | 技術分野 項目23 Attention |
最終確認日:2026年10月30日
それぞれの説明
Attentionは、クエリと各キーとの関連度から重みを求め、その重みでバリューを足し合わせる仕組みです。Transformerでは、どちらもsoftmax(QK^T / √d_k) Vという同じ式で計算します。違いは、クエリとキー・バリューをどの系列から作るかにあります。
Self-Attention
クエリ・キー・バリューを、すべて同じ系列から作ります。各単語が、同じ文の中のすべての単語との関連度を計算し、文脈を反映した表現を作ります。「彼女は駅で友人に会い、彼に本を返した。」なら、「彼」の表現を作るときに「友人」へ大きな重みを置く、といった働きです。
元のTransformerでは、エンコーダの各層と、デコーダの各層の両方にあります。デコーダ側では、まだ生成していない後ろの位置を参照しないように、マスクをかけます。エンコーダだけを使うBERTも、デコーダだけを使うGPTも、Attentionの部分はSelf-Attentionだけでできています。
Source-Target Attention
クエリを出力側(デコーダ)の系列から、キーとバリューを入力側(エンコーダの出力)から作ります。翻訳なら、訳文を作っているデコーダが「次の訳語には原文のどこが必要か」を問い、原文の各位置と照らし合わせて情報を集めます。Transformerの論文での呼び名はEncoder-Decoder Attentionで、クロスアテンションとも呼ばれます。
元のTransformerでは、デコーダの各層で、マスク付きSelf-Attentionの次に置かれます。原文は最初からすべてそろっているので、未来の位置を隠すマスクは要りません。2つの異なる系列をつなぐための仕組みで、現在は、画像生成モデルが文章の指示を取り込む部分などにも同じ形のAttentionが使われています。
見分けるコツ
- クエリとキー・バリューが同じ系列から来ていればSelf-Attention、別々の系列から来ていればSource-Target Attentionです。計算式は同じで、違うのは入力の出どころだけです。
- クエリを出すのは「情報を探す側」です。Source-Target Attentionでは、訳文を作っているデコーダが探す側になります。クエリとキー・バリューの出どころを入れ替えた説明に注意します。
- 2014年にBahdanauらがRNNのSeq2Seqに加えたAttentionは、デコーダがエンコーダ側を参照するもので、Source-Target Attentionの考え方にあたります。系列の処理そのものをSelf-Attentionで行うようにしたのが、2017年のTransformerです。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
元のTransformerでは、デコーダのどの層のSource-Target Attentionも、エンコーダの最終層の出力からキーとバリューを作る。
答えを見る
答え ◯ 正しい
エンコーダの層を積み重ねた最後の出力が、デコーダの全層で共通に参照されます。デコーダの層ごとに、エンコーダの対応する層を見るわけではありません。
-
Self-Attentionでは、各要素は自分自身には注目できず、自分以外の要素との関連度だけを計算する。
答えを見る
答え × 誤り
各要素のクエリは、自分自身のキーとも内積をとります。自分自身への重みも含めて、合計が1になるように重みを計算します。
-
Source-Target Attentionが出力する系列の長さは、キーとバリューを作った入力側(エンコーダ側)の系列の長さと同じになる。
答えを見る
答え × 誤り
出力はクエリ1つにつき1つ作られるので、デコーダ側の系列と同じ長さになります。入力側の長さは、各出力を作るときに足し合わせるバリューの数を決めます。
関連問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目23 Attention)
- Ashish Vaswani et al., Attention Is All You Need (2017) (3.1 Encoder and Decoder Stacks / 3.2 Attention / 3.2.3 Applications of Attention in our Model)
- Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio, Neural Machine Translation by Jointly Learning to Align and Translate (2014)
ほかの違い比較
- アジャイルとウォーターフォールの違い 進め方とAI開発での使い分け
- 赤池情報量規準(AIC)とベイズ情報量規準(BIC)の違い 罰則の重さ
- バギングとブースティングの違い 並列か逐次か、減らす誤差の違い
- バッチ正規化とレイヤー正規化の違い 平均と分散を計算する範囲の違い
- バッチ学習・ミニバッチ学習とオンライン学習の違い 更新回数とぶれ
- BERTとGPTの違い エンコーダとデコーダ、学習課題の違い
- CBOWとスキップグラムの違い 予測の向きと学習の速さ
- 分類問題と回帰問題の違い 出力の形で見分けるコツと評価指標
- CNN・RNNとTransformerの違い 得意なデータと計算の並列性
- 協調フィルタリングとコンテンツベースフィルタリングの違い 仕組み
- 共分散と相関係数の違い 式の関係と単位・値の範囲
- データ汚染とAdversarial Attackの違い 学習時か推論時かと対策
- 決定木とランダムフォレストの違い 解釈のしやすさと精度・安定性
- 深さ優先探索と幅優先探索の違い 調べる順番・最短解・メモリ
- 営業秘密と限定提供データの違い 3つの要件と刑事罰の有無
- Faster R-CNNとYOLOの違い 2段階型と1段階型、速度と精度
- GANと拡散モデル(Diffusion Model)の違い 学習と生成の仕組み
- GANとVAEの違い 識別器の有無と学習の仕組み
- GDPRと個人情報保護法の違い 法的根拠・本人の権利・制裁金
- 勾配降下法と誤差逆伝播法の違い 勾配を使う側と求める側
- グリッドサーチとランダムサーチの違い 試行回数の決まり方と効率
- ホールドアウト検証と交差検証の違い 分割回数・計算量・使い分け
- 画像分類(物体識別)と物体検出の違い 出力の形と使い分け
- 委託・第三者提供と共同利用の違い 同意の要否と受け手が使える範囲
- k-means法と階層的クラスタリングの違い クラスタ数を決める時期と計算量
- 個人情報・個人データと保有個人データの違い 範囲の入れ子とかかる義務
- 個人情報と個人識別符号の違い 包含関係と当たる例・当たらない例
- L1正則化とL2正則化の違い 罰則の形と重みが0になるか
- 最小二乗法と最尤法の違い 推定の基準と結果が一致する条件
- LIMEとSHAPの違い 局所近似とシャープレイ値の使い分け
- LSTMとGRUの違い ゲートの数と記憶セルの有無
- 機械学習とディープラーニングの違い 包含関係と特徴量の決め方
- 平均絶対値誤差(MAE)と平均二乗誤差(MSE)の違い 外れ値への強さ
- 正規化と正則化の違い 目的と代表的な手法を表で整理
- 主成分分析(PCA)と特異値分解(SVD)の違い 目的と計算の関係
- 主成分分析(PCA)とt-SNEの違い 線形か非線形か、保つ構造の違い
- 適合率と再現率の違い 分母の違いと重視する場面
- プルーニング・量子化と蒸留の違い 何を減らすかと元モデルの扱い
- Q学習とSARSAの違い 更新式の1か所と方策オン・オフ
- RNNとLSTMの違い 記憶セルと勾配消失の起きにくさ
- セマンティック・インスタンスとパノプティックの違い 背景と個体の扱い
- 新規性と進歩性の違い 比べ方とAI発明での論点
- シグモイド関数とソフトマックス関数の違い 出力の合計と使い分け
- ソフトローとハードローの違い 法的拘束力の有無と日本・EUの例
- 強いAIと弱いAIの違い 心をもつと考えるかの違い
- 教師あり学習・教師なし学習と強化学習の違い 学習の手がかりと代表例
- 特許権と著作権の違い 発生・保護対象・期間とAIでの使い分け
- 匿名加工情報と仮名加工情報の違い 加工の程度と第三者提供の可否
- 転移学習とファインチューニングの違い 重みを固定するか更新するか
- 請負契約と準委任契約の違い 完成義務とAI開発での使い分け
- Zero-shotとFew-shotの違い 与える例の数と重みを更新しない点