G検定 › Web参考書 › 第5章

AttentionとTransformer(Seq2Seq、Self-Attention、クエリ・キー・バリュー、位置エンコーディング)

第5章 ディープラーニングの要素技術 / 節 7

シラバスのキーワード: Seq2SeqAttentionSource-Target AttentionSelf-AttentionクエリキーバリューMulti-Head AttentionTransformer位置エンコーディング

本文を読んだあと、覚えているか確認してください。

マンガで学ぶ Self-Attention

Ai と みお の4ページ。上から順に読んでください。

Self-Attentionの解説マンガ 1/4ページSelf-Attentionの解説マンガ 2/4ページSelf-Attentionの解説マンガ 3/4ページSelf-Attentionの解説マンガ 4/4ページ

このマンガのページ マンガ一覧

Seq2SeqとAttention

Seq2Seq(エンコーダ・デコーダ)モデルは、入力系列をエンコーダで固定長のベクトルに圧縮し、デコーダで出力系列を生成します。長い入力では固定長ベクトルに情報を押し込めきれず精度が落ちる課題がありました。Attentionは、デコーダが出力の各単語を生成するときに入力のどの部分に注目するかを重み付けして参照する仕組みで、この課題を解決しました。

Self-AttentionとSource-Target Attention

クエリは「何を探しているか」、キーは「各要素が何を持っているか」、バリューは「実際に取り出す情報」です。クエリとキーの類似度で重みを求め、バリューの重み付き和を出力します。

Transformer

2017年にGoogleが発表した、RNNを使わずAttentionだけで系列を処理するモデルです。

BERT(エンコーダ)、GPT(デコーダ)、Vision Transformerなど、現在の基盤モデルの多くがTransformerに基づいています。

試験で問われる観点

この節の練習問題(8問)

