5-3 トランスフォーマー
みかん
今回はG検定の第5章「ディープラーニングの要素技術」の3節「トランスフォーマー」を解説します
1. トランスフォーマーの基本形
みかん
トランスフォーマーはニューラル機械翻訳の新たなモデルとして提案されました。従来のSeq2SeqではRNNで構成されたエンコーダとデコーダをAttention機構により橋渡しした構造でした。
みかん
トランスフォーマーはエンコーダとデコーダからRNNを排除し、代わりにSelf-Attention(自己注意機構)と呼ばれるネットワーク構造を採用している点が最大の特徴です。
みかん
ネットワーク全体がSelf-AttentionとSource-Target Attentionという2種類のAttention機構のみから構成されているため、並列計算がしやすくRNNと比べて高速にモデルの学習が行えます。
あいで
Source-Target AttentionとSelf-Attentionはどう違うんですか?
みかん
Source-Target Attentionは入力文(source)と出力文(target)の橋渡しに使われるAttention機構で、Encoder-Decoder Attentionとも呼ばれます。Self-Attentionは入力文内の単語間または出力文内の単語間の関連度を計算するものです。
2. RNNの問題点
みかん
RNNにはいくつか欠点があります。1つ目は入力データを時間軸に沿って1つずつ順番に読み込む逐次処理が必要であること。そのため並列計算ができず、処理速度が遅くなります。
みかん
2つ目は時系列の最初の時刻に入力した情報の影響が時間の経過とともに次第に薄れてしまう点です。入力データが長くなると遠く離れた単語間の関係が掴きにくくなります。
RNNの限界
RNNの2つの問題点:①逐次処理で並列計算ができず処理速度が遅い ②長い入力で遠い情報が薄れる。これらを解決するために2017年にトランスフォーマーが提案された。
3. Self-Attention(自己注意機構)
みかん
Source-Target Attentionが入力文と出力文の単語間の関連度を計算するのに対し、Self-Attentionは入力文内の単語間または出力文内の単語間の関連度を計算したものです。
みかん
Self-Attentionでは入力文内の全ての単語間の関係を1ステップで直接計算することが可能です。RNNでは数ステップ必要だったのに対し、全ての計算が並列に行え高速に処理できます。
あいで
でもRNNと違って順番に処理しないなら、単語の順序情報はどうやって扱うんですか?
みかん
良い質問です。Self-Attentionは文内の語順の情報が失われてしまいます。そこで「位置エンコーディング(positional encoding)」と呼ばれる手法で、単語の出現位置に固有の情報を入力に付加します。
みかん
トランスフォーマーではエンコーダもデコーダもSelf-Attentionを用いています。ただし1点目として、デコーダはSource-Target Attentionにより入力文の情報も利用します。
みかん
2点目として、デコーダでは先頭から順に出力を生成するため、まだ出力していない未来の情報は使えないという制約があります。一方、エンコーダでは入力文の全ての単語を見ながら計算できます。
エンコーダとデコーダの違い
エンコーダは入力文の全単語を並列に参照できるが、デコーダは未来の情報は使えない。訓練時は教師強制により並列計算が可能。
4. クエリ、キー、バリューによるAttentionの計算
みかん
トランスフォーマーで使われる2種類のAttentionは、どちらも「クエリ(Query)」「キー(Key)」「バリュー(Value)」という3つの値を用いて計算されます。
みかん
イメージとしては、データベースにキーベクトルとバリューベクトルのペアが格納されており、与えられたクエリベクトルに対して各キーとの重要度を計算し、バリューの値を重要度で重み付けして出力する流れです。
あいで
Source-Target AttentionとSelf-AttentionではQKVの使い方が違うんですか?
みかん
Source-Target Attentionではクエリとしてデコーダの中間状態を利用し、キーとバリューはエンコーダの最終出力を利用します。これによりデコーダが必要な入力の情報を適切に参照できるようになります。
みかん
一方Self-Attentionでは、3つの値は全て自分自身をコピーして利用します。これにより各単語のベクトル表現を、同じ文内の他の単語との関係性を考慮して計算することができます。
5. Multi-Head Attention
みかん
上記のAttentionの計算では、クエリとキーとの関係を1種類のパターンでしか捉えることができません。しかし実際には複数のパターンでクエリとキーの関係を見る方が良い場合もあります。
みかん
これを実現するために、Attentionの計算を複数並列に行うことを考えます。これを「Multi-Head Attention」と呼び、各Attentionの計算をHeadと呼びます。
みかん
QKVの3つの値をそれぞれ異なる全結合層を通して変形し、さらにHead数だけ異なる全結合層を用意します。こうすることで各Headが異なるパターンでクエリとキーの関係を捉えることができます。
あいで
1つの視点だけでなく、複数の視点から単語間の関係を捉えることで、より豊かな表現ができるようになるんですね。
まとめ
みかん
1つ目、トランスフォーマーはRNNを排除し、Self-AttentionとSource-Target Attentionのみで構成。並列計算が可能で高速。
みかん
2つ目、Self-Attentionは文内の単語間の関連度を計算。語順情報の補完に位置エンコーディングを使用。
みかん
3つ目、Attentionの計算はクエリ・キー・バリューの3つの値で行われる。Multi-Head Attentionで複数パターンの関係を捉える。
みかん
ということで今回はトランスフォーマーについて解説しました
あいで
このチャンネルでは情報に関することを発信しています。
あいで
よければチャンネル登録、高評価よろしくお願い致します。