# 正則化
## 定義
正則化(regularization)とは、学習時に訓練誤差の最小化に加えて汎化性能を上げるために行う操作である。一般に、正則化はモデルの表現力を抑え(仮説数を抑えることで過学習しにくくなる)、学習したいモデルの特徴や制約を学習時に与えることで達成される。代表的な方法として、最適化対象の目的関数に正則化項 $R(\theta)$ を加えた $L(D,\theta)+CR(\theta)$ を用いる。ここで $C>0$ は正則化項をどれだけ重視するかを決めるハイパーパラメータであり、$C$ が大きいほど正則化項を重視し、小さいほど訓練誤差を重視する。正則化は訓練誤差を下げなくても汎化性能を改善できる方法であれば何でも用いることができ、データオーグメンテーション(結果が変わらないような変換で訓練データを水増しする手法、[[汎化能力]]を参照)も代表的な正則化手法の一つである。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6)
## L1ノルム正則化・L2ノルム正則化
正則化項 $R(\theta)$ としては、パラメータのノルム(norm)を使ったL2ノルム正則化(L2正則化)、L1ノルム正則化(L1正則化)が代表的である。
$R_{L2}(\theta)=\|\theta\|_2^2:=\sum_j\|\theta_j\|^2, \qquad R_{L1}(\theta)=\|\theta\|_1:=\sum_j|\theta_j|$
一般に $L_p$ ノルムは $\|x\|_p=\left(\sum_{i=1}^m|x_i|^p\right)^{1/p}$ と定義される。ニューラルネットワークにおける「Weight Decay(重み減衰)」と呼ばれる正則化はL2ノルムを使った正則化に対応する。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6)
## 正則化のベイズ的解釈
正則化はMAP推定と数学的に一致する。パラメータ $\theta$ の事前分布として平均0・分散 $\sigma^2$ のガウス分布を仮定すると、$\log p(\theta)=-\theta^2/\sigma^2+(\theta$に依存しない項$)$ となり、これはL2ノルム正則化を加えた学習の目的関数と一致する。同様に、事前分布にラプラス分布(正規分布より平均付近で尖った分布)を仮定した場合のMAP推定は、L1ノルムによる正則化と一致する。すなわちMAP推定は「負の対数尤度を損失関数、パラメータの事前確率から導出される正則化項を使った目的関数の最適化問題」と一致する。詳細は[[最尤推定]]を参照。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7)
## 暗黙の正則化との対比
本ページが扱う正則化は目的関数に明示的な正則化項を加える(あるいはデータオーグメンテーションのように明示的な操作を加える)ものだが、これとは別に、確率的勾配降下法(SGD)は明示的な設計なしに汎化性能を上げる「暗黙の正則化効果」を持つことが知られている。SGDの更新に入るノイズが、汎化性能の高いフラットな解への到達を助けると考えられている。詳細は[[暗黙的正則化]]を参照。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6)
## 明示的正則化の具体例(続巻ch.2)
[[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]] §2.3は、本ページが定義するL2正則化(パラメータのノルムに比例したペナルティ)の具体的な実装として「Weight Decay」を挙げ、$\theta_{t+1}=\theta_t-\lambda\theta_t$という更新式でパラメータを原点方向へ引っぱると説明する。バイアス項やバッチ正規化のパラメータには弱めに適用する方が良く、Adamなどのモーメンタム法では勾配項ではなくパラメータへ直接減衰を足し込む実装(AdamW)が有効である。これに加え、入力に対して出力の意味を変えない変換で訓練データを水増しする「データオーグメンテーション」、学習中に各層のユニットをランダムに0にする「[[ドロップアウト]]」を代表的な明示的正則化として挙げる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]] §2.3)
## 横断的知見
- **前巻ch.2が正則化を「目的関数への項の追加」という一般的な数式($L(D,\theta)+CR(\theta)$)で定義するのに対し、続巻ch.2は同じ枠組みに具体的な手法(Weight Decay・データオーグメンテーション・ドロップアウト)を当てはめ、L2正則化とWeight Decayが数学的に同一物であることを明示する**: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6は正則化項$R(\theta)$の一般形とL1/L2ノルムを導入するにとどまるが、[[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]] §2.3は「Weight Decayはパラメータの大きさの2乗に比例したペナルティを目的関数に加える方法であり、パラメータのL2ノルム正則化ということもできる」と明記し、前巻の抽象的な定義と続巻の実装名(Weight Decay)を1本の系譜に統合する。さらに続巻ch.2は宝くじ仮説におけるはずれくじ分の重みを削除する役割もWeight Decayが担うと述べ、明示的正則化(Weight Decay)と陰的正則化([[宝くじ仮説]])が同じ「不要な重みの抑制」という帰結を異なる経路(明示的なペナルティ/学習ダイナミクス)で達成しうることを示唆する。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6, [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]] §2.3)
- **前巻ch.2はデータオーグメンテーションを「過学習を防ぐ2つの方法」のうち『訓練データを増やす』の具体例として位置づけるのに対し、続巻ch.2は同じ手法を『正則化』というより広い枠組みに含める**: 前巻ch.2 §2.3は「訓練データを増やす」と「仮説数を必要最低限に抑える」という2条を並列に挙げ、データオーグメンテーションを前者の具体例とする(本ページの姉妹ページ[[汎化能力]]参照)。続巻ch.2 §2.3は「正則化を汎化性能を上げられる手法すべてと定義している」とした上でデータオーグメンテーションを正則化の一種として扱っており、これは前巻が分けていた「データを増やす」と「モデルを制約する」という2つの過学習対策が、続巻では区別なく同じ「正則化」という語で統一されていることを示す。用語の射程が前巻から続巻にかけて広がっている点に注意が必要。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.3, [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]] §2.3)
## 未解決の問い
- ハイパーパラメータ $C$(正則化の強さ)の選び方は、交差検証以外にどのような指針があるか。前巻ch.2は交差検証への言及がなく、開発データでの調整という一般論にとどまる。続巻ch.2もWeight Decayの強さ$\lambda$の選び方には立ち入っていない。
- 明示的な正則化(L1/L2、データオーグメンテーション)と暗黙の正則化(SGDのノイズ)は、実務上どのように使い分ける、あるいは組み合わせるべきか。
- Weight Decayと宝くじ仮説はどちらも「不要な重みの抑制」に帰着するように見えるが、この2つは同一の効果の異なる記述なのか、独立に効く別々の機構なのか。続巻ch.2でも明示的には検証されていない。
## 関連
- source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] / [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]]
- concept: [[暗黙的正則化]] / [[経験リスク最小化]] / [[最尤推定]] / [[汎化能力]] / [[ドロップアウト]] / [[宝くじ仮説]]
## 出典
- 岡野原大輔, 『ディープラーニングを支える技術』, 技術評論社, 2022, 第2章, §2.6-§2.7.
- 岡野原大輔, 『ディープラーニングを支える技術〈2〉 ニューラルネットワーク最大の謎』, 技術評論社, 2022, 第2章, §2.3.