LLMの仕組みとは?Transformer・トークン・推論の基礎をわかりやすく解説

ChatGPTはどうやって文章を生成しているのか?その答えはLLMの3つの柱——Transformer、トークン、確率的な推論——にあります。仕組みをゼロから丁寧に解説します。

LLMの仕組みとは?大規模言語モデルを支えるTransformerの技術

AI初心者

AIを知りたい

先生、ChatGPTみたいな大規模言語モデル(LLM)って、どうやって文章を作っているんですか?本当に「理解」しているんですか?

AIエンジニア

AIエンジニア

いい質問だね。実は、LLMは文章を「理解」しているわけではなく、「次に来る可能性が最も高い単語を予測し続ける」ことで文章を生成しているんだ。膨大なテキストデータから言葉の並び方のパターンを学習して、それに基づいて一語ずつ生成しているんだよ。

AI初心者

AIを知りたい

単語の予測だけで、あんなに自然な文章が作れるなんて不思議ですね。どんな技術が使われているんですか?

AIエンジニア

AIエンジニア

核となる技術は「Transformer(トランスフォーマー)」というアーキテクチャだよ。特に「自己注意機構(Self-Attention)」という仕組みが画期的で、文章中のすべての単語間の関係性を同時に捉えることができるんだ。この技術のおかげで、長い文脈を理解した上で自然な文章を生成できるようになったんだよ。

LLM(大規模言語モデル)の仕組みとは。

人工知能に関わる言葉である「LLM(大規模言語モデル)」について説明します。数十億〜数兆のパラメータを持つニューラルネットワークで、Transformerアーキテクチャに基づいて構築されています。大量のテキストデータから言語のパターンを学習し、「次の単語の予測」を通じて高品質なテキストを生成します。

大規模言語モデル(LLM)とは

大規模言語モデル(LLM: Large Language Model)とは、数十億から数兆個のパラメータを持つニューラルネットワークで、大量のテキストデータから言語のパターンを学習したAIモデルです。GPT-4、Claude、Gemini、Llamaなどがこれに該当します。

LLMの基本的な動作原理は非常にシンプルです。与えられたテキスト(プロンプト)に対して、次に来る可能性が最も高いトークン(単語や文字の断片)を予測し、それを繰り返すことで文章を生成します。この「次のトークン予測」を膨大なスケールで行うことで、一見すると「理解」しているかのような振る舞いが実現されています。

LLMの性能は、主にモデルのパラメータ数、学習データの量と質、学習に使用した計算量(FLOPS)の3つの要素で決まります。これはScaling Law(スケーリング則)と呼ばれ、これらの要素を増やすほどモデルの性能が向上することが経験的に知られています。GPT-3は1750億パラメータでしたが、GPT-4は推定1.7兆パラメータと言われており、この規模の拡大が性能向上の大きな要因です。

Transformerアーキテクチャ

Transformerは、2017年にGoogleの研究チームが論文「Attention Is All You Need」で発表したニューラルネットワークのアーキテクチャです。現在のほぼすべてのLLMがこのTransformerをベースに構築されています。

Transformerの革新的な点は、自己注意機構(Self-Attention)にあります。従来のRNN(再帰型ニューラルネットワーク)は、テキストを先頭から順番に一語ずつ処理していたため、長い文章では前半の情報が薄れてしまう問題がありました。一方、Self-Attentionでは、文章中のすべての単語が他のすべての単語との関連度を同時に計算します。これにより、文章のどの部分が他のどの部分と関連しているかを効率的に把握できます。

例えば、「田中さんは東京で生まれたが、現在は大阪に住んでいる。彼の出身地は」という文章で、「彼」が「田中さん」を指し、「出身地」が「東京」に関連することを、Self-Attentionメカニズムによって正確に捉えることができます。

Transformerは、エンコーダとデコーダの2つの部分から構成されます。GPTシリーズはデコーダのみを使用する「Decoder-only」アーキテクチャ、BERTはエンコーダのみを使用する「Encoder-only」アーキテクチャを採用しています。現在主流のLLM(GPT、Claude、Llama等)はほとんどがDecoder-onlyです。

アーキテクチャ 構造 代表的モデル 得意タスク
Encoder-only 入力の理解に特化 BERT, RoBERTa 文分類, 固有表現認識
Decoder-only テキスト生成に特化 GPT, Claude, Llama 文章生成, 対話, コード
Encoder-Decoder 入力理解と出力生成 T5, BART 翻訳, 要約

学習プロセス

LLMの学習は、大きく3つの段階に分かれます。

第一段階は事前学習(Pre-training)です。インターネット上の膨大なテキストデータ(Web、書籍、論文、コードなど)を使い、「次のトークンを予測する」タスクでモデルを訓練します。この段階で、文法、世界知識、推論能力、プログラミング能力などの基礎的な能力が獲得されます。GPT-4の場合、数兆トークンのデータで学習されたと推測されており、学習に数千台のGPUで数ヶ月を要したと言われています。

第二段階は教師あり微調整(SFT: Supervised Fine-Tuning)です。人間が作成した高品質な質問・回答のペアでモデルを追加学習させます。これにより、モデルは「質問に対して適切に回答する」という振る舞いを学びます。事前学習だけでは、モデルは単にテキストを補完するだけですが、SFTによって対話的な能力が付与されます。

