教師あり学習 入門
ML 論文を読む前に必要な最低限の学習理論。5 つの短いトピックで、「学習」を数学の問題 —— 入力から出力への写像を当てはめる —— に翻訳し、すべての教師ありモデルが共有する 5 つの構成要素を扱う:関数族、損失関数、オプティマイザ、過学習という落とし穴、 そしてそこから引き戻す正則化。
入力 → 出力の写像
教師ありモデルは皆、関数だ。訓練とは「どれか」を探す作業。
教師あり学習とは、未知の関数を例から近似する問題だ。 モデルに (入力, 出力) の対を山ほど見せ、未見の入力に対して出力を予測させる。 「教師あり」とは、各例にラベル付きの答えが付いていることを指す —— データ基礎の第 2 節で見た「特徴とラベル」の発想を、学習目標として書き直したもの。
写像を抽象的に書く:
ŷ = fθ(x)
x は 1 つの入力(特徴ベクトル、画像、トークン列、何でも)。ŷ(「ワイハット」)はモデルの予測。fθ はモデル自身 —— パラメータ θ(ギリシャ文字「シータ」、モデル内部のすべての学習可能なつまみの総称)で 振る舞いが決まる関数。訓練とは、データセット全体でŷ = fθ(x) が真の y にできるだけ近くなるようなθ を探す作業。
fθ の形 —— 探索する 関数族 —— の選択が 「モデリング」の核心。族が違えば能力もまるで違う:
- 線形回帰。
ŷ = w · x + b—— 入力の加重和。 入力ごとに 1 パラメータ + バイアス。安く速く、表形式データでは驚くほど健闘する。 - 決定木。「if x[3] > 1.5 then…」のネストした規則の集合。 各葉に 1 予測。複数木でランダムフォレストや勾配ブースティング木になり、 小規模な構造化データの Kaggle 競技では今もって勝つ。
- ニューラルネット。線形層と要素ごとの非線形(ReLU、GELU)の交互の積み重ね。 小さくて数百万、フロンティアでは数兆パラメータ。十分な幅・深さがあれば「万能近似器」 —— 理論上はデータが示すどんな入出力関係でも当てはめられる。
具体例。線形回帰で面積から住宅価格を予測する。特徴 1 つ(x = 面積)、 学ぶパラメータ 1 つ(w)とバイアス(b)。 モデルは ŷ = w · x + b。訓練はデータ点の傍を通る直線を引く (w, b) を探す:
通底する例。いま見た 5 つの住宅点と、最良当てはめ線 w ≈ 0.75、b ≈ 130 は、この primer 全体を通して使われる。 §2 ではこの線の残差を二乗して MSE に。§3 では勾配降下がその傾きを再発見する。 §4 と §5 では同じ 5 点を保ったまま、直線をより柔軟な多項式に置き換え、 過学習がどう起こり、正則化がどう押し戻すかを見せる。
どの族を選んでも繰り返し現れる 3 つの概念:
- 仮説空間。あなたが考慮するすべての
fθの集合 —— つまりθのすべての取り得る値。仮説空間が大きいほど多様なパターンに 当てはめられるが、過学習しやすくもなる。 - 帰納バイアス。関数族が暗黙に置く世界への仮定。線形回帰は関係が 線形だと仮定する。畳み込みネットは「平行移動不変性」(写真をずらしても猫は猫)を仮定する。 Transformer はトークン同士がアテンションで相互作用すると仮定する。「仮定なし」のモデルなど 存在しない —— コツは問題に合った仮定を持つ族を選ぶこと。
- 容量。関数族の表現力。線形回帰は容量小(特徴ごとに数値 1 つ)、 700 億パラメータの LLM は容量大。難問には容量が必要だが、容量こそが「過学習を可能にする」 根源でもある —— 第 4・5 節へ。
以降の 4 節は明らかな後続の問いに答える:関数族が決まったとして、 実際に最良の θ をどう探すのか? 答えは 4 段階に分かれる —— 「いまの θ がどれだけ間違っているかを測る」(第 2 節 —— 損失)、 「θ を『より間違っていない』方向に押す」(第 3 節 —— 最適化)、 「規則を学んだのか訓練集を丸暗記したのかを見分ける」(第 4 節 —— 汎化)、 「その『丸暗記しない』という嗜好を損失そのものに組み込む」(第 5 節 —— 正則化)。
Transformer では:関数族は「残差接続付きの自己注意ブロックと フィードフォワード層の積み重ね」。パラメータ θ は各ブロックの数十億の重み行列に 加え、トークンの埋め込み表。入力 x はトークン ID の列、 出力 ŷ は次トークンの確率分布(確率統計の第 2 節)。 訓練はパラメータ空間で、「実際に出た次トークン」にこの分布ができるだけ高い確率を 与えるような θ を、数兆トークンの平均上で探す。 この primer の以降の内容はすべて適用される —— 関数族の項目だけが特殊。
損失関数(Loss Function)
「いまのモデルがどれだけ間違っているか」を 1 つの数で表す。
第 1 節は構図を整えた:データセット全体で ŷ = fθ(x) が真の y にできるだけ近くなる θ を見つける。 だが「できるだけ近く」を計算可能な定義にしないと、オプティマイザは最適化のしようがない。損失関数こそその定義だ。予測 ŷ と真のラベル y を入力すると、「予測がどれだけ間違っているか」を表す数 L(ŷ, y) を返す。小さいほど良い、ゼロが完璧。
実践で出会う 95% は 2 種類でカバーできる:
- 平均二乗誤差(MSE)、回帰(連続出力)用:
L = mean[ (ŷ − y)² ]。サンプルごとの誤差を取り、二乗し (正負の誤差が打ち消し合わず、大きな誤差が大きく罰せられるように)、 データセット全体で平均する。 - 交差エントロピー、分類(離散出力)用:
L = −mean[ log P(y) ]。モデルは softmax で各クラスに確率を割り当てる; 損失は正解クラスの確率の負の対数の平均。確率統計 primer の対数確率の節そのもの。
具体例。§1 と同じ 5 つの住宅点と、デモが落ち着いた最良当てはめ線 ŷ = 0.75 · 面積 + 130:
面積 真値 y 予測 ŷ 誤差 (ŷ − y) 二乗誤差
──── ──────── ──────────── ────────────── ──────────────
600 480 580 +100 10,000 (k²)
850 920 768 −152 23,104 (k²)
1450 1080 1218 +138 19,044 (k²)
2100 1900 1705 −195 38,025 (k²)
3200 2480 2530 +50 2,500 (k²)
MSE = mean( 二乗誤差 )
= (10000 + 23104 + 19044 + 38025 + 2500) / 5
= 18,535 (k²、千ドルの二乗)
≈ $136k (√ → RMSE、y と同じ単位)なぜ絶対値 |ŷ − y| ではなく二乗を使うのか? どこでも効く 3 つの実用的理由:
- 至るところで微分可能。二乗関数の導関数は滑らか(
2(ŷ − y)); 絶対値はゼロで折れて導関数が未定義。オプティマイザは滑らかが大好物。 - 大きな誤差は余計に罰される。誤差 100 を二乗すれば 10000、 誤差 10 なら 100。オプティマイザは「もっとも外している」サンプルに自然と注意を向ける —— 多くの問題でこれはバグではなく特性。
- すっきりした確率的物語。
yの雑音をガウス分布と仮定すると、 MSE はちょうど最尤推定の損失として現れる。 「自然な」損失の多くは類似の確率的議論から導かれる。
特殊問題向けの損失も多い —— Huber(外れ値に頑健)、ヒンジ(SVM 分類)、 KL ダイバージェンス(分布同士のマッチング)、focal loss(まれな陽性向け)。 だがほぼすべてが同じ形をしている:サンプルごとの罰、データセット全体で平均。
次節が依存する、損失の 2 つの性質:
- 損失は θ の関数。データセットを固定して、パラメータ
θを 動かすと、損失はθ依存の数になる。これをL(θ)と書く。 訓練はL(θ)を最小にするθを探す作業。 - たいてい勾配を持つ。損失が
θについて微分可能なので、 微積分 primer の勾配∇L(θ)が存在し、損失曲面の上り方向を指す。 第 3 節はその矢印を頼りに進む。
Transformer では:損失は交差エントロピーで、 各訓練サンプルの各位置における「次トークン分布」上で計算し、バッチで平均する。 4096 トークン列・バッチサイズ 256 の 1 回の順伝播で、約 100 万個のトークンごとの 交差エントロピー値が生まれる;オプティマイザが実際に見る損失はその平均だ。 各訓練ステップはこの 1 つのスカラを中心に回る —— 計算し、各パラメータに関する勾配を取り、1 歩進む(第 3 節)。 この数を繰り返し下げていくことが、現代 LLM のあらゆる興味深い能力を生んでいる。
最適化(Optimization)
損失が下がる方向に θ を少し動かす、それを数百万回繰り返す。
第 2 節は「データに当てはめる」を「L(θ) を最小化する」に翻訳した。 いまや実際にやらねばならない。損失は高次元のパラメータ空間からスカラへの関数で、 ちょっと意味のあるモデルではその最小値を直接解くのは絶望的。 実用解は微積分 primer の最終節を工業規模に展開したもの —— 勾配降下法だ。
更新規則は 1 行:
θ ← θ − η · ∇L(θ)
勾配を計算する —— 「各パラメータをわずかに動かすと損失がどう変わるか」を 並べたベクトル。その逆方向に進む。学習率 η(イータ)が 1 歩の大きさを決める。 繰り返す。十分回せばパラメータは損失のどこかの極小点付近に落ち着く。 アルゴリズム全体はこれ。耳にしたあらゆる ML モデルは、このループを回して訓練されている。
1 回の勾配計算に使うデータ量で 3 つに分かれる:
- バッチ(フルバッチ)勾配降下。更新ごとにデータセット全体を使う。 勾配は最も正確、1 ステップは最も遅く、大規模データだとメモリに収まらない。今やほぼ誰もやらない。
- 確率的勾配降下(SGD)。更新ごとに1 サンプルだけ使う。 勾配にノイズが多大 —— だが安く、ノイズはむしろ損失面の悪い領域からの脱出に役立つことがある。 オリジナル版;純 SGD は今ではほぼベースライン用途。
- ミニバッチ勾配降下。16・64・256・4096 サンプルなど小さな塊を使う。 いいとこ取り:勾配の推定は妥当、データセット全体は不要。これこそ現代のあらゆるモデルが採用するもの。2026 年に「SGD」と言えば ほぼミニバッチ SGD のこと。
勾配降下による損失面の散策は、ボールが坂を転がるようなものだ —— ただし「坂」は描けない百万次元空間に住む。1 次元の絵が結局のところ最良の直感:
どのプロジェクトでも調整する 2 つのつまみ:
- 学習率(η)。ML で最もチューニングされるハイパーパラメータ。 小さすぎると訓練がいつまでも進まない;大きすぎるとパラメータが極小を飛び越え、 損失が振動・発散する。現代のレシピでは学習率をスケジュールするのが普通 —— 0 からウォームアップ、その後線形・コサイン・ステップで減衰。
- バッチサイズ。バッチが大きいほど勾配ノイズは小さい (サンプル数 → 分散は 1/√n で縮む、確率統計 primer 第 4 節)、ただし 1 ステップの メモリ消費は増える。多くの論文は使ったバッチサイズを明記する。
素のミニバッチ SGD の上に乗る、どこでも見る 2 つの改良:
- モメンタム。最近の勾配の指数移動平均を保持し、その方向に進む。 ミニバッチ由来のノイズを均し、勾配方向が一定の軸では速度を増し、 純 SGD だと引っかかる小さな段差を通り抜けるのに役立つ。
- Adam。さらに「勾配の二乗」の移動平均を追加し、その平方根で割る。 結果として、各パラメータが自前の座標ごとの学習率を持ち、 勾配が大きかった次元では自動的にステップが縮む。 十分頑健で、ほぼあらゆる Transformer の既定オプティマイザ。
数十億パラメータのモデルで ∇L(θ) をどう得る? 連鎖律の工業規模適用 ——逆伝播(backpropagation)だ。順伝播で損失を計算、 逆伝播で順向きに通った演算グラフを逆順にたどり、各ステップで局所導関数を掛け合わせる。 微積分 primer の第 3 節がそのまま機構。本節のオプティマイザは 「逆伝播が渡す勾配を受けて、どう 1 歩進むか」のルールだ。
Transformer では:訓練ループはまさに 4 ステップだ。 (1)データセットからトークン列のバッチをサンプリング。 (2)Transformer の順伝播で損失を得る。 (3)逆伝播で各パラメータに関する勾配を得る。 (4)オプティマイザを 1 ステップ適用(ほぼ常に AdamW —— Adam + 第 5 節の重み減衰)。 これを数十億回。現代の訓練インフラ(データ並列、テンソル並列、パイプライン並列、 ZeRO、勾配チェックポイント)は、この 4 ステップループを数千 GPU クラスタに拡張するためにある —— ループそのものは変わらない。
過学習と汎化
宿題は完璧、試験で凍る生徒 —— モデルでも起こる。
練習問題は完全に丸暗記したのに、少し違う問題で固まる生徒を想像してほしい。 彼が学んだのはその具体的問題群であって、その背後の規則性ではない。 同じ失敗が ML でも起こり、名前がついている:過学習(overfitting)。 反対 —— 訓練データだけでなく、見たことのないサンプルでもうまく動く —— が汎化(generalization)。教師あり学習の目的そのものが汎化だ。 訓練損失だけでは何もわからない。
診断器具はデータ基礎 primer 第 3 節の検証集合。訓練を回しながらL_train(訓練集合上の損失)と L_val(ホールドアウト検証集合の損失)を 並べて追う。3 つの状況が現れる:
- 過小学習(underfitting)。両損失とも高く、ほぼ等しい。 モデルが小さすぎる、または訓練が足りない;訓練データすら当てはめられず、 汎化以前の段階。対処:大きいモデル、もっと訓練、より良い特徴。
- ちょうど良い。両損失とも低く、検証損失は訓練損失より少しだけ上。 モデルは本物の信号を捉え、ノイズを無視している。
- 過学習(overfitting)。訓練損失は小さく、なお下がっている; 検証損失はずっと高く、上がり始める。モデルは新しいデータに当てはまらない 訓練集合の癖を暗記している。対処:早めに止める、モデルを縮める、データを増やす、 正則化(第 5 節)。
ここで §1 の関数族を広げてみよう。同じ 5 つの住宅点を保ったまま、直線という仮定をやめて 次数の異なる多項式を当てはめる。古典的な絵:
訓練 RMSE 検証 RMSE 診断
────────── ─────────── ──────────────────────────────
次数 0 高 高 「平均価格をそのまま予測」
次数 1 中 中 §1 の最良当てはめ線
次数 4 $0 とても高 各住宅点を厳密に通過するが、
点と点の間で激しく波打つ次数 12 の多項式は訓練損失をゼロにできる —— 各データ点を厳密に通る —— が、 点と点の間の予測は荒唐無稽。訓練損失が小さいのは良いモデルの必要条件であって十分条件ではない。訓練損失と検証損失の差 —— 汎化ギャップとも呼ばれる —— こそが本当の診断指標。
なぜ過学習が起こるのか? 容量の十分なモデルは、データが課す制約より多くの自由度を持つ。 任意の有限点集合を通る関数は無数にある;「訓練データに当てはめろ」だけでは 1 つに絞れない。 その中には滑らかで汎化するものもあれば、点と点の間で乱舞して汎化しないものもある。 オプティマイザを滑らかな側へ押す力がなければ、訓練損失をゼロにできる限り、 乱舞する関数で平気で打ち止めにする。
過学習と戦う 3 つのレバー、通常引く順:
- もっとデータ。最もクリーンな対処。データが倍になれば関数への 制約が厳しくなり、丸暗記は難しくなる。「scaling laws」論文が 「事前学習データを増やせば下流精度が予測可能に良くなる」と一貫して見出すのはこのため。
- 容量を減らす。小さいモデルは自由度も少なく、丸暗記の余地も少ない。 幅を縮める、層を削る、次数 12 の多項式を次数 3 にする。
- 正則化。大きいモデルを保ちつつ、オプティマイザを単純な解の側に偏らせる。 第 5 節がまさにこれ。
最初は誰もが引っかかる微妙な点:「大きいモデル = 必ず過学習」は誤り。 現代の深層学習では訓練サンプル数より遥かに多いパラメータを持つモデルを日常的に訓練し、 それでも問題なく汎化する。古典的なバイアス-バリアンスの物語 (ある閾値を越えるとパラメータが増えるほど汎化が悪化する)は大型ニューラルネットでは破綻する。 この現象には double descent(二重降下)という名前がある: 検証損失が一度上がってから、モデルをさらに大きくすると再び下がる。 正確な理由は今も活発な研究分野だが、実践的には: 「巨大モデル = 過学習」と決めつけないこと。
Transformer では:LLM は数千億トークンを 1 エポックだけ通す。 訓練集合が巨大すぎて純粋な丸暗記は収まりきらず、汎化は例外ではなく既定結果だ。 過学習はもっぱらファインチューニングの段階で起きる:モデルがずっと小さな タスク特化のデータセットに適応するとき。本節の診断 (訓練損失は下がっているのに検証損失が上がる)がまさに人々がそれを検知する方法だ。 現代のファインチューニングのレシピは、小さな学習率、早期停止、 LoRA(実効的な容量を抑えるパラメータ効率手法)、次節の正則化を用いて 汎化ギャップを抑える。
正則化(Regularization)
「単純な解を好む」を損失そのものに焼き付ける。
第 4 節は問題に名前を付けた:十分な容量があれば、訓練損失をゼロにするパラメータ設定が 無数にあるが、汎化するのはそのうち一部だけ。タイブレーカーがなければ オプティマイザはどれにでも着地し、乱舞する解は新データで壊滅する。正則化がそのタイブレーカーだ。単純な解への偏好を 損失そのものに焼き付け、オプティマイザに「データへの当てはめ」と「単純さの維持」を 天秤にかけさせ、引き分けは単純な側に倒れるようにする。
すべての正則化器が当てはまる単一テンプレート:
Lreg(θ) = Ldata(θ) + λ · Ω(θ)
Ldata は第 2 節の元の損失。Ω(θ)(「オメガ」)は 「このパラメータ設定がどれだけ複雑か」を測る罰則項。λ(「ラムダ」)は 正則化の強さ —— ユーザが選ぶつまみ。罰則を加えるとオプティマイザの探索対象が変わる: 新たな極小は「データに当てはまり、かつ単純」な設定で、その間の重み付けが λ。
4 つの正則化器でほぼすべての実用ケースを覆える:
- L2(weight decay)。
Ω(θ) = Σ θᵢ²—— パラメータの二乗和。大きな重みを罰する。データへの当てはめを少数の巨大な重みではなく 多数の小さな重みに広げる傾向。機構的には、勾配更新に−η · 2λ · θの項が加わり、 各ステップで重みを 0 へ「減衰」させる —— 名前の「decay」はここから。 - L1。
Ω(θ) = Σ |θᵢ|—— パラメータの絶対値の和。 特筆すべき副作用がある:多くの重みを厳密にゼロへ追い込み、疎なモデルを作る。訓練に特徴選択を組み込みたいときに便利。 - ドロップアウト。訓練中のみ、各順伝播で一部の活性をランダムに 0 にする。 モデルは特定のニューロンに依存できず、実質的に「これらのニューロンが無いとき」の サブモデルのアンサンブルを学ぶ。推論時は全ニューロンを使う。安く、驚くほど効果的、 2010 年代に偏在 —— 現代 Transformer では大バッチ + weight decay に一部置き換えられたが、 いまだに常備工具。
- 早期停止。訓練中に検証損失を見張り、上がり始めた瞬間に止める。 世界一安い「正則化器」 —— 罰則項なし、「どれだけ待てるか」以外の追加ハイパラなし —— 訓練を短く切れば、続行すれば失われたであろう「滑らかな」状態にパラメータが留まる、 という仕掛けだ。
具体的な絵。第 4 節の過学習した次数 12 の多項式は各点を通るが間で激しく波打つ。 多項式の係数に L2 罰則を加えると、オプティマイザは小さな係数を好み、 波打ちが直接抑えられる。λ を増やすにつれ、当てはめは 「全点を通る」から「ノイズを概ね無視する滑らかな曲線」に近づく:
このトレードオフ曲線の形に注目。λ = 0 は第 4 節の乱舞曲線。λ を非常に大きくすると罰則が支配し、当てはめはほぼ定数 —— モデルはデータをほぼ使わないほど単純になる。両者の間のどこかに、 検証損失が最小になる甘い場所がある。見つけ方は? 検証集合でスイープ。いくつかの λ を試し、検証損失が最小のものを選ぶ。 (データ基礎 primer 第 3 節:検証集合はこれのためにある。)
正則化を考える有用な視点が確率統計 primer から来る: どの正則化器も「妥当なパラメータがどう見えるか」についての事前分布に対応する。 L2 は「重みはおそらく小さく、ガウス分布に従う」に対応する。 L1 は「重みはおそらく 0、証拠が強ければ非 0」。 正則化された損失は負の対数事後分布 —— ベイズ的な意味での「当てはめ + 事前」。 同じこと、2 つの語彙。
Transformer では:オプティマイザはほぼ普遍的に AdamW —— Adam + L2 系の重み減衰。「W」は文字通り weight decay。 他に多用される正則化:アテンションと MLP 層内のドロップアウト(特にファインチューニング時); 交差エントロピーにおける label smoothing(出力分布に対する L2 のソフト版); 勾配クリッピング(1 つの巨大な勾配が長い訓練を壊さないようにする、 構造的には「更新ステップ自体の正則化」に近い)。 そしてもちろん、現代 LLM 訓練における最強の正則化器は、ただもっと多くのデータで訓練すること —— 第 4 節の「もっとデータ」レバー。どの選択も同じトレードオフ曲線上の別の点:訓練データが現実世界に似ていると、どれだけ信用するか —— その分だけ、 モデルに訓練データへ寄せさせるかを決める。