モデルの複雑さに罰則を加えて過学習を防ぐ手法
正則化(regularization)とは、モデルの複雑さに罰則(ペナルティ)を加えることで、過学習を防ぐ手法のことです。学習で最小化する「損失」に、重みが大きいほど増える罰則項を足し込みます。
損失 + λ×Σ|w| (L1) または 損失 + λ×Σw² (L2)
身近な例で言うと、荷物の重さに応じて料金がかかる宅配便に似ています。荷物(重み)を増やせば便利になる(訓練データに合う)一方で、料金(罰則)が高くつく。だから「本当に必要なものだけを厳選して詰める」ようになり、結果として身軽で扱いやすいモデルになります。
ここで λ(ラムダ)は罰則の強さを決める調整つまみです。上のツールで種類(L1/L2)と λ を変えると、各重みのバーの大きさとフィッティング曲線の滑らかさが連動して変わります。λ=0 では罰則がなく過学習気味、λ を上げるほど重みが抑えられて曲線が滑らかになります。
L1 と L2 は罰則の計算方法が違い、その結果重みへの効き方が変わります。
| 項目 | L1(ラッソ) | L2(リッジ) |
|---|---|---|
| 別名 | ラッソ(Lasso) | リッジ(Ridge) |
| 罰則項 | λ × Σ|w|(絶対値の和) | λ × Σw²(2乗の和) |
| 重みへの効果 | 不要な重みを 0 に潰す(スパース化) | 全体を一様に縮める(縮小) |
| 得意なこと | 特徴選択(重要な変数だけ残す) | 過学習の安定した抑制 |
・L1(ラッソ):絶対値の和を罰則にするため、重要でない重みをちょうど 0 に潰します。0 の重みは「その特徴を使わない」という意味なので、自動的に重要な特徴だけを選ぶ「特徴選択」の効果があります
・L2(リッジ):2乗の和を罰則にするため、すべての重みを0 に近づけつつも 0 にはしません。全体をバランス良く縮め、安定して過学習を抑えます
上のツールで L1 を選んで λ を上げると、いくつかの重みのバーがピッタリ 0(グレー)になります。L2 では同じことをしても全バーが一様に短くなるだけで 0 にはなりません。これが L1 と L2 の本質的な違いです。なお両方を組み合わせた Elastic Net という手法もあります。
正則化が過学習を防ぐ仕組みはシンプルです。重みが大きいほど罰則で損失が増えるので、学習は「重みをできるだけ小さく保ちながら、データにも合わせる」というバランスを取るようになります。
重みが小さいと、入力が少し変わっても出力が大きく跳ねません。つまり「滑らかでなだらかなモデル」になります。滑らかなモデルは訓練データの細かなノイズに振り回されにくく、未知データに対しても安定して良い予測ができます(=汎化性能が上がる)。
ただし注意点があります。
・λ が小さすぎる:罰則がほぼ効かず、過学習のまま
・λ がちょうどよい:訓練・検証ともに良いバランス(理想)
・λ が大きすぎる:重みを抑えすぎてデータの傾向すら表せない未学習になる
つまり λ は「強ければ良い」わけではなく、ちょうどよい値を探すことが大切です。要点をまとめると、正則化は重みに罰則を与えて過学習を抑える手法であり、λ が大きいほど罰則が強くなります。