からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

3.1.4.a:リッジ回帰の導出【PRMLのノート】

はじめに

 『パターン認識と機械学習』の独学時のまとめです。一連の記事は「数式の行間埋め」または「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