生成AI資格対策(生成AIパスポート+G検定)
Transformer
1時刻ずつ読む限り、GPUを並べても速くならない
前の回で見たとおり、Attention は Encoder-Decoder の固定長ベクトルというボトルネックを解く追加部品として登場しました。ただし土台は依然として RNN で、1時刻ずつ順に処理するという制約は残ったままです。系列が長いほど計算は直列に伸び、計算機をいくら並べても速くなりません。
2017年に発表された論文 Attention Is All You Need は、ここで思い切った判断をしました。RNN も畳み込みも使わず、Attention だけでネットワークを構成するというものです。これが Transformer です。すべての位置の計算を同時に進められるので並列化が効き、大量のデータと大きなモデルを現実的な時間で学習できるようになりました。今日の大規模言語モデルが成立している技術的な前提が、ここにあります。
離れた語どうしを、1段で結びつける
Transformer の中心が自己注意(Self-Attention)です。前の回の Attention は出力側から入力側を参照する仕組みでしたが、自己注意は同じ系列の内部で、各要素が他のすべての要素との関係を一度に見ます。
たとえば「その動物は疲れていたので道を渡らなかった」という文で、「その」が何を指すかを決めるには、文中の他の語との関係が要ります。自己注意では、各語が文中の全語に対して関連の強さを計算し、強い相手の情報を多く取り込みます。RNN のように何時刻もかけて情報を運ぶ必要がないため、離れた語どうしの関係も1段で結びつきます。
計算は Query、Key、Value という3つの役割で整理されます。
| 役割 | 意味 |
|---|---|
| Query | 今注目している要素が、どんな情報を探しているかを表す |
| Key | 各要素が、自分はどんな情報かを示す札 |
| Value | 実際に取り出される情報の本体 |
Query と各 Key の相性を測って重みを作り、その重みで Value を混ぜ合わせます。辞書を引く動作に近く、探したい語を見出しと照合し、一致度の高い項目の中身を多めに取ってくる、と考えると分かりやすくなります。自己注意では、この3つがすべて同じ入力から作られる点が名前の由来です。マルチヘッドアテンションは、この注意計算を複数組み並列に走らせる仕組みです。組ごとに、文法的な係り受けを見るもの、意味的な関連を見るものといった異なる観点が分かれて学習されます。
一方で、全要素を同時に見るということは、語の並び順の情報が失われるということでもあります。RNN は順番に読むこと自体が順序の情報でしたが、Transformer にはそれがなく、語をシャッフルしても同じ結果になってしまいます。そこで、各位置に固有のパターンを持つベクトルを入力に足し込みます。これが位置エンコーディングです。理由を問う出題は頻出なので、自己注意そのものには順序の概念がないから、と言えるようにしておきます。
同じ土台から、BERT と GPT が分かれた
Transformer はもともと Encoder と Decoder の両方を持つ構成でした。ここから、片方だけを使う流れが2つ生まれます。
BERT は Encoder のみを使い、文中の一部を隠して当てる形で学習します。前後両方の文脈を同時に使えるため、文の意味をつかむ課題、たとえば分類や抽出に強い一方、文章を書き進める用途には向きません。GPT 系は Decoder のみを使い、次に来る語を予測する学習をひたすら重ねます。前から後ろへの一方向なので、続きを書くことがそのまま得意分野になります。生成AIの主役が GPT 系である理由は、この学習方法の違いにあります。
試験ではこう問われる
- 「RNN や CNN を用いず Attention のみで構成された」は Transformer です。2017年、論文名は Attention Is All You Need として問われます
- 「Query、Key、Value」の役割を入れ替えた選択肢が出ます。取り出される中身が Value である点を押さえます
- 「位置エンコーディングが必要な理由」は、自己注意が順序を持たないからです。計算量を減らすためという誤りの選択肢と並びます
- 「Encoder のみを使う」は BERT、「Decoder のみを使う」は GPT 系という対応が定番で、逆にした選択肢が必ず混ざります
- 「大規模化が可能になった理由」は並列化できることです。パラメータが少ないからという説明は誤りです
復習ミニクイズ
Transformer に位置エンコーディングが必要な理由として最も適切なものはどれですか。