L1,L2正則化について
今回はL1,L2正則化について解説します。
L1,L2正則化とは
L1,L2正則化は機械学習モデルの過学習を抑制する手法です。
損失関数に、モデルの複雑さによる項を追加することで、モデルが訓練データに過剰に適合することを防ぎます。
L1正則化(Lasso回帰)
L1正則化は、損失関数Lにモデルの重み
L1正則化を使用した損失関数(Lは通常の損失関数)
-
Loss = L + \lambda \sum^{n}_{i=1}|w_i|・・・(1)
: 正則化の強さを調整するパラメータλ
: モデルの重みw
モデルの持つ重みに制限がかかるため、モデル全体の複雑さ(重みの大きさ)が抑制され過学習を防ぎます。
L2正則化(Ridge回帰)
L2正則化も、損失関数Lにモデルの重み
L2正則化を使用した損失関数(Lは通常の損失関数)
Loss = L + \lambda \sum^{n}_{i=1}w^2_i・・・(2)
L1,L2正則化の使い分け
ではこれらの違いと使い分けを考えていきましょう。
それぞれのモデルへの影響を考えるために、重みの更新式を記述します。これらは、上記の損失関数に逆伝播(偏微分)を行うことで導出することができます。
L1正則化の重みの更新式
※
L2正則化の重みの更新式
※sign(x): xが正の時1, xが負の時-1, x=0の時0を返す
これらの更新式(3),(4)から、各重み
またL1正則化は重みを完全に0にすることがあり(sign関数によって固定値が加減算される)、L2正則化は重みを0に近づけるが完全には0にしません(重みが小さくなると、重みの加減算の量も減少する。重みの値を均等に小さくする)。
これによりモデルの過学習を防ぐとともに、L1は特徴量の取捨選択(重みが0になる場合、その特徴は使用されず、特徴量が減少する)によってモデルの解釈性を向上させ、L2は重みの値を平滑化することで、特定の重みだけが大きくなることがないため外れ値やノイズに対する耐性が高まります。
利用シーン
- L1正則化
モデルを単純化し解釈性を向上したい、スパース(疎)な軽いモデルを作りたい - L2正則化
外れ値やノイズによる影響を抑えたい - 両方
過学習を防ぎたい
まとめ
L1,L2正則化は、損失関数にモデルの重みと相関する項を追加し、機械学習モデルの過学習を抑制する手法でした。
これらはどちらもよく使われる手法なので、場面によって使い分けていきましょう。
今回はここまでになります。最後まで読んでいただきありがとうございました。
Discussion