深層学習の基礎
G検定の過学習と正則化(L1・L2・ドロップアウト・早期終了)
G検定の出題範囲には、深層学習の基礎として正則化と汎化性能向上があります。このページは、過学習の見分け方と、代表的な対策であるL1・L2・ドロップアウト・早期終了の違いを、小さな計算例で整理します。過学習は、訓練データにあてはまりすぎて、初めて見るデータでの誤差が上がる状態です。対策の総称が正則化で、モデルを複雑にしすぎないための工夫です。
このページの誤差の値と係数は、説明用の架空のデータです。実際の学習結果ではありません。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 過学習は、訓練誤差は下がるのに検証誤差が上がり始める状態
- L2正則化(リッジ)は係数を小さくするが、ふつう0にはしない
- L1正則化(ラッソ)は係数をちょうど0にでき、特徴量を絞れる
- ドロップアウトは学習中にユニットをランダムに除外する手法
- 早期終了は検証誤差が改善しなくなった時点で学習を止める手法
過学習は検証誤差で見分ける
scikit-learnの公式の例は、訓練標本に十分あてはまらない状態を未学習、訓練データのノイズまで学んでしまう状態を過学習と呼んでいます。見分けには、学習に使わない検証データでの誤差を使います。次の表は、学習の1〜6回目の誤差を並べた架空の例です。
| 回 | 訓練誤差 | 検証誤差 | 読み方 |
|---|---|---|---|
| 1 | 0.80 | 0.85 | どちらも下がっている |
| 2 | 0.50 | 0.58 | どちらも下がっている |
| 3 | 0.32 | 0.45 | どちらも下がっている |
| 4 | 0.20 | 0.42 | 検証誤差が最小(ここの重みを採用) |
| 5 | 0.12 | 0.46 | 訓練は下がるが検証は上がる(過学習の兆し) |
| 6 | 0.07 | 0.52 | 差がさらに開く |
訓練誤差は6回目まで下がり続けますが、検証誤差は4回目の0.42が底で、5回目から上がっています。訓練誤差だけを見ていると、この悪化に気づけません。
逆に、訓練誤差も検証誤差も高いままなら、過学習ではなく未学習です。scikit-learnの公式の例では、次数1の多項式(直線)は訓練標本に十分あてはまらず未学習、次数4は真の関数をほぼ近似し、さらに高い次数になると訓練データのノイズまで学んで過学習になります。モデルが複雑になるほど過学習に近づくので、正則化は複雑さを抑える方向に働きます。検証データの作り方は交差検証のページにあります。
L1とL2は罰則の形が違う
正則化は、モデルの誤差に「係数が大きいほど増える罰則」を足して、係数が大きくなりすぎるのを防ぎます。scikit-learnの公式ドキュメントは、リッジ回帰を係数の大きさに罰則を課す手法と説明し、罰則付きの式を 誤差の2乗和 + alpha × 係数の2乗和 と定義しています。alphaが大きいほど係数の縮小が大きくなります。
- L2正則化(リッジ回帰)の罰則は、係数の2乗の和
- L1正則化(ラッソ回帰)の罰則は、係数の絶対値の和
- 公式ドキュメントは、Lassoは係数をちょうど0にできる疎なモデルで、特徴選択に使えると説明している
用語の定義はL1正則化/L2正則化の用語集にあります。
係数1つの計算例
罰則なしで誤差を最小にする係数が3の場合を考えます。誤差を (係数 − 3)² とし、罰則の強さをλとして、罰則を足した合計が最小になる係数を求めます。
- L2:(w − 3)² + λw² を最小にする w は 3 ÷ (1 + λ)
- L1:(w − 3)² + λ|w| を最小にする w は 3 − λ ÷ 2。ただしこの値が0以下になるλでは w = 0
| 罰則の強さλ | L2の係数 | L1の係数 |
|---|---|---|
| 0 | 3 | 3 |
| 2 | 1 | 2 |
| 4 | 0.6 | 1 |
| 6 | 約0.43 | 0 |
| 8 | 約0.33 | 0 |
L2の係数は3、1、0.6と小さくなりますが、λを大きくしても0にはなりません。L1の係数はλ=6で0になり、それ以降は0のままです。係数が複数あるモデルでは、L1は不要な特徴量の係数を0にして取り除く働きをします。
ドロップアウトと早期終了
L1・L2が「係数」に罰則をかけるのに対し、ドロップアウトと早期終了は学習のやり方そのものを変えます。
- ドロップアウト:原論文の抄録は、学習中にユニットを接続とともにランダムに除外して、ユニットの過度な共適応を防ぐと述べています。例えば10個のユニットを半分の確率で除外すると、1回の更新で働くのはおよそ5個です。
- 早期終了:検証データでの誤差を学習の途中で見て、改善しなくなった時点で打ち切ります。上の表なら、4回目の重みを採用し、5回目の悪化を見て止めます。
ドロップアウトは学習中のユニットの除外、早期終了は学習を止める時期の判断で、効く場所が違います。どちらも、モデルに罰則の式を足す手法ではありません。用語はドロップアウトと早期終了の用語集にあります。
問題文から読み取る
このページの計算例から導いた読み方です。出題を予想するものではありません。
- 「訓練データでは高精度だが、未知のデータでは精度が落ちる」とあれば、過学習
- 「不要な特徴量の係数を0にする」とあれば、L1正則化(ラッソ)
- 「係数を全体に小さくする」とあれば、L2正則化(リッジ)
- 「学習中にユニットをランダムに無効化する」とあれば、ドロップアウト
- 「検証データの誤差が改善しなくなったら学習を止める」とあれば、早期終了
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
過学習は、どの数字を見れば分かりますか?
訓練データでの誤差が下がり続けているのに、別に取っておいた検証データでの誤差が上がり始めたら、過学習の兆しです。scikit-learnの公式の例も、訓練データのノイズまで学んでしまう状態を過学習と呼び、検証集合の誤差が高いほど訓練データから正しく汎化できていないと説明しています。
L1正則化とL2正則化は、結局どちらが良いのですか?
優劣ではなく、効き方の違いです。L1(ラッソ)は係数をちょうど0にできるので、使う特徴量を減らしたいときに向きます。L2(リッジ)は係数を全体に小さくしますが、ふつう0にはしません。
ドロップアウトは、テストのときも使いますか?
ユニットをランダムに除外するのは学習中です。原論文の抄録は、テスト時には、間引かれたネットワークの予測を平均した効果を、より小さい重みを持つ間引かない単一のネットワークで近似できると述べています。
早期終了を使うには、何が必要ですか?
訓練データとは別の検証データが必要です。検証データでの誤差や精度を学習の途中で見て、改善しなくなった時点で学習を止めます。
