このページの本文へ

田口和裕の「ChatGPTの使い方!」 第20回

「ExcelでChatGPTを再現するシート」が想像以上に素晴らしかった

2024年03月08日 09時00分更新

文● 田口和裕

  • この記事をはてなブックマークに追加
  • 本文印刷

「Transformer」フェーズ

 次はいよいよGPTの中核をなす「Transformer」の処理に移る。このフェーズは「マルチヘッドアテンション」と「マルチレイヤーパーセプトロン(MLP)」の2つの主要な処理から構成されている。

 GPT-2ではこの一連の処理を12回繰り返すことで、徐々にテキストの文脈を正確に捉えられるようになり、最終的により適切な予測が可能になる。

 Transformerの最初のステップが「マルチヘッドアテンション(Multi-Head Attention)」だ。この処理では、入力された文章、この図では「Mike is quick. He moves」からトークン間の関連性を捉えることが目的になっている。

 具体的には、「マルチヘッド」つまり複数の「頭・視点」から、各トークンが他のトークンとどの程度関係しているかを特定する作業をしている。例えば「Mike」と「He」は同一の人物を指し、強く関連していることを捉えている。

 一方、「quick」と「moves」は「Mike」の性質や行動を表しているため「Mike」とも関連は高くなる。ただし、「quick」と「moves」同士の関連はそれほど高くない。

 このように、複数の異なる視点から各トークン間の関連度を算出し、モデルに重要な部分に「注目」するよう指示を出すことがマルチヘッドアテンションの主な役割となる。

 次のステップはマルチレイヤーパーセプトロンだ。この処理では、マルチヘッドアテンションが注目した単語の関係性をさらに深く理解することが目的だ。

 例えば、アテンションが「Mike」「quick」「He」「moves」という単語に注目したとする。特に「quick」という単語に着目すると、図版にあるように、それには「速く走る人(物理的な速さ)」「頭の中の電球(素早い理解力)」「指先(手先の器用さ)」「心臓(感情の昂ぶり)」など、様々な意味が含まれている。

 マルチレイヤーパーセプトロンの最初のステップでは、こうした「quick」の多様な意味と、他の単語がどのように関連しているかを分析する。例えば、「Mike」や「He」は人を表しているので、「速く走る人」の意味と結びつきやすいことがわかる。

 次に、これらの関係をまとめてより大きな文脈の解釈を始める。この場合、「Mike」が主語で「moves」が動詞なので、「quick」は「速く走る」という意味で使われているとわかる。

 このようにステップを追うごとに、単語が持つ多様な意味の中から、文脈に合ったものを特定していく。これが、マルチレイヤパーセプトロンの役割だ。

 この実装では、1つのシート内で16のステップに分け、マルチヘッドアテンションとマルチレイヤパーセプトロンの計算をしている。

 具体的には、Step 1からStep 10がマルチヘッドアテンションの処理で、入力トークンから注目すべき部分を特定している。続くStep 11からStep 16がマルチレイヤパーセプトロンの処理になり、注目した情報を組み合わせて深い理解を導いている。

 このように1シート内で両処理を16ステップに分けて実装し、その1シートの処理を「Block_0」から「Block_11」まで合計12回繰り返すことで、徐々に適切な予測ができるようになっているのだ。

 「Block_0」から「Block_11」まで、「シート再計算」ボタンをクリックして実行していく。押すたびにベクトルの数値が変化しているかどうか必ず確認しよう。

「Language Head」フェーズ

 「Language Head」では、Transformerを経た埋め込みベクトルを、次のトークン予測に適した形式に変換する。

 具体的には「Layer_Norm」シートで正規化処理をした後、「Logits」シートにリストにあるすべての単語が次のトークンとして出現する可能性をあらわすスコアが計算される。その中で最も値が大きいものが次のトークン、すなわちこの処理の最終的なアウトプットとなる。

「Logits」シート

 Logitsはこのように数字の羅列になっている。前述のようにこの中で最も数値が大きいものが答えだ。ここまで来ればあと少し!

カテゴリートップへ

この連載の記事
ピックアップ