注意機構

Attention Mechanism:

注意機構とは,入力の中でどの部分が重要かを動的に学習し,出力の生成時にその重要度に応じて情報を取り出す仕組みである.人間が文章を読むときに,ある単語やフレーズに意識を向けて意味を理解するのに似た発想から着想を得ている.数学的には,クエリ $\mathbf{q}$,キー系列 $\mathbf{K} = [\mathbf{k}_1, \ldots, \mathbf{k}_n]$,バリュー系列 $\mathbf{V} = [\mathbf{v}_1, \ldots, \mathbf{v}_n]$ に対して,クエリと各キーの類似度 $f(\mathbf{q}, \mathbf{k}_i)$ を計算し,それを正規化した注意重み $\alpha_i = \frac{\exp(f(\mathbf{q}, \mathbf{k}_i))}{\sum_{j=1}^{n} \exp(f(\mathbf{q}, \mathbf{k}_j))}$ を用いて,バリューの重み付き和 $\mathbf{c} = \sum_{i=1}^{n} \alpha_i \mathbf{v}_i$ を出力する仕組みである.

注意機構は入力系列に対して重要度に基づく重み付き和を計算する仕組みである.例えば「彼はリンゴを食べた」という文を英語に訳すとき,「食べた[ate]」という単語を生成する際には,「彼[he]」や「リンゴ[apple]」といった単語の情報が重要になる.注意機構は,出力のあるタイミングで,入力の全体を見渡しながら,どの部分にどれだけ「注意を向ける」かを決めて翻訳や生成を行う.この動的な重要度計算により,従来の固定長表現の制約を克服し,入力の各要素に対する重要度を適応的に決定できる.

数学的な定義において,注意機構はクエリ[Query],キー[Key],バリュー[Value]という3つの要素から構成される.入力として,クエリ $\mathbf{q} \in \mathbb{R}^{d_q}$,キー系列 $\mathbf{K} = [\mathbf{k}_1, \mathbf{k}_2, \ldots, \mathbf{k}_n] \in \mathbb{R}^{n \times d_k}$,バリュー系列 $\mathbf{V} = [\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_n] \in \mathbb{R}^{n \times d_v}$ が与えられる.注意機構の出力は以下の手順で計算される.

まず,クエリ[Query]と各キー[Key]との類似度を測る関数 $f[\mathbf{q}, \mathbf{k}_i]$ を定義する.このようにクエリ[Query]とキー[Key]の類似度を測ることにより,あるトークンが他のトークンにどれだけ注意を払うべきか[影響を受けるか]を決めている.あるトークンが他のトークンにどれだけ注意を払うべきかというのは,トークンAの意味にトークンBが及ぼす影響度を意味する.

この類似度関数としては,内積 $\mathbf{q}^T \mathbf{k}_i$,スケール付き内積 $\frac{\mathbf{q}^T \mathbf{k}_i}{\sqrt{d_k}}$,加法的注意 $\mathbf{v}^T \tanh[\mathbf{W}_1 \mathbf{q} + \mathbf{W}_2 \mathbf{k}_i]$,双線形形式 $\mathbf{q}^T \mathbf{W} \mathbf{k}_i$ などが用いられる.類似度関数の選択は,扱う問題の性質やモデルの設計思想によって決定される.

次に,これらの類似度スコアを正規化して注意重み[attention weights]を得る.最も一般的にはソフトマックス関数が用いられ,$i$ 番目の注意重みは次のように定義される:\[\alpha_i = \frac{\exp[f[\mathbf{q}, \mathbf{k}_i]]}{\sum_{j=1}^{n} \exp[f[\mathbf{q}, \mathbf{k}_j]]}\]これにより $\sum_{i=1}^{n} \alpha_i = 1$ かつ $\alpha_i \geq 0$ が保証され,注意重みは確率分布の性質を持つ.

最終的に,注意機構の出力は注意重みとバリューの重み付き和として\[\mathbf{c} = \sum_{i=1}^{n} \alpha_i \mathbf{v}_i\]で与えられる.この $\mathbf{c}$ をコンテキストベクトル[context vector]と呼ぶ.コンテキストベクトルは,クエリに最も関連性の高いバリューに大きな重みを与えた統合情報を表している.

