学習目標
この節では、LLMを理解する前提として「機械が学習するとは、そもそも何をしているのか」を理解します。
学習後には、次のことを説明できるようになることを目標とします。
- 機械学習と従来型プログラムの違い
- 「学習」と「推論」の違い
- 教師あり学習・教師なし学習・強化学習の基本的な違い
- 訓練データ・モデル・パラメータとは何か
- 過学習と汎化とは何か
- 機械学習とLLMがどのようにつながっているか
1. なぜ機械学習を理解する必要があるのか
前節では、AIが一つの技術ではなく、大きな研究分野の総称であることを学びました。
その中でも、現在のAIの中心となっているのが機械学習(Machine Learning)です。
ChatGPTのようなLLMも、その巨大で複雑な親戚です。
まず、普通のプログラムについて考えてみましょう。
たとえば「テストの点数が60点以上なら合格」と判定するプログラムなら、人間がルールを書けます。
入力:テストの点数
↓
60点以上か?
↙ ↘
YES NO
↓ ↓
合格 不合格
ところが、「写真に写っている動物が犬か猫か判断する」という問題になると事情が変わります。
人間なら簡単に判断できます。
しかし、コンピュータに与えるルールを考えてみてください。
耳が尖っていたら猫
では不十分です。耳の尖った犬もいます。
毛が長かったら猫
これもダメです。
顔が丸かったら猫
やはり例外があります。
犬と猫を区別するためのすべてのルールを、人間が事前に記述するのは非常に困難です。
そこで発想を変えます。
ルールを人間が書くのではなく、大量の例からコンピュータ自身に規則性を見つけさせればよいのではないか。
これが機械学習の基本的な考え方です。
2. 従来型プログラムと機械学習
この違いは非常に重要です。
従来型プログラム
従来型プログラムでは、人間がルールを作ります。
入力データ
+
人間が作ったルール
↓
プログラム
↓
答え
たとえば、
IF 点数 >= 60:
合格
ELSE:
不合格
のような処理です。
機械学習
機械学習では、考え方が逆になります。
大量の入力データ
+
正解など
↓
学習
↓
モデル
そして、完成したモデルに新しいデータを渡します。
新しいデータ
↓
モデル
↓
予測・分類など
つまり、
人間がルールを書く
から、
データからルールに相当するものを学習する
への転換です。
ただし、ここで注意が必要です。
モデル内部に、
耳が尖っている → 猫
という人間が読めるルールがそのまま保存されているわけではありません。
ニューラルネットワークでは、学習した規則性は大量のパラメータという数値として表現されます。
この違いは後ほど詳しく扱います。
3. 「学習する」とは何をしているのか
ここはAIを理解するうえで非常に重要です。
機械学習でいう「学習」は、人間の勉強とは意味が違います。
基本的には、
予測と正解のズレが小さくなるように、モデル内部のパラメータを調整すること
です。
犬と猫を分類するAIを考えてみましょう。
最初のモデルに猫の写真を見せます。
正解:猫
モデルの予測:
犬 80%
猫 20%
盛大に間違えています。
そこで、
猫の写真を入力
↓
モデルが予測
↓
犬:80%
猫:20%
↓
正解と比較する
予測 正解
犬:80% ←→ 犬:0%
猫:20% ←→ 猫:100%
↓
予測と正解のズレを
Loss(損失)として計算
↓
Lossが小さくなるように
パラメータを修正
このズレを数値として計算します。
そのズレを表すために使われるのが損失関数(Loss Function)です。
4. 損失(Loss)
損失とは簡単にいえば、
モデルの予測が、正解からどの程度ずれているか
を表す数値です。
イメージとしては、
予測が正解に近い
↓
Loss 小さい
予測が正解から遠い
↓
Loss 大きい
となります。
機械学習では、このLossをできるだけ小さくするようにモデルを調整します。
データ
↓
モデル
↓
予測
↓
正解と比較
↓
Lossを計算
↓
パラメータを少し修正
↓
もう一度予測
↓
……
これを大量のデータについて何度も繰り返します。
この繰り返しが訓練(Training)です。
5. パラメータとは何か
ここで、LLMを学ぶうえで非常に重要な言葉が登場します。
パラメータ(Parameter)です。
パラメータとは、
モデルが学習によって調整する内部の数値
です。
非常に単純化すると、
入力
↓
[ 0.21 ]
[-0.73 ] ← パラメータ
[ 1.42 ]
[ 0.08 ]
↓
予測
というイメージです。
ニューラルネットワークでは、入力された情報に対して大量の計算を行います。
その計算で使われる「重み」などの数値が学習によって少しずつ変更されます。
つまり、モデルが学習するとは、
大量のパラメータの値を調整すること
とも表現できます。
この考え方は後でLLMを理解するときに非常に重要になります。
LLMが学習した知識は、巨大なデータベースのように文章そのものが整然と格納されているわけではありません。
学習によって得られた規則性が、モデルのパラメータに分散して反映されていると考える方が正確です。
6. 学習と推論は違う
AIを利用するときに頻繁に混同されるのが、
- Training
- Inference
です。
日本語では、
- 学習・訓練
- 推論
と呼ばれます。
Training
Trainingでは、データを使ってモデルのパラメータを変更します。
大量のデータ
↓
Training
↓
パラメータを更新
↓
モデル
Inference
Inferenceでは、学習済みモデルを使って答えを生成します。
新しい入力
↓
学習済みモデル
↓
予測・生成
基本的には、通常の推論中にモデル本体のパラメータを毎回書き換えているわけではありません。
この違いは、LLMを使ううえで極めて重要です。
例えばChatGPTに、
私は高校教師です。
と伝えたとします。
その情報を利用して回答できたとしても、
会話した
↓
LLMそのものを再学習
↓
モデルのパラメータに
「このユーザーは高校教師」と保存
と単純に理解するのは誤りです。
通常の会話では、現在与えられているコンテキストなどを使って推論していると考える必要があります。
この違いは第2章「コンテキスト管理と知識表現」で詳しく扱います。
7. 機械学習の代表的な分類
機械学習にはさまざまな方法がありますが、入門では主に次の3つに分類されます。
機械学習
│
├── 教師あり学習
│
├── 教師なし学習
│
└── 強化学習
ただし、現代のAIでは自己教師あり学習(Self-Supervised Learning)も非常に重要です。
特にLLMを理解するためには欠かせません。
そこで本教材では、
- 教師あり学習
- 教師なし学習
- 自己教師あり学習
- 強化学習
の4つを整理します。
8. 教師あり学習
教師あり学習(Supervised Learning)とは、入力データと正解の組を使って学習する方法です。
例えば、
| 入力 | 正解 |
|---|---|
| 猫の写真 | 猫 |
| 犬の写真 | 犬 |
| 猫の写真 | 猫 |
| 犬の写真 | 犬 |
というデータを大量に与えます。
猫の写真 ──→「猫」
犬の写真 ──→「犬」
猫の写真 ──→「猫」
↓
学習
↓
犬・猫分類モデル
完成したモデルに未知の写真を入力します。
見たことのない写真
↓
モデル
↓
「猫:97%」
このように、正解付きデータから入力と出力の関係を学習するのが教師あり学習です。
9. 教師なし学習
教師なし学習(Unsupervised Learning)では、正解ラベルを与えません。
例えば、大量の顧客データを渡します。
顧客A
顧客B
顧客C
顧客D
顧客E
...
モデルはデータの特徴を調べ、
顧客データ
↓
分析
↙ ↓ ↘
グループA グループB グループC
のような構造を見つけます。
代表的な用途には、
- クラスタリング
- 次元削減
- データ構造の発見
などがあります。
教師あり学習が、
「正解を教えて規則性を学ばせる」
方法だとすれば、教師なし学習は、
「正解を与えず、データ内部の構造を見つけさせる」
方法だと考えるとよいでしょう。
10. 自己教師あり学習
ここからLLMにかなり近づきます。
自己教師あり学習(Self-Supervised Learning)とは、データそのものから学習に必要な正解を作る方法です。
文章を考えてみましょう。
私は昨日、学校へ行った。
例えば、
私は昨日、学校へ__。
とすれば、元の文章から
入力:
私は昨日、学校へ__。
正解:
行った
という問題を自動的に作れます。
人間が一つひとつ、
この問題の答えは「行った」です。
とラベルを付ける必要がありません。
大量の文章そのものを学習データとして利用できます。
11. GPTと自己教師あり学習
GPT系の言語モデルでは、基本的な学習目標として次のトークンを予測する方法が使われます。
例えば、
日本の首都は
というトークン列があれば、
日本 → の → 首都 → は → ?
次に来るトークンを予測します。
モデルが、
東京 0.82
大阪 0.05
京都 0.03
...
のような確率分布を出したと考えます。
学習データ上の実際の次のトークンが「東京」であれば、
モデルの予測
↓
東京の確率 0.82
↕ 比較
実際の文章
↓
「東京」
となります。
予測が外れていればパラメータを調整します。
これを膨大なテキストについて繰り返します。
12. 「次の単語予測だけで、なぜ賢くなるのか?」
ここはLLMを学ぶうえで最も面白い部分の一つです。
一見すると、
次の単語を当てるだけなら、大したことはできないのでは?
と思えます。
ところが、次の文章を予測してみてください。
水は0℃付近になると__。
適切に予測するには、水の性質についてある程度の情報が必要です。
さらに、
太郎は花子より背が高い。
花子は健太より背が高い。
3人の中で最も背が高いのは__。
を正しく補完するには、単なる単語の共起だけではなく、文章中の関係を処理する必要があります。
プログラムなら、
def add(a, b):
return
の続きを予測するには、プログラミングの規則性を学ぶ必要があります。
つまり、さまざまな文章の続きを高い精度で予測しようとすると、その過程で、
- 文法
- 単語の意味
- 概念同士の関係
- 世界についての規則性
- 文章構造
- コードのパターン
などをモデル内部に表現することが有利になります。
だからこそ、単純に見える「次のトークン予測」から、非常に幅広い能力が生まれます。
ただし、ここから、
LLMは人間と同じ方法で世界を理解している
と結論づけることはできません。
高性能な予測に必要な内部表現を獲得することと、人間と同じ意味で理解していることは別問題です。
ここは混ぜないようにしましょう。AIの話は油断すると、すぐ哲学と工学が同じ鍋で煮込まれます。
13. 強化学習
強化学習(Reinforcement Learning)は、正解そのものではなく、行動の結果として得られる報酬(Reward)を手がかりに学習する方法です。
ゲームをするAIを考えてみます。
現在の状態
↓
AIが行動する
↓
環境が変化
↓
報酬を受け取る
↓
次の行動
例えば、
ゲームに勝つ → +10
敵に倒される → -5
ゴールする → +100
などです。
AIは長期的に得られる報酬を大きくする行動を学習していきます。
教師あり学習との違いは、「この場面では右へ動くのが正解」とすべての行動について教師が答えを与える必要がないことです。
14. LLMと強化学習
強化学習はLLMの事後学習(post-training)でも利用されてきました。
有名なのがRLHF(Reinforcement Learning from Human Feedback)です。
概念的には、
事前学習済みLLM
↓
複数の回答を生成
↓
人間が回答を評価
↓
人間の好みを学習
↓
モデルの振る舞いを調整
という流れです。
ここで重要なのは、
文章を生成できるようになる学習
と、
人間にとって望ましい回答をするよう調整する学習
を分けて考えることです。
現代のLLM開発では、事前学習後に教師ありファインチューニング、選好学習、強化学習など複数の手法が組み合わされます。モデルによって具体的な方法は異なります。
15. 4種類を比較する
ここまでを整理しましょう。
| 学習方法 | 学習の手がかり | 例 | LLMとの関係 |
|---|---|---|---|
| 教師あり学習 | 入力+正解 | 写真→「猫」 | ファインチューニングなど |
| 教師なし学習 | データそのもの | 顧客のグループ化 | 表現学習などと関係 |
| 自己教師あり学習 | データから作った正解 | 次のトークン予測 | LLMの事前学習で極めて重要 |
| 強化学習 | 報酬 | ゲーム攻略 | RLHFなどで利用 |
LLMを理解するうえでは、特に
自己教師あり学習 → 事前学習 → 事後学習
という流れが重要です。
16. 「学習」と「暗記」は同じではない
もう一つ重要な概念があります。
汎化(Generalization)です。
例えば、学習データとして次の犬を見せたとします。
柴犬
プードル
ゴールデンレトリバー
その後、初めて見る犬の写真を見せても、
犬
と判定できる必要があります。
学習データを丸暗記しただけなら、未知のデータには対応できません。
学習データ
↓
規則性を学ぶ
↓
未知のデータ
↓
正しく予測
このように、学習した規則性を未知のデータにも適用できる能力を汎化と呼びます。
機械学習では非常に重要な概念です。
17. 過学習
逆に、学習データに適応しすぎることを過学習(Overfitting)と呼びます。
例えば、生徒が数学の問題集100問について、
問題1 → 42
問題2 → 18
問題3 → 35
と答えだけ丸暗記したとします。
同じ問題なら満点です。
しかし数字を少し変えると解けません。
これは、
学習問題
★★★★★
非常によく解ける
未知の問題
★☆☆☆☆
解けない
という状態です。
機械学習でも同様に、
訓練データでは高性能
↓
未知データでは低性能
になることがあります。
AIにとって本当に重要なのは、訓練データに対する成績だけではなく、未知のデータに対してどれだけ汎化できるかです。
18. Training・Validation・Test
そこで機械学習では、データを役割ごとに分けます。
典型的には、
全データ
│
├── Training Data
│ ↓
│ モデルを学習
│
├── Validation Data
│ ↓
│ モデルや設定を調整
│
└── Test Data
↓
最終評価
とします。
Training Data
モデルのパラメータを学習するためのデータです。
Validation Data
学習方法やモデルの設定などを調整するときに使用します。
Test Data
最後に、未知データに対してどの程度性能を発揮できるか評価します。
テストデータを何度も見ながらモデルを改善すると、それはもはや純粋な「未知の試験」ではなくなります。
学校でいえば、先生が本番のテスト問題を事前に見せながら、
「本番で100点取れました」
と言っているようなものです。人類は評価指標を作ると、かなりの確率で攻略し始めます。
この問題は、第6章Harness Engineeringで非常に重要になります。
19. 機械学習からLLMまでを一本につなぐ
ここまでの内容を、LLMにつなげてみましょう。
人工知能
│
↓
機械学習
│
↓
ニューラルネットワーク
│
↓
深層学習
│
↓
Transformer
│
↓
大量のテキストによる
自己教師あり学習
│
↓
次のトークン予測
│
↓
パラメータに
言語・知識・規則性が反映される
│
↓
事後学習
│
↓
LLM
ここまで来ると、LLMについて非常に重要な見方ができます。
LLMとは単なる、
大量の文章を保存したデータベース
ではありません。
より適切には、
大量のデータから言語や概念の規則性を学習し、その規則性を大量のパラメータとして保持するニューラルネットワーク
です。
そして入力を受け取ると、そのパラメータと現在の入力情報を使って推論(Inference)を行います。
20. AI活用との関係
ここまでの知識は、実際にLLMを利用するときにも重要です。
特に次の4つを区別できるようになります。
① モデルが学習したもの
≠
② 現在の会話で与えた情報
≠
③ 外部から検索した情報
≠
④ モデルが生成した回答
例えば、LLMがある会社の最新決算を知らなかったとします。
そこで、
「ちゃんと覚えておいて」
と指示しても、モデルの事前学習がその場でやり直されるわけではありません。
必要なのは状況によって、
- コンテキストに情報を渡す
- 検索する
- RAGを使う
- ツールを使う
- 必要ならモデルを追加学習する
といった別の方法です。
つまり、
「AIに情報を与える」ことと「AIを学習させる」ことは同じではありません。
この区別ができると、AIシステムをかなり正確に考えられるようになります。
関連する重要研究
A Few Useful Things to Know about Machine Learning
- 著者:Pedro Domingos
- 公開年:2012
機械学習を実際に扱う際に重要となる基本原則を整理した論文です。特に、学習データだけでなく汎化性能を見る必要性や、データ・特徴量・モデル評価の重要性を理解するうえで有用です。
ImageNet Classification with Deep Convolutional Neural Networks
- 著者:Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton
- 公開年:2012
いわゆるAlexNetの論文です。大規模データとGPUを利用した深層ニューラルネットワークが画像認識で非常に高い性能を示し、その後の深層学習ブームを加速させました。
Language Models are Unsupervised Multitask Learners
- 著者:Alec Radfordほか
- 公開年:2019
GPT-2を報告した研究です。大規模なテキストで次トークン予測を学習するだけでも、要約・質問応答などさまざまな能力が現れることを示し、その後の大規模言語モデル研究につながりました。
Training Language Models to Follow Instructions with Human Feedback
- 著者:Long Ouyangほか
- 公開年:2022
InstructGPTの研究です。人間のフィードバックを利用したRLHFによって、単に文章を続けるモデルから、人間の指示により適切に応答するモデルへ調整できることを示しました。
よくある誤解
誤解1「機械学習=AI」
機械学習はAIを実現する方法の一つです。
AI
└── Machine Learning
という関係です。
誤解2「AIに情報を教えれば、その場で学習する」
通常のLLMとの会話とモデルのTrainingは別です。
会話中に情報を利用できることと、モデル本体のパラメータが更新されたことを混同してはいけません。
誤解3「LLMはインターネットを丸暗記している」
学習データの一部を記憶・再現してしまう現象は実際にあります。
しかし、LLM全体を「巨大な文章データベース」と理解するのは不正確です。
モデルの能力の中心には、大量のパラメータを通じて獲得した統計的な規則性があります。
誤解4「次トークン予測だから、単なるオートコンプリートである」
学習目標として次トークン予測を使っていることは事実ですが、それだけを理由にモデルの内部能力まで「単純な予測」とみなすことはできません。
高度な次トークン予測を実現する過程で、モデルは文法・意味・概念間の関係などを表現する内部構造を獲得します。
用語集
| 用語 | 意味 |
|---|---|
| 機械学習 | データから規則性を学習し、予測や分類などを行う技術 |
| Training | データを使ってモデルのパラメータを調整する処理 |
| Inference | 学習済みモデルを使って、新しい入力に対する予測や生成を行う処理 |
| Parameter | 学習によって調整されるモデル内部の数値 |
| Loss | モデルの予測と正解のずれを表す指標 |
| 教師あり学習 | 正解付きデータを利用する学習方法 |
| 教師なし学習 | 正解ラベルなしでデータの構造や規則性を学習する方法 |
| 自己教師あり学習 | データそのものから学習用の正解を作る方法 |
| 強化学習 | 報酬を手がかりとして行動方針を学習する方法 |
| 汎化 | 学習していないデータにも学習した規則性を適用する能力 |
| 過学習 | 学習データに適応しすぎて未知データへの性能が低下する現象 |
| RLHF | 人間のフィードバックを利用してモデルの振る舞いを調整する方法 |
理解度チェック
問1
従来型プログラムと機械学習の違いを、「ルール」という言葉を使って説明してください。
問2
機械学習における「学習」とは、モデル内部で何を変化させることでしょうか。
問3
TrainingとInferenceの違いを説明してください。
問4
教師あり学習と自己教師あり学習では、「正解」をどのように用意するかにどのような違いがありますか。
問5
LLMにおける「次のトークン予測」が、単なる文章の暗記だけでは成立しない理由を説明してください。
問6
「ChatGPTに自分の情報を伝えたので、LLMが再学習された」という説明が不正確な理由を説明してください。
この節のまとめ
この節で最も重要なのは、次の流れです。
データ
↓
モデルが予測
↓
正解と比較
↓
Lossを計算
↓
パラメータを更新
↓
予測が改善
そして、LLMでは大量のテキストを利用して、
これまでのトークン
↓
次のトークンを予測
↓
実際のトークンと比較
↓
パラメータを更新
↓
繰り返す
という学習を大規模に行います。
ここから、
LLMはなぜ文章から学習できるのか
という疑問に対する最初の答えが得られました。
次節へのつながり
しかし、まだ大きなブラックボックスが残っています。
これまで何度も、
「モデル内部のパラメータを調整する」
と説明しました。
では、そのモデルとは一体どんな構造なのか。
そして、
文章というデータを、どうやって数値計算しかできないコンピュータで処理するのか。
この問題を理解するために必要なのがニューラルネットワークです。
次の 1-3「ニューラルネットワーク」では、
ニューロン → 重み → 活性化関数 → 層 → 誤差逆伝播
という流れを、高校数学で追える範囲から組み立てます。
ここが分かると、「学習とはパラメータを変えること」という今回の説明が、単なる言葉ではなくモデル内部で実際に何が起きているのかとして見えるようになります。