ストーリー
中島先輩がホワイトボードにペンを走らせる。
LLM(Large Language Model)とは
基本的な考え方
LLM = 大規模言語モデル は、「次に来る可能性が最も高い単語(トークン)を予測する」仕組みです。
graph TD
A["入力: 「今日の天気は」"] --> B["LLMの内部処理<br/>次に来る確率の高い単語を計算"]
B --> C["候補:<br/>「晴れ」35% / 「曇り」25%<br/>「雨」20% / 「良い」15% / その他 5%"]
C --> D["出力: 「晴れ」<br/>(最も確率が高いものを選択)"]
classDef process fill:#cce5ff,stroke:#004085,color:#000
classDef result fill:#d4edda,stroke:#28a745,color:#000
class B,C process
class D result
この「次のトークンを予測する」処理を繰り返すことで、文章全体が生成されます。
トークンとは
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は以下のステップで作られます:
graph TD
S1["Step 1: 事前学習<br/>(Pre-training)<br/>大量テキストを学習<br/>次の単語予測を何兆回も繰り返す<br/>汎用的な知識を獲得"]
S2["Step 2: ファインチューニング<br/>(Fine-tuning)<br/>特定タスクに適したデータで追加学習<br/>例: コード生成、対話、翻訳"]
S3["Step 3: RLHF<br/>(人間のフィードバックによる強化学習)<br/>人間が良い/悪い回答を評価<br/>人間の好みに合った回答を生成"]
S1 --> S2 --> S3
classDef step1 fill:#cce5ff,stroke:#004085,color:#000
classDef step2 fill:#fff3cd,stroke:#856404,color:#000
classDef step3 fill:#d4edda,stroke:#28a745,color:#000
class S1 step1
class S2 step2
class S3 step3
パラメータとモデルサイズ
パラメータとは
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分