【DS検定対策12】L1・L2正則化とは?過学習を防ぐ仕組みと違いをやさしく解説L1・L2正則化(過学習対策)

データサイエンス

ディープラーニングで最頻出ワードのひとつ「過学習」。資格試験を受ける方にとっては、身近な課題ですよね。私自身も過去問を繰り返していると、同じ問題には強くなるのに、少しひねられた問題では正解率が一気に下がり、本番で失敗する──いわば「人間版・過学習」に陥ることが多々あります(笑)。

今回は、その過学習の対策としてAIが使う「正則化(Regularization)」を紹介します。なんとかこれを応用して人間にも使えないものか。。。(笑)

1. 正則化とは?──モデルに制約をかけて汎化性能を高める

正則化とは、モデルの重み(パラメータ)が必要以上に大きくならないよう制限を加える手法です。目的関数(損失関数)に「ペナルティ項」を加えて、学習の暴走を防ぎます。

人間も同じで、学びたての頃はシンプルな問題に強いのに、例外や応用に手を出すと混乱して精度が落ちる──そんな経験、ありますよね。レアケースを覚えすぎると本質を見失う。正則化はそれを防ぎ、モデルの複雑さを抑えて汎化性能(未知データへの対応力)を高めるための仕組みです。
$$\text{損失関数} = \text{誤差} + \lambda \times \text{ペナルティ項}$$
ここで λ(ラムダ)は「どれくらい制約を強めるか」を決めるハイパーパラメータです。

2. L2正則化(Ridge回帰)──大きな重みをなめらかに抑える

「Ridge(リッジ)」の意味は「尾根」だそうです。L2正則化は、「重み(パラメータ)の制約領域が円や楕円の形になるため、最適解が“尾根(ridge)”のような滑らかな形状上に決まることから」だそうですが、いまいちピンときませんね・・。リッジのRをRing(曲線的)と無理やりこじつけて おきましょう(笑)

さて、L2正則化は、重みの二乗和(Σ w²)をペナルティとして損失関数に加えます。二乗の特性上、小さい値では影響がほとんどありませんが、大きな値になるほどペナルティが急激に増大します。そのためモデルは「なるべく重みを小さくして誤差を最小にしよう」とする方向に働きます。

つまり、大きな重みをなめらかに抑え込むことで、特定の特徴量だけが過度に支配的になるのを防ぎ、全体としてバランスの取れたモデルになるわけです。

例えば w=0.5 のときペナルティは 0.25、w=2 のときは 4。大きな重みほど罰則が強く、結果として「全体の重みを均等に小さく保つ」効果になります。Ridgeの“なだらかな曲線”は、この二乗ペナルティが作り出しているのですね。

損失関数 = Σ(誤差²) + λΣ(w²)

3. L1正則化(Lasso回帰)──不要な重みをゼロにする

「Lasso(ラッソ)」はカウボーイの投げ縄のこと。制約領域がひし形になり、最適解が軸に引っかかって重みがゼロになることが多いため、「縄で不要な重みを捕まえる」イメージから名付けられたそうですが、、、こちらもラッソのLをLiner(直線的)と無理やりこじつけの方が頭に残りそうです。

L1正則化は、重みの絶対値(Σ|w|)をペナルティとして加えます。小さな重みには一定の罰がかかるため、「小さいならゼロにしてしまった方が得」とモデルが判断し、不要な特徴量(ノイズや相関の弱い変数)を自動的に削除します。
これによりモデルはスパース化(不要なものを削除)し、シンプルで解釈しやすい形になります。

損失関数 = Σ(誤差²) + λΣ|w|

4. L1とL2の違いを整理

項目L1正則化(Lasso)L2正則化(Ridge)
ペナルティ重みの絶対値の和重みの二乗和
効果小さい重みをゼロ化(特徴選択)重みを全体的に小さくする
特徴スパース化(不要なものを削除)でモデルを簡略化全体をなめらかに抑制
覚え方不要な重みを削る大きすぎる重みを抑える

両者の長所を組み合わせた「Elastic Net」という手法もあり、L1とL2のバランスをとるように設計されています。

5. 正則化が過学習に有効な理由

モデルが複雑すぎるとバリアンス(variance:分散)が大きくなり、学習データに過剰適合します。逆に単純すぎるとバイアス(誤差)が増えます。正則化は、この「バイアス・バリアンスのトレードオフ」を調整し、ちょうど良い複雑さに保つことで過学習を防ぐのです。

6. 他の過学習対策との違い

  • ドロップアウト(Dropout):学習中に一部のノードを無効化して汎化性能を高める
  • 早期終了(Early stopping):検証データの誤差が悪化した時点で学習を打ち切る
  • 交差検証(Cross Validation):データを分割して複数回学習・検証を行い、過学習を検出する

いずれも「モデルが覚えすぎないようにする」という点で共通しています。正則化とあわせて理解しておきましょう。

#人間も覚えすぎないように手を抜いて・・・ いや覚えすぎ まで 到着してなかったw

7. まとめ:L1・L2正則化は“覚えすぎ防止のしつけ”

  • Ridge回帰=L2、Lasso回帰=L1、Elastic Net=両方
  • L2は「二乗」で大きな重みを強く抑える
  • L1は「絶対値」で小さい重みをゼロにして特徴選択
  • 目的関数は「誤差+ペナルティ項」の形
  • 「過学習」「バイアス・バリアンス」「汎化性能」との関係も要チェック

AIが“覚えすぎずに学ぶ”ための正則化。私も欲しい(笑)。

コメント