LLMの仕組みを理解しよう
ストーリー
「生成AIの概要はわかった? じゃあ次は、中身の話をしよう」
中島先輩がホワイトボードにペンを走らせる。
「AIに"こういうコード書いて"って頼むと、なぜか結構まともな答えが返ってくる。でもたまにとんでもない嘘をつく。なんでだと思う?」
「えっと... AIが賢いから? でも嘘をつくのは... バグ?」
「ハハ、そうじゃない。LLMの仕組みを知れば、なぜ正しい答えを出せるのか、なぜ間違えるのかが理解できる。道具の仕組みを知ってるかどうかで、使い方が全然変わるからね」
LLM(Large Language Model)とは
基本的な考え方
LLM = 大規模言語モデル は、「次に来る可能性が最も高い単語(トークン)を予測する」仕組みです。
入力: 「今日の天気は」
↓
LLMの内部処理: 次に来る確 率の高い単語を計算
↓
候補:
「晴れ」 → 35%
「曇り」 → 25%
「雨」 → 20%
「良い」 → 15%
その他 → 5%
↓
出力: 「晴れ」(最も確率が高いものを選択)
この「次のトークンを予測する」処理を繰り返すことで、文章全体が生成されます。
トークンとは
LLMが処理する最小単位を「トークン」と呼びます。
英語の場合:
"Hello, world!" → ["Hello", ",", " world", "!"] (4トークン)
日本語の場合:
"こんにちは世界" → ["こん", "にち", "は", "世界"] (4トークン)
コードの場合:
"console.log('hi')" → ["console", ".", "log", "('", "hi", "')"] (6トークン)
トークン数は、AIサービスの利用料金やコンテキストウィンドウ(一度に処理できる量)に直結する重要な概念です。
| モデル | コンテキストウィンドウ | 目安 |
|---|---|---|
| GPT-4o | 128Kトークン | 約300ページの書籍相当 |
| Claude 3.5 Sonnet | 200Kトークン | 約500ページの書籍相当 |
| GPT-4o mini | 128Kトークン | 約300ページの書籍相当 |
Transformerアーキテクチャ
革命を起こした仕組み
2017年に発表された「Attention Is All You Need」という論文が、現在のLLMの基盤です。
Transformerの核心: Attention(注意)メカニズム
入力: 「プログラマーが書いたコードを実行した」
Attentionが学ぶこと:
「実行した」の主語は? → 「プログラマー」に高い注意
「実行した」の目的語は? → 「コード」に高い注意
「書いた」のは誰? → 「プログラマー」に高い注意
要するに、文中の各単語が他のどの単語と関連しているかを自動的に学習する仕組みです。
学習の流れ
LLMは以下のステップで作られます:
Step 1: 事前学習(Pre-training)
- インターネット上の大量のテキストを学習
- 「次の単語を予測する」タスクを何兆回も繰り返す
- この段階では汎用的な知識を獲得
Step 2: ファインチューニング(Fine-tuning)
- 特定のタスクに適したデータで追加学習
- 例: コード生成、対話、翻訳
Step 3: RLHF(人間のフィードバックによる強化学習)
- 人間が「良い回答」と「悪い回答」を評価
- 人間の好みに合った回答を生成するよう調整
- ChatGPTやClaudeが「人間らしい」回答をする理由
パラメータとモデルサイズ
パラメータとは
LLMの「パラメータ」は、学習によって調整される数値(重み)の数です。人間の脳の「シナプスの強さ」に例えられます。
| モデル | パラメータ数 | 特徴 |
|---|---|---|
| GPT-2 | 15億 | 初期の大規 模モデル |
| GPT-3 | 1750億 | 大規模化の転換点 |
| GPT-4 | 非公開(推定1兆以上) | マルチモーダル対応 |
| Claude 3.5 Sonnet | 非公開 | 高いコード生成能力 |
| Llama 3 (70B) | 700億 | オープンソース |
パラメータが多いほど多くの知識を保持できますが、計算コストも増加します。
温度(Temperature)パラメータ
出力のランダム性を制御する
多くのAIサービスでは「Temperature」というパラメータを設定できます。
Temperature = 0(低い)
→ 最も確率の高い単語を常に選択
→ 同じ質問には同じ回答
→ 正確性重視のタスクに向く
Temperature = 0.7(中程度)
→ ある程度のランダム性を持たせる
→ 自然な文章生成に向く
Temperature = 1.0以上(高い)
→ ランダム性が高い
→ 創造的なタスクに向く
→ ただし、意味不明な出力になるリスクも
エンジニアとしての使い分け:
| タスク | 推奨Temperature | 理由 |
|---|---|---|
| コード生成 | 0 〜 0.3 | 正確性が最重要 |
| テストケース生成 | 0.3 〜 0.5 | 多様なケースが欲しい |
| アイデア出し | 0.7 〜 1.0 | 創造性を重視 |
| ドキュメント作成 | 0.3 〜 0.5 | 自然さと正確さのバランス |
なぜAIは「嘘」をつくのか(ハルシネーション)
ハルシネーションの仕組み
LLMが事実と異なる情報を自信たっぷりに出力することを「ハルシネーション(幻覚)」と呼びます。
なぜ起こるのか:
LLMは「もっともらしい次の単語」を生成しているだけ
→ 事実を"理解"しているのではなく、パターンを再現している
→ 学習データにない情報は「それっぽく」作ってしまう
例:
質問: 「JavaScriptのsortByメソッドについて教えてください」
AI回答: 「Array.prototype.sortByは、指定したキーで配列を
ソートする便利なメソッドです。使い方は...」
事実: JavaScriptにsortByというメソッドは存在しない。
AIは「ありそうな」メソッドとして説明を生成してしまった。
ハルシネーションが起きやすいケース
| ケース | 例 | 対策 |
|---|---|---|
| 存在しないAPIの説明 | 架空のメソッド名を生成 | 公式ドキュメントで確認 |
| 古い情報 | 廃止されたライブラリを推奨 | バージョンを確認 |
| 数値・統計 | 正確でない数値を提示 | 一次ソースを確認 |
| URL | 存在しないURLを生成 | リンク先を必ず確認 |
エンジニアとしての心得
AIの出力に対する鉄則:
1. 「信頼するが、検証する」(Trust but verify)
2. コードは必ず動かして確認する
3. APIやライブラリは公式ドキュメントと照合する
4. AIの回答が「正しそう」というだけで採用しない
まとめ
| ポイント | 内容 |
|---|---|
| LLMの原理 | 「次のトークンを予測する」を繰り返して文章を生成 |
| Transformer | Attentionメカニズムで文脈を理解 |
| 学習プロセス | 事前学習 → ファインチューニング → RLHF |
| Temperature | 出力のランダム性を制御するパラメータ |
| ハルシネーション | もっともらしい嘘。必ず検証が必要 |
チェックリスト
- LLMが「次のトークン予測」で動いていることを理解した
- トークンの概念とコンテキストウィンドウを理解した
- Temperatureの役割と使い分けを理解した
- ハルシネーションの原因と対策を理解した
次のステップへ
LLMの仕組みがわかったところで、次は主要なAIサービス(ChatGPT、Claude、Copilotなど)を比較します。
それぞれの特徴と得意分野を理解して、場面に応じた使い分けができるようになりましょう。
推定読了時間: 25分