このページの本文へ

前へ 1 2 3 4 次へ

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

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

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

文● 田口和裕

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

「Output」フェーズ

「Predicted_Token」シート

 いよいよ最後のシート「Predicted_Token」までたどり着いた。すでにサンプルの「Mike is quick. He moves ー」の次に出てくる単語のトークンID「2952」と、「quickly」が表示されている。

 今回入力した文は「Lisa is slow. She moves ー」だ。「Predicted Token」の値は「slowly」になることが予想される。いや、なるはずだ。

 緊張しつつスイッチオン(脳内ドラムロール)。

「Predicted_Token」シート

 ドン!!!「slowly」やないんか〜〜〜〜い!!!!

 ……まあ、考えてみたら「Lisa is slow. She moves to」は全然あり得る。その可能性が「Lisa is slow. She moves slowly」より大きかったということなのだろう。

「id_to_tokens」シート

 念の為たしかめてみよう。「to」のトークンIDは「284」。

「Logits」シート

 トークンIDは「0」からスタートするため「284+1=285」が該当のセルとなるので注意しよう。「Logits」の値は「-110.34352」となっている。

「id_to_tokens」シート

 一方「Slowly」のトークンIDは「6364」。

「Logits」シート

 「Logits」の値は「-111.67387」だ。

「-110.34352 > -111.67387」なのでこの文章では「slowly」よりも「to」の方が可能性が高いと判断されたということだ。

 なお、この実装では「Logits」のスコアが一番高いものが次のトークン候補にそのまま選ばれているが、そのやり方だと単調な回答になることが多いため実際はランダム要素を入れることによって回答の多様性を表現している。

おさらいと感想

 最後にもう一度GPT-2の処理の流れをおさらいしておこう。

 入力されたテキストは単語ごとに分割「トークン化」され、それぞれが数値ベクトルに変換される。

 このベクトルは「マルチヘッドアテンション」と「マルチレイヤパーセプトロン」からなる「トランスフォーマー」層を12回通ることで、文脈を理解した特徴量へと変換されていき、最後の「ランゲージヘッド」で、正規化されたベクトルがスコアリングされ、入力に続く最も適切な単語を予測する。

 こうした一連の処理により、GPT-2は与えられたテキストに対し自然な続きを生成することができるのだ。

 以上、GPT-2を実際触ってみて、これまでなんとなくしか理解していなかったGPT、トランスフォーマーについてかなり理解が深まった。

 とはいえしょせん文系、数学の知識がなさすぎるため「なにをやっているか」は大体わかるものの、実際どのような計算がされているのかはまださっぱりわからない。だが、わからないなりにも、次に出てくるたった1つの単語を推論するだけでも膨大な計算量が必要になることはよくわかった。

 実際Excelの処理も頻繁に固まり、GPT-2のいちばん小さなモデルでこれなら、最新のGPT-4がローカルで動く日なんて来ないんじゃないかと思ってしまう。その実感が得られただけでも収穫だった。

 本当に重いシートだが、興味のある方はぜひ一度試してみることをおすすめする。

田口和裕(たぐちかずひろ)

 1969年生まれ。ウェブサイト制作会社から2003年に独立。雑誌、書籍、ウェブサイト等を中心に、ソーシャルメディア、クラウドサービス、スマートフォンなどのコンシューマー向け記事や、企業向けアプリケーションの導入事例といったエンタープライズ系記事など、IT全般を対象に幅広く執筆。2019年にはタイのチェンマイに本格移住。
 新刊発売中:「生成AI推し技大全 ChatGPT+主要AI 活用アイデア100選」https://amzn.to/3OfWzUN

前へ 1 2 3 4 次へ

カテゴリートップへ

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