オーバーフィッティングと正則化

More than 1 year has passed since last update.

本記事では、こちらのサイト を参考にオーバーフィッティング(Overfitting)と、それを克服する正則化(Regularization)について解説します。


オーバーフィッティングと正則化


オーバーフィッティングとは

一般的にトレーニングセットにはノイズが含まれます。学習時にノイズの影響を受けることで、トレーニングセットには適合できるが、未知データには適合できなくなることをオーバーフィッティング過適合といいます。(トレーニングセットにも適合しないことをアンダーフィッティング・高バイアスと言います。)

overfitting.png

対策の例


  • 出力に有効でない変数を減らす。(例えば、他の変数の関数になっているもの)


  • 正則化


正則化

正則化とは、コスト関数に罰則を加えた新しいコスト関数を用いることで、モデルの複雑さを緩和しようとするための手法です。決めるべきパラメータが $\theta = \left(\theta_0, \theta_1, \ldots , \theta_n \right)^T$ であるモデルの従来のコスト関数を $\tilde{\mathrm{Cost}}(\theta)$ とします。例えば、確率変数の大きさという複雑さを緩和する方法が次の正則化1です。

\mathrm{Cost}(\theta) = \tilde{\mathrm{Cost}}(\theta)+ \lambda \sum_{i=1}^{n}\theta_i^2

ここで、 $\lambda (> 0)$ は正則化パラメータと呼ばれます。2 正則化した後は左辺の $\mathrm{Cost}(\theta)$ を最小化する $\theta$ を求めることになります。


正規方程式

トレーニングセット $(x_i, y_i),\ 1 \leq i \leq m$ と $\tilde{x_i} := (1, x_i)^T$ に対して、線形回帰の二乗誤差の正則化問題

\mathrm{Cost}(\theta) = \frac{1}{2m}\sum_{i=1}^m \left( \theta \cdot \tilde{x_i} - y_i \right)^2 + \frac{\lambda}{2m} \sum_{i=1}^{n}\theta_i^2

3

X = 

\left(
\begin{array}{c}
(\tilde{x_0})^T\\
(\tilde{x_1})^T\\
\vdots \\
(\tilde{x_n})^T
\end{array}
\right)

とおくと、解析的に

\theta = \left( X^TX + \lambda

\left(
\begin{array}{cccc}
0&0&\cdots&0\\
0&1&\cdots&0\\
\vdots & \vdots&\ddots & \vdots\\
0 & 0& \cdots&1
\end{array}
\right)
\right)^{-1}X^T y

という解を得ます。これ4を正規方程式(Normal equation)といいます。ただし、 $\lambda = 0$ のときは右辺の $X^TX$ に逆行列の存在が保障されていないことに注意してください。5





  1. この正則化は $L_2$ 正則化、リッジ(Ridge)正則化などと呼ばれます。 



  2. 正則化パラメータが大きすぎると、$\theta_i \approx 0 \ (i\neq 0)$ となり、アンダーフィッティングを生じます。 



  3. 正則化の定義に比べて正則パラメータに $1/2m$ がかかっていますが、 $\lambda$ は任意の正数なので本質的に違いはありません。 



  4. 正確には右辺にある行列 $\left( X^TX + \lambda(行列)\right)$ をこの式の両辺にかけたものが正規方程式と呼ばれます。 



  5. $X^TX$ に逆行列を持たせる操作が正則化の語源になっています。