答えを見る前に選んでから開いてください。同じ問題は章別演習でランダム出題されます。

  1. 問1
    Seq2Seq(エンコーダ・デコーダ)モデルの課題と、Attentionがそれをどう解決したかの説明として最も適切なものを選びなさい。
    1. 1エンコーダが入力系列全体を固定長のベクトル1つに圧縮するため長い文で情報が失われていたが、Attentionはデコーダが出力の各時刻で入力系列のどの部分に注目するかを重み付けして参照できるようにした
    2. 2デコーダが出力系列を一度に1語しか生成できず長い文を扱えなかったが、Attentionはデコーダが出力の全時刻の単語を同時に生成できるようにし、逐次的な生成を不要にした
    3. 3エンコーダが画像などの固定サイズの入力しか扱えなかったが、Attentionはデコーダが可変長の文章を入力として受け取れるようにし、Seq2Seqを画像から文章への変換にも応用できるようにした
    4. 4エンコーダが入力系列の各単語を独立に処理するため単語の順序の情報が失われていたが、Attentionは入力系列全体を固定長のベクトル1つに圧縮することで、系列全体の情報を保持できるようにした
    答えと解説

    正解: 1

    Seq2Seqは、エンコーダRNNが入力系列を1つの固定長ベクトルにまとめ、デコーダRNNがそこから出力系列を生成するモデルで、機械翻訳に使われました。文が長いと1つのベクトルに情報を詰め込みきれない問題があり、Attention(Source-Target Attention)は、デコーダの各時刻でエンコーダの各時刻の隠れ状態との関連度を計算し、重み付き和として参照することでこれを解決しました。

  2. 問2
    Self-Attentionにおけるクエリ・キー・バリューの役割の説明として最も適切なものを選びなさい。
    1. 1クエリはエンコーダの入力文、キーはデコーダの出力文、バリューは正解ラベルを表し、クエリとキーの単語を1対1で対応付けて翻訳を行う。この対応付けを複数の言語で並列に行うのがMulti-Head Attentionである
    2. 2各要素からクエリ・キー・バリューを線形変換で作り、クエリとキーの内積で他の要素との関連度を求め、その重みでバリューを足し合わせて新しい表現を得る。これを複数の変換で並列に行うのがMulti-Head Attentionである
    3. 3各要素からクエリ・キー・バリューを線形変換で作り、キーとバリューの内積で他の要素との関連度を求め、その重みでクエリを足し合わせて新しい表現を得る。これを複数の層で直列に行うのがMulti-Head Attentionである
    4. 4クエリ・キー・バリューは学習前に人が設定するハイパーパラメータで、クエリで注目する位置、キーで窓の幅、バリューで重みの上限を指定する。これらの組を複数用意して切り替えるのがMulti-Head Attentionである
    答えと解説

    正解: 2

    Self-Attentionでは、系列の各要素xに重み行列を掛けてクエリQ、キーK、バリューVを作ります。あるクエリとすべてのキーの内積をスケーリングしてソフトマックスにかけた重みで、バリューの重み付き和を取ると、文脈に応じたその要素の表現が得られます。Multi-Head Attentionは異なる重み行列でこの計算を複数並列に行い、多様な関係を捉えます。Q・K・Vは学習で決まる変換の結果であり、ハイパーパラメータではありません。

  3. 問3
    Transformerに関する記述として、誤っているものを選びなさい。
    1. 1Self-Attentionは語順の情報を持たないため、各位置を表す位置エンコーディングを入力に加える
    2. 2エンコーダとデコーダで構成され、デコーダではSelf-AttentionとSource-Target Attentionの両方を用いる
    3. 3Transformerは系列を1要素ずつ順番に処理するため、RNNよりも並列化が難しい
    4. 4RNNを使わずAttentionのみで系列を処理するため、系列全体を並列に計算でき学習が高速である
    答えと解説

    正解: 3

    Transformerの最大の利点は、RNNのように系列を逐次処理せず、Self-Attentionで全要素の関係を同時に計算できるため並列化しやすく、大規模な学習に向くことです。「1要素ずつ順番に処理するため並列化が難しい」という記述はRNNの特徴であり、Transformerについては誤りです。位置エンコーディングの必要性や、エンコーダ・デコーダの構成に関する記述は正しい内容です。

  4. 問4
    RNNと比較したとき、Attention(特にSelf-Attention)が系列データの処理で優れている点として最も適切なものを選びなさい。
    1. 1系列内の隣接する2つの位置だけを結びつけるため、パラメータ数がRNNより少なく、また語順の情報を位置エンコーディングなしで保持できる
    2. 2系列内の任意の2つの位置を直接結びつけるため、離れた単語間の依存関係を捉えやすく、また時刻順に逐次処理する必要がないので並列計算ができる
    3. 3系列を先頭から1つずつ順に処理して隠れ状態に文脈を蓄積するため、離れた単語間の依存関係を捉えやすく、また計算量が系列長に比例して抑えられる
    4. 4単語の順序を考慮せずに集合として扱うため、語順の情報を学習する必要がなく、また系列長にかかわらず計算量が一定になるので長い系列に強い
    答えと解説

    正解: 2

    RNNは前の時刻の状態を通してしか情報を伝えられないため、離れた位置の関係が薄れやすく、逐次処理のため並列化できません。Self-Attentionはすべての位置の組み合わせについて関連度を直接計算するため長距離の依存関係を捉えやすく、GPUで並列に計算できます。語順の情報は位置エンコーディングで補い、クエリ・キー・バリューを作る重みは学習されます。

  5. 問5
    Multi-Head Attentionの説明として、最も適切なものを選びなさい。
    1. 1入力系列を複数の短い部分系列に分割し、それぞれを別々のRNNで並列に処理してから隠れ状態を連結することで、長い系列でも勾配消失を起こさずに文脈を捉える
    2. 2同じ入力に対して独立に学習した複数のTransformerモデルの出力を多数決や平均で統合するアンサンブル手法で、モデル間のばらつきを打ち消して汎化性能を高める
    3. 3クエリ・キー・バリューを複数の異なる重みで変換して並列にAttentionを計算し、それぞれの結果を連結することで、文法的な関係や意味的な関係など異なる観点の関連を同時に捉える
    4. 4クエリ・キー・バリューを1組の重みで変換したAttentionを層ごとに直列に何度も繰り返し適用し、各回の結果を平均することで、系列が長くなっても計算量が増えないようにする
    答えと解説

    正解: 3

    Multi-Head Attentionは、入力を複数の「ヘッド」に分け、ヘッドごとに異なる線形変換でクエリ・キー・バリューを作ってAttentionを計算し、結果を連結して出力します。ヘッドごとに異なる種類の関連(係り受け、共参照など)を学習できるため表現力が高まります。RNNへの分割やモデルのアンサンブルではありません。

  6. 問6
    Source-Target AttentionとSelf-Attentionの違いの説明として、最も適切なものを選びなさい。
    1. 1Source-Target Attentionはエンコーダの出力をクエリ、デコーダ側をキー・バリューとして画像と文章の対応を取る画像専用の手法で、Self-Attentionはテキストの系列にのみ適用できる手法である
    2. 2Source-Target Attentionは学習されるパラメータを持たず入力と出力の位置を固定的に対応させ、Self-Attentionはクエリ・キー・バリューの重み行列を学習して系列内の要素同士の関連を計算する
    3. 3Source-Target Attentionは同じ系列内の要素同士の関連を計算し、Self-Attentionはエンコーダの出力(入力文)をキー・バリュー、デコーダ側をクエリとして入力と出力の対応を取る
    4. 4Source-Target Attentionはエンコーダの出力(入力文)をキー・バリュー、デコーダ側をクエリとして入力と出力の対応を取り、Self-Attentionは同じ系列内の要素同士の関連を計算する
    答えと解説

    正解: 4

    Source-Target Attention(Encoder-Decoder Attention)は、翻訳で「出力の単語を生成するとき入力文のどの単語に注目するか」を求めるもので、クエリがデコーダ側、キーとバリューがエンコーダ側から来ます。Self-Attentionは1つの系列の中で各要素が他の要素とどう関係するかを計算します。Transformerのデコーダは両方を組み合わせて使います。

  7. 問7
    長い文書の中で「それ」が何を指すかを、離れた位置の単語との関係から捉えたい。系列内の任意の2点を直接結び、並列に計算できる仕組みとして最も適切なものを選びなさい。
    1. 1Source-Target Attention
    2. 2回帰結合層を持つRNN
    3. 3双方向RNN
    4. 4Self-Attention
    答えと解説

    正解: 4

    Self-Attentionは1つの系列の中で各要素が他の要素とどう関係するかを計算し、任意の2点を直接結ぶため、離れた単語の依存関係を捉えやすく並列計算もできます。Source-Target Attentionはデコーダ側のクエリとエンコーダ側のキー・バリューで入力と出力の対応を取る仕組みです。RNNや双方向RNNは時刻順に逐次処理するため並列化が難しくなります。

  8. 問8
    Transformerに基づく代表的なモデルであるBERTとGPTが、それぞれ主に用いる構成の組み合わせとして、最も適切なものを選びなさい。
    1. 1BERT:エンコーダ、GPT:デコーダ
    2. 2BERT:デコーダ、GPT:エンコーダ
    3. 3BERT:エンコーダ、GPT:RNN
    4. 4BERT:RNN、GPT:デコーダ
    答えと解説

    正解: 1

    BERTはTransformerのエンコーダ、GPTはデコーダに基づくモデルで、Vision Transformerなど現在の基盤モデルの多くもTransformerに基づいています。TransformerはRNNを使わずAttentionだけで系列を処理するため、BERTとGPTのどちらかがRNNを用いるという組み合わせは誤りです。