深層学習

ノルムペナルティ

損失にパラメータの大きさを測る項を加え、最適化で選ばれる重みの範囲を絞る仕掛けです。L2は重みを原点へ滑らかに寄せ、L1は座標軸上の解を選びやすくします。

  • B|標準
  • 深層学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

ノルムペナルティは、データへの損失 J(θ)J(\theta) にパラメータの大きさを表す項を加え、候補となるパラメータの範囲を狭める仕掛けです。係数を α≥0\alpha \ge 0、罰則を Ω(θ)\Omega(\theta) とすると、最小化する対象は J~(θ)=J(θ)+αΩ(θ)\tilde{J}(\theta)=J(\theta)+\alpha\Omega(\theta) になります。

山道で目的地までの距離だけを評価すると、急な近道も選べます。そこへ「道幅の狭い道には追加料金」という規則を足すと、距離と料金の合計が小さい道を選ぶようになります。ペナルティは正解を直接決めるものではなく、選択肢の優先順位を変えます。

なぜ必要か

損失だけを最小化すると、学習データに合わせるために一部の重みが大きくなる解も候補に残ります。ノルムペナルティは、そのような「大きなパラメータを使う解」に追加コストを課し、データへの適合とパラメータの小ささを同じ目的関数で比較します。ここで絞っているのはパラメータの取りうる範囲であり、学習率や更新則を置き換える操作ではありません。

α\alpha は罰則の相対的な重みです。α=0\alpha=0 なら元の損失だけ、大きくするほど罰則を優先します。したがって、係数を変えると同じデータでも選ばれる解が変わります。ニューラルネットでは重みを対象にし、バイアスを同じ扱いにしない設計もあります。何を罰するかは、式を見た時点で確認する箇所です。

比較する目的選ばれやすい解
データ損失だけ適合を優先し、重みの大きさは制限しない
データ損失とノルムペナルティ適合とパラメータの小ささを両方満たす

仕組み

代表例は L2L2 と L1L1 です。重みベクトルを w=(w1,…,wd)\mathbf{w}=(w_1,\ldots,w_d) とすると、罰則の形は次のようになります。

Ω2(w)=12∥w∥22=12∑i=1dwi2,Ω1(w)=∥w∥1=∑i=1d∣wi∣\Omega_2(\mathbf{w})=\frac{1}{2}\|\mathbf{w}\|_2^2=\frac{1}{2}\sum_{i=1}^{d}w_i^2,\qquad \Omega_1(\mathbf{w})=\|\mathbf{w}\|_1=\sum_{i=1}^{d}|w_i|

dd は重みの個数です。2次元で罰則が同じ値になる点を結ぶと、L2は円、L1はひし形になります。損失の等高線が中心へ移動していくとき、円は座標軸との接点を持たず全方向から原点へ近づけます。一方、ひし形は軸上に角があるため、損失の等高線がその角に触れやすく、いくつかの座標が0になる解を選びやすい、という違いが生まれます。これが「L2は縮める」「L1はスパースにしやすい」を形から読む方法です。

試験でどう問われるか

問われ方正解に寄る条件引っかけ
目的関数の形元の損失に αΩ\alpha\Omega を加える罰則だけを最小化する
L1とL2の比較L1はひし形、L2は円。L1は0の重みを生みやすいどちらも同じ形だとする
係数の意味α=0\alpha=0 は無罰則、大きいほど罰則の比重が増す学習率そのものだとする

実装で確かめる

損失の実装に罰則を足す操作だけを、2次元の重みで確認します。L1とL2は同じ「ノルム」でも、離れた点への課金の増え方が違います。

import numpy as np

w = np.array([3.0, -1.0])
alpha = 0.2
data_loss = 1.5
l1 = data_loss + alpha * np.abs(w).sum()
l2 = data_loss + alpha * 0.5 * np.square(w).sum()
print(l1, l2)

このコードで更新処理をしていないのは、ノルムペナルティの役割を最適化手法と混同しないためです。実際のモデルでは、対象にする重みだけを選び、データ損失と罰則を足した値を学習の目的に渡します。scikit-learn の Ridge も、最小二乗損失に L2 項を加える仕様です。

取り違えやすいもの

用語ノルムペナルティとの切り分け
L2正則化・Ridge罰則の形が二乗和。重みを全方向から原点へ寄せる
L1正則化絶対値和。ひし形の角により0の座標を含む解になりやすい
weight decay文脈によってL2ペナルティを指す呼び名。目的関数への項か更新則かは実装で確認する
Dropoutパラメータのノルムを直接測る項ではなく、別の正則化操作

想起チェック

ノルムペナルティは目的関数に何を加えるか

元の損失に、係数 α\alpha とパラメータの大きさを測る Ω(θ)\Omega(\theta) の積を加えます。

L1がスパースな解を選びやすい理由は何か

等高線がひし形で、座標軸上に角を持つためです。損失の等高線がその角に触れやすく、座標が0になりやすくなります。

罰則の係数を0にするとどうなるか

ノルムペナルティの寄与が消え、元の損失だけを最小化します。

出典