ひとことで言うと
学習パラダイムの分類は、**「学習時に何が与えられ、目的関数が何を参照するか」**で決まります。教師あり学習は入力 と正解 の組を使い を予測する誤差を最小化し、教師なし学習は だけを使い を一切参照せずデータの構造そのものを目的関数にし、強化学習はどちらでもなく、エージェント自身の行動が生んだ遅延報酬を最大化します。
模試の採点に例えると、教師あり学習は模範解答付きの過去問を解いて答え合わせをする勉強法、教師なし学習は模範解答なしの問題集を眺めて出題傾向やパターンだけを見つける勉強法です。強化学習はさらに違い、模範解答も出題傾向表も渡されず、自分で問題を解いて出た点数(しかも合否は数週間後にしかわからない)だけを手がかりに戦略を作る勉強法にあたります。
なぜ必要か
3分類が要るのは、問題設定が違えば、使える手法・評価指標・データ収集コストが根本から変わるからです。教師あり学習が使えるのはラベル付きデータが手に入るときだけで、ラベル付けのコストは分類対象が増えるほど跳ね上がります。教師なし学習はラベルが要らない代わりに「正解」という評価軸を失い、良し悪しの判定が難しくなります。強化学習はラベルもデータセットも事前に存在せず、エージェントが動くたびにデータが生成されます。
| 分類 | 学習時に与えられるもの | 目的関数が参照するもの |
|---|---|---|
| 教師あり学習 | 入力 と正解 の組 | (予測と正解の誤差) |
| 教師なし学習 | 入力 のみ | の分布・構造のみ( は存在しない) |
| 強化学習 | 状態 、行動の結果としての報酬 | エージェント自身が生成した軌跡の累積報酬 |
仕組み
教師あり学習は、入力 から出力 への写像 を、期待損失
を最小化して求めます。 の値域が連続(家賃・気温など)なら回帰で は二乗誤差が定番、 が有限のカテゴリ(スパム/非スパムなど)なら分類で は交差エントロピーになります。回帰と分類の違いは手法ではなく出力空間と損失関数の選び方にすぎません。
教師なし学習には が存在せず、目的関数は の分布 そのものに対する量です。クラスタリングなら「同じ塊に属する点同士の距離を小さくする」、密度推定なら「 の尤度を上げる」、次元圧縮・表現学習なら「 を低次元に落として復元できる情報量を保つ」が目的関数になります。scikit-learn のドキュメント構成でも、教師あり学習の章とは独立に「2. Unsupervised learning」として、クラスタリング・分解(行列分解=表現学習)・密度推定がまとめられています。
強化学習は方策 を、期待収益
を最大化するように求めます。決定的に違うのは、学習データ(状態・行動の軌跡)がエージェント自身の方策によって生成される点です。教師あり・教師なし学習が固定データセットに対する最適化であるのに対し、強化学習はデータ収集と学習が同時進行し、しかも報酬 は個々の行動の正解ラベルではなく、行動の連鎖の末に遅れて届くスカラー値です。Deep Learning 本の序章も、強化学習を「人間からの直接的な指示なしに、試行錯誤によってタスクの遂行を学ぶ」枠組みとして、教師あり・教師なし学習とは別に導入しています。
試験でどう問われるか
| 問われ方 | 正解に寄る条件 | 引っかけ |
|---|---|---|
| 半教師あり学習の位置づけ | 教師あり学習の一種。少数のラベル付きデータで目的関数を作り、大量の未ラベルデータは補助的に使う | 「教師なし学習に分類される」(scikit-learn でも Semi-supervised learning は Supervised learning の章の下位節) |
| 自己教師あり学習の位置づけ | 教師なしデータから疑似ラベルを自分で作り、教師ありと同じ形の目的関数を解く | 「教師あり・教師なし・強化学習と並ぶ第4のパラダイム」 |
| 強化学習と教師あり学習の違い | データがエージェント自身の行動で生成される/報酬が遅延したスカラー値である | 「強化学習は教師ありの一種で、報酬をラベルとみなせばよい」 |
| 回帰と分類の切り分け | 出力空間が連続か離散かで決まり、損失関数(二乗誤差か交差エントロピーか)が変わる | 「ロジスティック回帰は名前の通り回帰である」(実際は分類) |
| 表現学習の所属 | パラダイムではなく「何を学習するか」の軸。教師あり(識別に効く特徴)でも教師なし(オートエンコーダ)でも成立する | 「表現学習=教師なし学習の別名」 |
実装で確かめる
教師あり学習は目的関数が を参照し、教師なし学習は を一切使わないことを、実際に を渡さないコードで確認します。
import numpy as np
rng = np.random.default_rng(0)
X = rng.normal(size=(6, 2))
y = rng.normal(size=6)
# 教師あり回帰: y を使い、予測との二乗誤差を最小化する目的関数
w = rng.normal(size=2)
pred = X @ w
supervised_loss = ((pred - y) ** 2).mean()
# 教師なし: y は一度も参照せず、X だけでクラスタ中心からの距離を最小化する目的関数
centers = X[:2].copy()
dist = ((X[:, None, :] - centers[None, :, :]) ** 2).sum(-1)
unsupervised_loss = dist.min(axis=1).mean()
print("教師あり損失(yを使用):", supervised_loss)
print("教師なし目的関数(yは未使用):", unsupervised_loss)
実行すると 教師あり損失(yを使用): 2.260923518961159、教師なし目的関数(yは未使用): 0.7323830532438138 になります。unsupervised_loss を計算する行に y は一度も出てきません——これが両者を分ける唯一の違いです。
取り違えやすいもの
| 用語 | 学習パラダイムとの関係 |
|---|---|
| 半教師あり学習 | 教師あり学習の一種。目的関数はラベル予測のままで、未ラベルデータは補助情報にすぎない |
| 自己教師あり学習 | 教師なしデータから教師信号(疑似ラベル)を自分で作る手法。目的関数の形自体は教師ありと同じ |
| 転移学習 | パラダイムではなく、学習済みパラメータ・表現を再利用するという別軸。教師あり/教師なし/強化学習のどれとも組み合わせられる |
| 表現学習 | 「何を学習するか」という軸。オートエンコーダは教師なしの表現学習、識別モデルの中間層は教師ありの副産物としての表現学習 |
| 模倣学習 | 強化学習の一種。報酬ではなく専門家の行動列を教師信号として使う、強化学習と教師ありの中間形態 |
想起チェック
教師あり学習と教師なし学習を分ける最小の基準は何か
目的関数が正解ラベル を参照するかどうかです。 を参照して予測誤差を最小化するなら教師あり、 の分布・構造だけを目的関数にするなら教師なしです。
半教師あり学習は教師あり・教師なしのどちらに近いパラダイムか、その理由は
教師あり寄りです。目的関数はラベル付きデータに対する予測誤差のままで、未ラベルデータはその最適化を補助する情報として使われるだけだからです。
強化学習が教師あり学習と根本的に異なる点を2つ挙げると
(1)学習データが固定データセットではなく、エージェント自身の行動によってそのつど生成される点。(2)教師信号が個々の正解ラベルではなく、行動の連鎖の末に遅れて届くスカラーの報酬である点です。
表現学習はどのパラダイムに属するか
パラダイムそのものではなく「何を学習するか」という別の軸です。教師あり(識別に効く特徴の学習)でも教師なし(オートエンコーダによる復元)でも起こります。