はじめに
『パターン認識と機械学習』の独学時のまとめです。一連の記事は「数式の行間埋め」または「R・Pythonでのスクラッチ実装」からアルゴリズムの理解を補助することを目的としています。本とあわせて読んでください。
この記事は、3.1.4項「正則化最小二乗法」の内容です。リッジ回帰(Ridge回帰)を導出します。
【実装編】
www.anarchive-beta.com
www.anarchive-beta.com
【前節の内容】
www.anarchive-beta.com
【他の節一覧】
www.anarchive-beta.com
【この節の内容】
3.1.4 リッジ回帰の導出
過学習を防ぐために線形基底関数モデルに正則化項を導入します。線形基底関数モデルについては「3.1.1:最尤推定と最小二乗法の導出【PRMLのノート】 - からっぽのしょこ」を参照してください。
・モデルの設定
最小二乗法では、二乗和誤差関数$E_D(\mathbf{w})$を最小化(尤度関数を最大化)するパラメータ$\mathbf{w}$を考えました。
$$
E_D(\mathbf{w})
= \frac{1}{2}
\sum_{n-1}^N \Bigl\{
t_n - \mathbf{w}^{\top} \boldsymbol{\phi}(\mathbf{x}_n)
\Bigr\}^2
\tag{3.26}
$$
ここで、入力変数$\mathbf{X} = \{\mathbf{x}_1, \mathbf{x}_2, \cdots, \mathbf{x}_N\}$、$\mathbf{x}_n = (x_{n,1}, x_{n,2}, \cdots, x_{n,D})^{\top}$、目標値$\mathbf{t} = \{t_1, t_2, \cdots, t_N\}$、基底関数$\boldsymbol{\phi}(\mathbf{x}_n) = (\phi_0(\mathbf{x}_n), \phi_1(\mathbf{x}_n), \cdots, \phi_{M-1}(\mathbf{x}_n))^{\top}$、重みパラメータ$\mathbf{w} = (w_0, w_1, \cdots, w_{M-1})^{\top}$です。ただし、$\phi_0(\mathbf{x}) = 1$とすることで$w_0 = w_0 \phi_0(\mathbf{x})$とし、$w_0$をバイアスと呼びます。
正則化最小二乗法では、正則化項$E_W(\mathbf{w})$を導入します。
$$
E_W(\mathbf{w})
= \frac{1}{q}
\sum_{j=0}^{M-1}
|w_j|^q
$$
$|w_j|$は$w_j$の絶対値です。
二乗和誤差$E_D(\mathbf{w})$に正則化項$E_W(\mathbf{w})$を加えたものを誤差関数$E(\mathbf{w})$とします。
$$
\begin{align}
E(\mathbf{w})
&= E_D(\mathbf{w})
+ \lambda E_W(\mathbf{w})
\tag{3.24}\\
&= \frac{1}{2}
\sum_{n-1}^N \Bigl\{
t_n - \mathbf{w}^{\top} \boldsymbol{\phi}(\mathbf{x}_n)
\Bigr\}^2
+ \frac{\lambda}{q}
\sum_{j=0}^{M-1}
|w_j|^q
\tag{3.29}
\end{align}
$$
ここで、$\lambda$は正則化項の影響を調整する正則化係数です。
誤差関数に正則化項を含めることで、誤差を小さくしつつパラメータの値も小さくすることが期待できます。
・リッジ回帰の最尤解の導出
$q = 2$の場合、正則化項がL2ノルムに対応した式になります。このとき、リッジ回帰(Ridge回帰)またはL2正則化と呼びます。L2ノルムについては「【R】3.1.4.0:Lpノルムの作図【PRMLのノート】 - からっぽのしょこ」を参照してください。
$q = 2$のとき、正則化項は
$$
E_W(\mathbf{w})
= \frac{1}{2}
\sum_{j=0}^{M-1}
|w_j|^2
= \frac{1}{2}
\sum_{j=0}^{M-1}
w_j^2
= \frac{1}{2}
\mathbf{w}^{\top} \mathbf{w}
= \frac{1}{2}
\|\mathbf{w}\|_2^2
\tag{3.25}
$$
と変形できます。$|x|^2 = x^2$です。また、$\mathbf{w}^{\top} \mathbf{w}$はL2ノルム$\|\mathbf{w}\|_2$の2乗です。
よって、誤差関数は
$$
\begin{align}
E_{\mathrm{Ridge}}(\mathbf{w})
&= E_D(\mathbf{w})
+ \lambda E_W(\mathbf{w})
\tag{3.24}\\
&= \frac{1}{2}
\sum_{n-1}^N \Bigl\{
t_n - \mathbf{w}^{\top} \boldsymbol{\phi}(\mathbf{x}_n)
\Bigr\}^2
+ \frac{\lambda}{2}
\mathbf{w}^{\top} \mathbf{w}
\tag{3.27}
\end{align}
$$
となります。
次に、誤差関数(3.27)を最小化する重みパラメータ$\mathbf{w}_{\mathrm{Ridge}}$を求めます。
$\mathbf{w}$に関して誤差関数を微分します。
$$
\begin{aligned}
\frac{\partial}{\partial \mathbf{w}}
E_{\mathrm{Ridge}}(\mathbf{w})
&= \frac{\partial}{\partial \mathbf{w}} \Bigl\{
E_D(\mathbf{w})
+ \lambda E_W(\mathbf{w})
\Bigr\}
\\
&= \frac{\partial}{\partial \mathbf{w}}
E_D(\mathbf{w})
+ \lambda
\frac{\partial}{\partial \mathbf{w}}
E_W(\mathbf{w})
\end{aligned}
$$
この式を具体的な式に置き替えると次のようになります。
$$
\begin{aligned}
\frac{\partial}{\partial \mathbf{w}}
E_{\mathrm{Ridge}}(\mathbf{w})
&= \frac{\partial}{\partial \mathbf{w}} \left\{
\frac{1}{2}
\sum_{n=1}^N \Bigl(
t_n - \mathbf{w}^{\top} \boldsymbol{\phi}(\mathbf{x}_n)
\Bigr)^2
+ \frac{\lambda}{2}
\mathbf{w}^{\top} \mathbf{w}
\right\}
\\
&= \frac{1}{2}
\frac{\partial}{\partial \mathbf{w}} \left\{
\sum_{n=1}^N \Bigl(
t_n - \mathbf{w}^{\top} \boldsymbol{\phi}(\mathbf{x}_n)
\Bigr)^2
\right\}
+ \frac{\lambda}{2}
\frac{\partial}{\partial \mathbf{w}} \Bigl\{
\mathbf{w}^{\top} \mathbf{w}
\Bigr\}
\end{aligned}
$$
前の微分は、3.1.1項で求めた誤差関数$E_D(\mathbf{w})$の微分なので
$$
\frac{\partial}{\partial \mathbf{w}}
E_D(\mathbf{w})
= \frac{\partial}{\partial \mathbf{w}} \left\{
\frac{1}{2}
\sum_{n=1}^N \Bigl(
t_n - \mathbf{w}^{\top} \boldsymbol{\phi}(\mathbf{x}_n)
\Bigr)^2
\right\}
= - \sum_{n=1}^N
\Bigl(
t_n - \mathbf{w}^{\top} \phi(\mathbf{x}_n)
\Bigr)
\phi(\mathbf{x}_n)
$$
です。
また、後の微分は、$\frac{\partial \mathbf{x}^{\top} \mathbf{x}}{\partial \mathbf{x}} = \mathbf{x} + \mathbf{x} = 2 \mathbf{x}$なので
$$
\lambda
\frac{\partial}{\partial \mathbf{w}}
E_W(\mathbf{w})
= \frac{\lambda}{2}
\frac{\partial}{\partial \mathbf{w}} \Bigl\{
\mathbf{w}^{\top} \mathbf{w}
\Bigr\}
= \lambda \mathbf{w}
$$
となります。
よって、それぞれ置き換えると
$$
\frac{\partial}{\partial \mathbf{w}}
E_{\mathrm{Ridge}}(\mathbf{w})
= - \sum_{n=1}^N
\Bigl(
t_n - \mathbf{w}^{\top} \phi(\mathbf{x}_n)
\Bigr)
\phi(\mathbf{x}_n)
+ \lambda \mathbf{w}
$$
となります。
$\mathbf{w}$に関する微分$\frac{\partial}{\partial \mathbf{w}} E_{\mathrm{Ridge}}(\mathbf{w})$を$M$次元のゼロベクトル$\mathbf{0} = (0, \cdots, 0)^{\top}$とおき、$\mathbf{w}$について解きます。
$$
\begin{aligned}
\frac{\partial}{\partial \mathbf{w}}
E_{\mathrm{Ridge}}(\mathbf{w})
= - \sum_{n=1}^N
\Bigl(
t_n - \mathbf{w}^{\top} \phi(\mathbf{x}_n)
\Bigr)
\phi(\mathbf{x}_n)
+ \lambda \mathbf{w}
&= \mathbf{0}
\\
\Rightarrow
\sum_{n=1}^N
\Bigl(
\mathbf{w}^{\top} \phi(\mathbf{x}_n)
\Bigr)
\phi(\mathbf{x}_n)
+ \lambda \mathbf{w}
&= \sum_{n=1}^N
t_n \phi(\mathbf{x}_n)
\end{aligned}
$$
3.1.1項で確認した$\sum_{n=1}^N \mathbf{w}^{\top} \phi(\mathbf{x}_n) \phi(\mathbf{x}_n) = \sum_{n=1}^N \phi(\mathbf{x}_n) \phi(\mathbf{x}_n)^{\top} \mathbf{w}$、$\sum_{n=1}^N \phi(\mathbf{x}_n) \phi(\mathbf{x}_n)^{\top} = \boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}$、$\sum_{n=1}^N t_n \phi(\mathbf{x}_n) = \boldsymbol{\Phi}^{\top} \mathsf{t}$で置き換えます。$\boldsymbol{\Phi}$は計画行列(3.16)です。
$$
\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}
\mathbf{w}
+ \lambda \mathbf{w}
= \boldsymbol{\Phi}^{\top} \mathsf{t}
$$
左辺について、$\mathbf{w}$を括り出します。
$$
\Bigl(
\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}
+ \lambda \mathbf{I}
\Bigr)
\mathbf{w}
= \boldsymbol{\Phi}^{\top} \mathsf{t}
$$
さらに、両辺に$\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi} + \lambda \mathbf{I}$の逆行列$(\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi} + \lambda \mathbf{I})^{-1}$を左から掛けると、左辺は$\mathbf{w}$のみが残ります。
$$
\mathbf{w}
= \Bigl(
\lambda \mathbf{I}
+ \boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}
\Bigr)^{-1}
\boldsymbol{\Phi}^{\top} \mathsf{t}
\equiv
\mathbf{w}_{\mathrm{Ridge}}
\tag{3.28}
$$
パラメータ$\mathbf{w}$の最尤推定量$\mathbf{w}_{\mathrm{Ridge}}$が得られました。
参考文献
- C.M.ビショップ著,元田 浩・他訳『パターン認識と機械学習 上下』,丸善出版,2012年.
おわりに
これがリッジ回帰ってことでいいんだよね?それとも最尤推定版リッジ回帰とでも言えばいいのかな?あんまりよく分かってない。
【次節の内容】
www.anarchive-beta.com