ChatGPTの仕組みから学ぶG検定対策講座①

こんにちは。ゆうせいです。

ChatGPTに質問すると、まるで人間が考えて書いたような自然な文章が返ってきます。

しかし、ChatGPTが最初から回答全体を完成させているわけではありません。

文章生成の基本となっているのは、次の処理です。

ここまでに入力された文章から、次に続くトークンを予測する

今回は、Transformerの内部処理を視覚的に確認できる「Transformer Explainer」を操作しながら、ChatGPTが文章を生成する基本的な仕組みを見ていきます。

Transformer Explainerでは、入力した文章がトークンに分割され、数値へ変換され、Transformer Blockを通り、次のトークンの確率が計算されるまでの流れを画面上で確認できます。

【G検定対策コラム①:トークン(Token)とトークン化(Tokenization)】

G検定では、大規模言語モデルが文章を「単語」ではなく「トークン」という単位で扱う点が問われます。トークンとは、AIが文章を処理するために分割した最小単位です。日本語では単語や文字に近い単位、英語では単語がさらに細かく分割されることもあります(例:「empowers」が複数トークンに分かれる)。文章をトークンに分割する処理をトークン化(Tokenization)と呼びます。GPT-2では語彙数が50,257種類でしたが、モデルによって語彙サイズは異なります。関連語として、サブワード分割手法のBPE(Byte Pair Encoding)やWordPieceも押さえておくと安心です。

Transformer Explainerを開く

まず、次のTransformer Explainerを開いてください。

Transformer Explainerは、ジョージア工科大学の研究者らによって開発された、Transformerの内部処理を視覚的に学べるWebツールです。ブラウザ内でGPT-2 smallが動作し、入力に応じて計算結果が更新されます。

画面上部には、次のような英文が入力されています。

Data visualization empowers users to

日本語にすると、次のような意味です。

データの可視化は、利用者が~することを可能にする

文章は途中で終わっています。

Transformerは、この文章に続くトークンを予測します。

【G検定対策コラム②:Transformerと「Attention Is All You Need」】

Transformerは2017年の論文「Attention Is All You Need」(Vaswaniら)で提案された、系列データを処理するニューラルネットワークです。G検定では発表年(2017年)と論文名が頻出です。それ以前の主流だったRNNやLSTMは、トークンを順番に処理するため並列計算が難しく、長い文脈の保持が苦手でした。Transformerはこの逐次処理を廃し、Attention機構で系列全体の関係を一度に計算することで、並列化と長距離依存の学習を両立させた点が革新でした。BERT・GPTをはじめ、現在の主要な言語モデルの基盤となっています。

Generateボタンを押してみる

画面上部にある「Generate」ボタンを押してください。

すると、入力されていた文章の後ろに、新しいトークンが追加されます。

例えば、次のような文章になります。

Data visualization empowers users to understand

このとき、Transformerが行っているのは、文章全体を一度に作成する処理ではありません。

最初に、次のトークンとして「understand」が適切である可能性を計算します。

「understand」が選ばれると、入力は次のように更新されます。

Data visualization empowers users to understand

続いてTransformerは、この更新された文章を使って、さらに次のトークンを予測します。

この処理を繰り返すことで、文章が少しずつ生成されていきます。

ChatGPTの基本は「次のトークン予測」

文章生成AIの基本的な動作は、次のトークンを予測することです。

例えば、次の文章を考えてみましょう。

日本の首都は

この後に続く候補として、モデルは次のようなトークンを考えます。

候補確率のイメージ
東京90%
大阪4%
京都3%
その他3%

この場合、最も確率の高い「東京」が選ばれる可能性が高くなります。

「東京」が選ばれると、文章は次のようになります。

日本の首都は東京

次に、モデルはこの文章全体を使って、さらに続きを予測します。

候補確率のイメージ
です80%
8%
5%
その他7%

「です」が選ばれれば、次の文章が完成します。

日本の首都は東京です

このように、文章生成AIは、次に続くトークンの予測を繰り返しながら文章を作っています。

Transformer Explainerも、入力された文章に対して、次のトークンの確率を計算する仕組みを視覚化しています。(データサイエンスクラブ)

「単語」ではなく「トークン」を予測する

初学者向けの説明では、よく次のように表現されます。

ChatGPTは次の単語を予測している

おおまかな説明としては間違いではありません。

ただし、より正確には、予測しているのは単語ではなくトークンです。

トークンとは、AIが文章を処理するために分割した単位です。

例えば、次の文章があるとします。

生成AIは便利です。

説明を単純化すると、次のような単位に分割されるイメージです。

「生成」/「AI」/「は」/「便利」/「です」/「。」

ただし、トークンと単語は必ずしも一致しません。

一つの単語が複数のトークンに分割されることもあります。

Transformer Explainerの例では、「empowers」という単語が一つのまとまりではなく、複数のトークンに分割されます。また、同ツールで使用されているGPT-2の語彙には、50,257種類のトークンがあります。