第三段階はRLHF(人間のフィードバックによる強化学習)です。モデルの複数の回答に対して人間が評価(ランキング)を行い、その評価に基づいて報酬モデルを訓練します。次に、この報酬モデルを使ってLLM自体を強化学習で最適化します。これにより、人間にとって有用で安全な回答を生成する能力が大幅に向上します。

トークン化と埋め込み

LLMがテキストを処理する際、まずトークン化(Tokenization)というステップが行われます。テキストを「トークン」と呼ばれる小さな単位に分割する処理です。

英語の場合、大まかに1トークン≒0.75単語です。日本語は1文字が1〜2トークンに対応することが多く、英語と比べてトークン効率が低くなります。「人工知能」という4文字が3〜4トークンに分割されることがあります。

トークン化されたテキストは、次に埋め込み(Embedding)によってベクトル(数値の列)に変換されます。各トークンは数千次元のベクトルとして表現され、意味的に近い単語は近いベクトルに、異なる意味の単語は遠いベクトルにマッピングされます。Transformerはこのベクトル表現を操作して推論を行います。

コンテキストウィンドウの制限も、このトークン化に関係しています。GPT-4oの128Kトークン、Claudeの200Kトークンという制限は、一度に処理できるテキストの最大量を表しています。この制限を超える入力は処理できないため、長文を扱う際にはチャンク分割やRAGなどの工夫が必要です。

推論と生成の仕組み

学習済みのLLMがテキストを生成する際は、自己回帰的(Autoregressive)に一つずつトークンを生成します。まず入力プロンプトを処理し、次のトークンの確率分布を計算します。その確率分布からトークンをサンプリングして出力し、出力したトークンを含めて再度次のトークンの確率分布を計算する、ということを繰り返します。

生成の際にはTemperature(温度)というパラメータで、出力のランダム性を制御します。Temperatureが低い(0に近い)と、最も確率の高いトークンが選ばれるため、決定的で一貫した出力になります。Temperatureが高いと、確率の低いトークンも選ばれやすくなり、創造的で多様な出力が生成されます。

また、Top-p(核サンプリング)やTop-kといったサンプリング手法も使われます。Top-pは、累積確率がp(例えば0.9)に達するまでの上位トークンのみを候補として考慮する方法で、極端に不自然なトークンの生成を防ぎつつ、適度な多様性を維持します。

まとめ

LLMは、Transformerアーキテクチャに基づく大規模なニューラルネットワークで、「次のトークンを予測する」という単純な原理で動作しています。Self-Attention機構により長い文脈を理解し、事前学習→SFT→RLHFの3段階の学習プロセスによって、人間にとって有用で安全な対話能力を獲得します。

現在のLLMは驚くべき能力を持っていますが、本質的にはパターンマッチングであり、真の「理解」ではないことを認識しておくことが重要です。ハルシネーション(事実でない情報の生成)や数学的推論の限界は、この原理的な制約に起因しています。

項目 説明
基本原理 次のトークンの確率的予測の繰り返し
核心技術 Transformer(Self-Attention機構)
学習プロセス 事前学習→SFT→RLHF
テキスト処理 トークン化→埋め込み→Transformer→確率分布→サンプリング
制御パラメータ Temperature, Top-p, Top-k

関連記事

NumPyで理解するTransformerの構成要素

LLMの中核であるTransformerの各ブロック(Embedding、Self-Attention、FFN、Softmax)を、NumPyだけで簡易的に実装して処理の流れを確認します。


import numpy as np

np.random.seed(42)
vocab_size, d_model, seq_len = 100, 16, 5

# 1. Embedding: 単語IDをベクトルに変換
embedding_matrix = np.random.randn(vocab_size, d_model) * 0.1
input_ids = np.array([12, 45, 7, 88, 3])  # 5トークンの入力
X = embedding_matrix[input_ids]  # (5, 16)
print("Embedding出力:", X.shape)

# 2. Self-Attention: Q, K, Vで文脈を反映
W_q = np.random.randn(d_model, d_model) * 0.1
W_k = np.random.randn(d_model, d_model) * 0.1
W_v = np.random.randn(d_model, d_model) * 0.1

Q, K, V = X @ W_q, X @ W_k, X @ W_v
scores = Q @ K.T / np.sqrt(d_model)  # スケーリング
attn_weights = np.exp(scores) / np.exp(scores).sum(axis=-1, keepdims=True)  # softmax
attn_output = attn_weights @ V  # (5, 16)
print("Attention出力:", attn_output.shape)
print("Attention重み(1行目):", np.round(attn_weights[0], 3))

# 3. Feed-Forward Network: 非線形変換
W1 = np.random.randn(d_model, d_model * 4) * 0.1
W2 = np.random.randn(d_model * 4, d_model) * 0.1
ffn_output = np.maximum(0, attn_output @ W1) @ W2  # ReLU + 線形変換
print("FFN出力:", ffn_output.shape)

# 4. 出力層: 語彙サイズへの射影 + Softmax
logits = ffn_output @ embedding_matrix.T  # (5, vocab_size)
probs = np.exp(logits) / np.exp(logits).sum(axis=-1, keepdims=True)
next_token = np.argmax(probs[-1])
print(f"次トークン予測: ID={next_token}, 確率={probs[-1, next_token]:.4f}")

実際のLLMではマルチヘッドAttention・Layer Normalization・残差接続が追加され、このブロックが数十〜百層以上積み重ねられます。上のコードでAttention重みを見ると、各トークンが他のどのトークンに注目しているかが数値で確認でき、Transformerが文脈を理解する仕組みの直感的な理解に役立ちます。