行列表記では,キー行列を $\mathbf{K} \in \mathbb{R}^{n \times d_k}$,バリュー行列を $\mathbf{V} \in \mathbb{R}^{n \times d_v}$ とすると,注意重みベクトル $\boldsymbol{\alpha} = [\alpha_1, \alpha_2, \ldots, \alpha_n]^T \in \mathbb{R}^{n}$ を用いて\[\mathbf{c} = \boldsymbol{\alpha}^T \mathbf{V}\]と表現される.この行列表記により,複数のクエリに対する並列処理が効率的に実行可能となる.

複数のクエリがある場合,クエリ行列 $\mathbf{Q} \in \mathbb{R}^{m \times d_q}$ に対して,注意機構は\[\text{Attention}[\mathbf{Q}, \mathbf{K}, \mathbf{V}] = \text{softmax}[f[\mathbf{Q}, \mathbf{K}]] \mathbf{V}\]として一般化される.ここで $f[\mathbf{Q}, \mathbf{K}]$ は各クエリと各キーの類似度を計算する関数であり,その結果は $m \times n$ のスコア行列となる.各行が対応するクエリに対する注意重みを表している.

特に内積注意の場合,$f[\mathbf{Q}, \mathbf{K}] = \mathbf{Q} \mathbf{K}^T$ であり,スケール付き内積注意では\[f[\mathbf{Q}, \mathbf{K}] = \frac{\mathbf{Q} \mathbf{K}^T}{\sqrt{d_k}}\]となる.スケーリング因子 $\frac{1}{\sqrt{d_k}}$ は,内積の値が大きくなりすぎてソフトマックス関数の勾配が消失することを防ぐ役割を果たす.

自己注意機構は,同一の入力系列 $\mathbf{X} \in \mathbb{R}^{n \times d}$ から線形変換によってクエリ,キー,バリューを生成する特別な場合である.学習可能な重み行列 $\mathbf{W}_Q \in \mathbb{R}^{d \times d_q}$,$\mathbf{W}_K \in \mathbb{R}^{d \times d_k}$,$\mathbf{W}_V \in \mathbb{R}^{d \times d_v}$ を用いて\[\mathbf{Q} = \mathbf{X} \mathbf{W}_Q, \quad \mathbf{K} = \mathbf{X} \mathbf{W}_K, \quad \mathbf{V} = \mathbf{X} \mathbf{W}_V\]として定義され,自己注意の出力は\[\text{SelfAttention}[\mathbf{X}] = \text{softmax}\left[\frac{\mathbf{X} \mathbf{W}_Q [\mathbf{X} \mathbf{W}_K]^T}{\sqrt{d_k}}\right] \mathbf{X} \mathbf{W}_V\]となる.自己注意機構により,系列内の任意の位置間の依存関係を直接的にモデル化できる.

マルチヘッド注意機構では,$h$ 個の異なる注意ヘッドを並列に計算し,その結果を連結して線形変換を施す.$i$ 番目のヘッドの出力を\[\text{head}_i = \text{Attention}[\mathbf{Q} \mathbf{W}_i^Q, \mathbf{K} \mathbf{W}_i^K, \mathbf{V} \mathbf{W}_i^V]\]とすると,マルチヘッド注意の出力は\[\text{MultiHead}[\mathbf{Q}, \mathbf{K}, \mathbf{V}] = \text{Concat}[\text{head}_1, \ldots, \text{head}_h] \mathbf{W}^O\]で定義される.ここで,$\text{head}_i$ は各注意ヘッドの出力[すべて同じ次元],それらを横方向に連結[concat]してから出力層 $\mathbf{W}^O$ に渡すことを意味する.また, $\mathbf{W}^O$ は出力投影行列である.マルチヘッド機構により,異なる種類の依存関係や意味的関係を同時に学習できる.

注意機構の本質は,固定長の表現に情報を圧縮する必要がなく,入力系列の任意の部分間の直接的な依存関係をモデル化できることにある.この性質により,従来のリカレントニューラルネットワークが抱えていた長期依存性の問題を解決し,並列計算を可能にした革新的な仕組みとなっている.

Mathematics is the language with which God has written the universe.





















SLURM ガンマ関数 スターリングの公式 Zornの補題 ラドン=ニコディム定理 集合関数Pの連続性