Transformerと自己注意機構(Self-Attention)の概要
Transformerは、2017年に論文「Attention Is All You Need」で発表された、主にシーケンス・トゥ・シーケンス(Sequence-to-Sequence)タスクのために設計されたニューラルネットワークアーキテクチャです。従来のリカレントニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)に依存せず、Attention(注意機構)、特に自己注意機構(Self-Attention) を全面的に利用することで、自然言語処理(NLP)をはじめとする多くの分野でブレークスルーを達成しました。
自己注意機構 (Self-Attention) の目的
自己注意機構の最も重要な目的は、入力シーケンス内の各要素(例: 文中の各単語)が、同じシーケンス内の他のどの要素と関連が深いかを動的に計算し、その関連性の度合い(Attention Weight)に基づいて各要素の表現を文脈化・豊かにすることです。これにより、単語の意味だけでなく、文全体の中での役割や他の単語との関係性を捉えた表現を獲得できます。(選択肢1が正しい)
Query, Key, Value によるメカニズム
自己注意機構は、入力シーケンスの各要素(埋め込みベクトル)に対して、学習可能な重み行列を用いて以下の3つのベクトルを生成します。
- Query (Q): 現在注目している要素を表すベクトル。「私は、どの情報に関心があるか?」という問いかけに相当します。
- Key (K): シーケンス中の各要素が持つ「検索可能なキー」となるベクトル。「私の持つ情報は、このQueryと関連があるか?」と応答するための情報です。
- Value (V): シーケンス中の各要素が持つ「実際の値や内容」を表すベクトル。「QueryとKeyが関連しているなら、この情報を使ってください」という情報です。
計算プロセスは以下のようになります。
- アテンションスコアの計算: ある要素のQueryベクトルと、シーケンス中の全要素(自身を含む)のKeyベクトルとの類似度(通常はScaled Dot-Product)を計算します。これが「アテンションスコア」です。
- アテンションウェイトの計算: アテンションスコアをSoftmax関数で正規化し、合計が1になる確率分布(アテンションウェイト)に変換します。このウェイトは、Queryが各Key(つまり各要素)にどれだけ「注意」を向けるべきかを示します。
- 出力の計算: アテンションウェイトを使って、全要素のValueベクトルを加重平均します。これにより、関連性の高い要素の情報がより重視された、文脈化された新しい要素の表現が得られます。
自己注意機構の利点
- 長距離依存関係の捕捉: RNNのように情報を順番に伝達する必要がないため、シーケンス内の離れた要素間の関係性も直接的に、かつ効率的に捉えることができます。例えば、文頭の主語と文末の動詞の関係などを学習しやすくなります。
- 文脈理解の向上: 同じ単語でも文脈によって意味が変わる多義性を、周囲の単語との関連性を考慮することで解決しやすくなります。
- 計算の並列化: シーケンス内の各要素に対するAttention計算は、他の要素の計算と(ある程度)独立して行えるため、GPUなどを用いた並列計算に適しており、RNNよりも学習を高速化できます。
他の選択肢の評価
- シーケンス長の短縮 (選択肢2): 自己注意機構は、入力シーケンスと同じ長さの出力シーケンスを生成します。シーケンス長を短縮するのは、プーリング層などの役割です。
- 畳み込み演算の効率化 (選択肢3): 自己注意機構は畳み込み演算とは異なる原理に基づいています。CNNは主に局所的なパターンを捉えるのに対し、Attentionはより大域的な依存関係を捉えます。
- 勾配消失問題の解決 (選択肢4): Transformerアーキテクチャ全体としては、残差接続 (Residual Connection) や層正規化 (Layer Normalization) が勾配消失・爆発問題の緩和に寄与しますが、自己注意機構自体の主目的ではありません。
結論として、自己注意機構の核心的な機能は、入力シーケンス内の要素間の依存関係を捉え、文脈に応じた表現を生成することです。