機械学習の基礎
Transformerで使われるセルフアテンション(自己注意機構)の説明として、適切なものはどれか。
- A系列の要素を先頭から1つずつ順に読み込み、前の要素の隠れ状態を次の要素に渡しながら、系列全体の情報をまとめていく
- B各トークンのクエリと、すべてのトークンのキーとの類似度から重みを求めて、バリューの重み付きの和をとるので、系列の全位置の計算を並列に行える
- C各トークンについて、隣り合う決まった数のトークンだけを見る畳み込みを何層も重ねて、離れたトークンとの関係は扱わないようにする
答えと解説を見る
正解:B. 各トークンのクエリと、すべてのトークンのキーとの類似度から重みを求めて、バリューの重み付きの和をとるので、系列の全位置の計算を並列に行える
セルフアテンションでは、各トークンのベクトルからクエリ(Q)、キー(K)、バリュー(V)を作り、クエリとすべてのキーの内積をソフトマックス関数で重みに変えて、バリューの重み付きの和を求めます。どのトークンも離れたトークンの情報を直接取り込めるうえ、計算は行列の積にまとめられ、RNNのように前の時刻の結果を待つ必要がないので、学習のときに系列の全位置を並列に計算できます。この計算そのものには語順の情報が含まれないので、位置の情報を加える位置エンコーディングを組み合わせます。一方で、計算量は系列の長さの2乗に比例して増えます。
- A. RNNの処理のしかたです。時刻の順に計算するので、並列化しにくい方法です。
- B. 正しい。すべてのトークンどうしの関係を重みとして求め、行列の積で並列に計算できます。
- C. セルフアテンションは、近くのトークンに限らず、系列のすべてのトークンとの関係を直接扱えます。