Transformer Decoder Emulator

大規模言語モデル (LLM) の内部動作を
「学習」から「推論」まで、ステップごとに可視化するツール

🔍 このプログラムは何?

AI チャットに質問すると、まるで「考えて」答えているように見えます。

しかし実際には、内部で数値の行列計算を何層も繰り返しているだけです。

このプログラムでは、小さな Transformer モデルを 実際に学習させ、 その後の推論(予測)の全過程を1ステップずつ可視化します。

「AIが学ぶとはどういうことか」「質問に答えるとき内部で何が起きているか」を体感できます。

💬 なぜ Decoder だけ?

Transformer には Encoder(入力を理解する)と Decoder(テキストを生成する)の2種類がありますが、 現在の主要な生成AI の多くは Decoder のみの構造を採用しています。

Decoder の特徴は Causal Mask(因果マスク)です。 「未来の単語を見ずに次の単語を予測する」という制約があるからこそ、 1単語ずつテキストを生成できます。 このツールでは、最も実用的かつ理解すべきこの Decoder 構造に焦点を当てています。

📝 今回のシナリオ

テーマ: 動物に関する質問と回答

学習データ(入力)正解
「人気のペットは」
「かわいい動物は」
「化ける動物は」
「気まぐれな動物は」
…他 12 件

登場する答え: 犬・狐・狸・猫

推論で試す質問: 「人気のペットは」 / 「山で見かける動物は」 / 「化ける動物は」 / 「忠実な動物は」 / 「かわいい動物は」 / 「昔話に出る動物は」

モデル: 4レイヤー / d_model=16 / 2ヘッド / パラメータ数 13,728 個
(教育用に極小サイズ。実際の LLM は数千万〜数千億個のパラメータを持つ)

🎯 このツールで体験できること

AIモデルが動くまでには、大きく2つのフェーズがあります。

フェーズ1: 学習(Training)

ランダムな重みから始めて、16件の学習データを300回繰り返し学習。

  1. モデルに質問を入力し、答えを予測させる(最初はデタラメ)
  2. 予測と正解のズレ(損失関数)を計算する
  3. ズレが小さくなるよう重みを少しずつ調整する(勾配降下法
  4. これを何百回も繰り返す → 予測精度が上がる

損失関数の値が下がっていく様子を確認できます。

フェーズ2: 推論(Inference)

学習済みモデルに質問を入力し、答えを予測させる。この内部処理を全ステップ可視化。

  1. 質問文を単語(トークン)に分割し、数値(ベクトル)に変換する
  2. 各単語が「他のどの単語に注目するか」を計算する(Self-Attention
  3. 各単語の表現をさらに変換する(FFN
  4. 2〜3 を4回繰り返す(= 4層のレイヤー)
  5. 最後に、語彙の中から「次に来る単語」の確率を出力する(次トークン予測

→ 各質問ごとに、Embedding → Attention → FFN → 予測 の全過程を確認できます。

📌 ポイント: このエミュレータは実際に16件のデータで学習を行っています。 答えを事前に仕込んでいるのではなく、モデルが学習データから「文脈と答えの関係」を学び取った結果です。 ただし、実際の LLM は数兆語のデータで学習しており、このミニチュアモデルとは規模が全く異なります。