文章をトークンに分割する処理を、トークン化、英語ではTokenizationと呼びます。

Transformerとは何か

Transformerは、文章などの連続したデータを処理するためのニューラルネットワークの仕組みです。

2017年に発表された論文「Attention Is All You Need」で提案され、その後、文章生成、翻訳、要約、質問応答など、さまざまなAIの基盤として利用されるようになりました。

Transformerの重要な特徴は、文章中のトークン同士の関係を調べられることです。

例えば、次の文章を考えてみましょう。

太郎は新しいパソコンを購入した。それを仕事で使う予定だ。

二つ目の文にある「それ」は、前の文にある「新しいパソコン」を指しています。

「それ」の意味を理解するには、直前の単語だけではなく、少し前に登場した「新しいパソコン」との関係を調べる必要があります。

Transformerでは、文章中のどのトークンが、ほかのどのトークンと強く関係しているのかを計算します。

この中心となる仕組みが、Attentionです。

日本語では「注意機構」と訳されます。

【G検定対策コラム③:Attention(注意機構)とSelf-Attention】

Attention(注意機構)は、文章中のどのトークンが他のどのトークンと強く関係するかを計算する仕組みで、Transformerの中核です。特に、同じ系列内のトークン同士の関係を調べるものをSelf-Attention(自己注意)と呼びます。例文「それ」が前文の「新しいパソコン」を指す、といった離れた語の対応関係を捉えられるのが強みです。さらに複数の観点から同時にAttentionを計算する仕組みをMulti-Head Attention(多頭注意)と呼び、G検定でも用語として問われます。「Query・Key・Value」という3要素で計算される点も、余裕があれば押さえましょう。

Transformer Explainerで全体構造を見る

Transformer Explainerの画面を下へスクロールすると、Transformerの処理が大きく三つに分けて表示されています。

  1. Embedding
  2. Transformer Block
  3. Probabilities

文章生成の流れとして整理すると、次のようになります。

1.Embedding

入力された文章を、Transformerが計算できる数値へ変換する処理です。

主に次の処理が行われます。

  • 文章をトークンに分割する
  • 各トークンをIDに変換する
  • 各トークンをベクトルに変換する
  • トークンの位置情報を加える

【G検定対策コラム④:埋め込み(Embedding)と分散表現】

Embedding(埋め込み)は、トークンを多数の数値が並んだベクトルへ変換する処理です。コンピュータは言葉をそのまま計算できないため、各トークンを「分散表現(Distributed Representation)」と呼ばれるベクトルに変換します。GPT-2 smallでは1トークンを768次元で表現します。G検定では、単語をベクトル化する古典的手法としてWord2Vec(CBOW・Skip-gram)やGloVeも頻出です。加えて、Transformerは並列処理ゆえに語順の情報が失われるため、位置情報を加える「位置エンコーディング(Positional Encoding)」を用いる点も重要ポイントです。

コンピュータは、「猫」「データ」「便利」といった言葉を、そのまま計算することはできません。

そこで、それぞれのトークンを多数の数値が並んだベクトルへ変換します。

Transformer Explainerで使用されているGPT-2 smallでは、一つのトークンが768次元のベクトルで表現されます。

2.Transformer Block

数値に変換されたトークンを処理する部分です。

Transformer Blockには、主に次の二つがあります。

  • Multi-Head Self-Attention
  • MLP

Self-Attentionは、トークン同士の関係を調べる仕組みです。

MLPは、各トークンが持つ情報をさらに変換し、より複雑な特徴を表現できるようにするニューラルネットワークです。

Transformer Explainerで使用されているGPT-2 smallでは、Transformer Blockが12個積み重ねられています。トークンの表現は複数のBlockを通過するたびに更新されていきます。

3.Probabilities

Transformer Blockで処理された結果から、次のトークンの候補と確率を計算する部分です。

GPT-2には50,257種類のトークンがあるため、最終的には、それぞれのトークンに対して次のような点数が計算されます。

トークン点数のイメージ
understand8.2
see7.6
explore6.9
create5.1

この段階の点数は、Logitと呼ばれます。

LogitにSoftmax関数を適用すると、合計が1になる確率分布へ変換されます。

トークン確率のイメージ
understand45%
see28%
explore18%
create9%

モデルは、この確率分布をもとに次のトークンを選びます。

【G検定対策コラム⑤:ソフトマックス関数(Softmax)とロジット(Logit)】

Transformerの最終段階では、各トークンに点数(Logit)が計算されます。このLogitにソフトマックス関数(Softmax)を適用すると、合計が1になる確率分布へ変換されます。ソフトマックスは、複数クラスの分類問題で出力を確率として解釈するための代表的な活性化関数で、G検定の機械学習分野でも頻出です。2クラス分類で使うシグモイド関数と対比して覚えておくとよいでしょう。モデルはこの確率分布をもとに、次のトークンを選択します。

