AI資格ドリル
資格を選ぶ↓

深層学習の基礎

G検定の過学習と正則化(L1・L2・ドロップアウト・早期終了)

G検定の出題範囲には、深層学習の基礎として正則化と汎化性能向上があります。このページは、過学習の見分け方と、代表的な対策であるL1・L2・ドロップアウト・早期終了の違いを、小さな計算例で整理します。過学習は、訓練データにあてはまりすぎて、初めて見るデータでの誤差が上がる状態です。対策の総称が正則化で、モデルを複雑にしすぎないための工夫です。

このページの誤差の値と係数は、説明用の架空のデータです。実際の学習結果ではありません。

公式情報の確認

試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。

試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。

結論

  1. 過学習は、訓練誤差は下がるのに検証誤差が上がり始める状態
  2. L2正則化(リッジ)は係数を小さくするが、ふつう0にはしない
  3. L1正則化(ラッソ)は係数をちょうど0にでき、特徴量を絞れる
  4. ドロップアウトは学習中にユニットをランダムに除外する手法
  5. 早期終了は検証誤差が改善しなくなった時点で学習を止める手法

過学習は検証誤差で見分ける

scikit-learnの公式の例は、訓練標本に十分あてはまらない状態を未学習、訓練データのノイズまで学んでしまう状態を過学習と呼んでいます。見分けには、学習に使わない検証データでの誤差を使います。次の表は、学習の1〜6回目の誤差を並べた架空の例です。

回訓練誤差検証誤差読み方
10.800.85どちらも下がっている
20.500.58どちらも下がっている
30.320.45どちらも下がっている
40.200.42検証誤差が最小(ここの重みを採用)
50.120.46訓練は下がるが検証は上がる(過学習の兆し)
60.070.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の係数
033
212
40.61
6約0.430
8約0.330

L2の係数は3、1、0.6と小さくなりますが、λを大きくしても0にはなりません。L1の係数はλ=6で0になり、それ以降は0のままです。係数が複数あるモデルでは、L1は不要な特徴量の係数を0にして取り除く働きをします。

ドロップアウトと早期終了

L1・L2が「係数」に罰則をかけるのに対し、ドロップアウトと早期終了は学習のやり方そのものを変えます。

  • ドロップアウト:原論文の抄録は、学習中にユニットを接続とともにランダムに除外して、ユニットの過度な共適応を防ぐと述べています。例えば10個のユニットを半分の確率で除外すると、1回の更新で働くのはおよそ5個です。
  • 早期終了:検証データでの誤差を学習の途中で見て、改善しなくなった時点で打ち切ります。上の表なら、4回目の重みを採用し、5回目の悪化を見て止めます。

ドロップアウトは学習中のユニットの除外、早期終了は学習を止める時期の判断で、効く場所が違います。どちらも、モデルに罰則の式を足す手法ではありません。用語はドロップアウトと早期終了の用語集にあります。

問題文から読み取る

このページの計算例から導いた読み方です。出題を予想するものではありません。

  • 「訓練データでは高精度だが、未知のデータでは精度が落ちる」とあれば、過学習
  • 「不要な特徴量の係数を0にする」とあれば、L1正則化(ラッソ)
  • 「係数を全体に小さくする」とあれば、L2正則化(リッジ)
  • 「学習中にユニットをランダムに無効化する」とあれば、ドロップアウト
  • 「検証データの誤差が改善しなくなったら学習を止める」とあれば、早期終了

よくある質問

過学習は、どの数字を見れば分かりますか?

訓練データでの誤差が下がり続けているのに、別に取っておいた検証データでの誤差が上がり始めたら、過学習の兆しです。scikit-learnの公式の例も、訓練データのノイズまで学んでしまう状態を過学習と呼び、検証集合の誤差が高いほど訓練データから正しく汎化できていないと説明しています。

L1正則化とL2正則化は、結局どちらが良いのですか?

優劣ではなく、効き方の違いです。L1(ラッソ)は係数をちょうど0にできるので、使う特徴量を減らしたいときに向きます。L2(リッジ)は係数を全体に小さくしますが、ふつう0にはしません。

ドロップアウトは、テストのときも使いますか?

ユニットをランダムに除外するのは学習中です。原論文の抄録は、テスト時には、間引かれたネットワークの予測を平均した効果を、より小さい重みを持つ間引かない単一のネットワークで近似できると述べています。

早期終了を使うには、何が必要ですか?

訓練データとは別の検証データが必要です。検証データでの誤差や精度を学習の途中で見て、改善しなくなった時点で学習を止めます。

次に読むと効率的なページ

執筆: ミナト編集部(運営者情報を見る)