同じ入力でも出力が変わる理由

同じ質問をChatGPTに入力しても、毎回まったく同じ回答になるとは限りません。

これは、必ず最も確率の高いトークンだけを選んでいるわけではないためです。

例えば、次の文章を考えてみましょう。

天気がよいので、公園へ

続きとしては、複数の候補があります。

  • 行きます
  • 出かけます
  • 散歩に行きます
  • 遊びに行きます

どの候補も、文章として不自然ではありません。

モデルは、それぞれの候補に確率を付け、その確率をもとに次のトークンを選択します。

どの程度幅広い候補から選ぶかに影響する設定が、Temperatureです。

Transformer Explainerの画面上部には、Temperatureを変更するための入力欄があります。

Temperatureを低くすると、確率の高い候補が選ばれやすくなり、出力が安定します。

Temperatureを高くすると、確率の低い候補も選ばれやすくなり、出力に多様性が生まれます。

Temperatureを変更してみる

Transformer ExplainerのTemperatureを「0.2」程度に設定し、Generateボタンを数回押してみてください。

確率の高いトークンが選ばれやすいため、比較的似た結果が生成されます。

次に、Temperatureを「1.5」や「2.0」程度へ上げてみてください。

選択されるトークンの幅が広がり、異なる結果が出やすくなります。

ただし、Temperatureを高くしすぎると、文脈に合わないトークンも選ばれやすくなります。

Temperatureは、単純に「高いほどよい」「低いほどよい」というものではありません。

目的に応じた使い分けが必要です。

  • 正確で安定した回答が必要な場合は低めにする
  • 多様なアイデアが必要な場合は高めにする
  • 一般的な文章生成では中間的な値を使う

Transformer Explainerでは、Temperatureだけでなく、候補を上位のトークンに限定するTop-kや、累積確率を基準に候補を絞るTop-pも操作できます。

【G検定対策コラム⑥:Temperature・Top-k・Top-p(サンプリング手法)】

同じ入力でもChatGPTの出力が毎回変わるのは、確率分布から次のトークンを選ぶ際に「サンプリング」を行うためです。Temperature(温度)は候補の選ばれ方の幅を調整するパラメータで、低いと出力が安定し、高いと多様性が増します。Top-kは確率上位k個の候補に絞る手法、Top-p(核サンプリング/Nucleus Sampling)は累積確率がpに達するまでの候補に絞る手法です。生成AIの制御に関わる実践的な用語として、近年のG検定で問われやすい範囲です。

次のトークン予測だけで、なぜ質問に回答できるのか

「次のトークンを予測しているだけなのに、なぜ質問に答えられるのか」と疑問に思うかもしれません。

大規模言語モデルは、学習データに含まれる膨大な文章から、次のようなパターンを学習しています。

  • 質問の後には回答が続く
  • 説明を求められたら定義や具体例が続く
  • プログラムの途中には適切なコードが続く
  • メールの書き出しには挨拶や宛名が続く
  • 物語の文章には登場人物の行動が続く

つまり、モデルは単語を無作為に並べているのではありません。

入力された文章と、それまでに生成した文章を手掛かりに、文脈に合う次のトークンを繰り返し選んでいます。

次のトークン予測を非常に高い精度で繰り返すことで、質問への回答、文章の要約、翻訳、プログラムの作成などが可能になります。

【G検定対策コラム⑦:大規模言語モデル(LLM)と事前学習】

「次のトークンを予測しているだけ」で質問に答えられるのは、大規模言語モデル(LLM:Large Language Model)が膨大なテキストから言語のパターンを学習しているからです。この大量データでの学習を「事前学習(Pre-training)」と呼び、特定タスク向けに追加調整する「ファインチューニング(Fine-tuning)」と対で覚えます。G検定では、LLMの性能がモデルサイズ・データ量・計算量に応じて向上する「スケール則(Scaling Laws)」や、少数の例示で対応する「In-Context Learning」「Few-shot学習」なども関連キーワードとして押さえておきましょう。

今回のまとめ

  • ChatGPTなどの文章生成AIは、Transformerを基盤としている
  • Transformer Explainerでは、Transformerの内部処理を視覚的に確認できる
  • 文章生成の基本は、次のトークンを予測することである
  • トークンは単語と必ずしも同じ単位ではない
  • Transformerの処理は、Embedding、Transformer Block、Output Probabilitiesに大別できる
  • Self-Attentionは、文章中のトークン同士の関係を調べる
  • 次のトークンは、計算された確率分布をもとに選択される
  • Temperatureを変更すると、生成結果の安定性や多様性が変化する

次回は、Transformer Explainerの「Embedding」を展開しながら、入力された文章がどのようにトークンへ分割され、768次元の数値ベクトルへ変換されるのかを解説します。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。