演習1.2 [PRML]

問題文

{ \displaystyle 
E(\bf{\omega}) = \frac{1}{2} \sum_{n=1}^N \{ y(x_n, \bf{\omega}) - t_n \}^2 + \frac{\lambda}{2} ||\bf{\omega}||^2 \tag{1.4}
}

正則化された二乗和誤差関数(1.4)を最小にする係数  \omega_i が満たす,(1.122)に類似した線形方程式を書き下せ。

※式(1.122)については前問を参照。


解釈

演習1.1 の関連問題です。

演習1.1 では、ある実数列  \{t_1, t_2, \ldots t_N\}多項式(1.1)で近似するときに、目標値との二乗和誤差を最小にするような係数  \bf{\omega} を考えました。

しかしこの方法には、ある欠点があります。
それは、データの数に対してモデルの表現力が高すぎると、学習データそのものに対して適合しすぎてしまい、汎化能力を失っているのです。これを過学習と呼びます。

極端な例としては、多項式の次数がデータ点の数を超えてしまった場合が考えられます。 この場合、すべての点を通る多項式を立てることができるので、学習データの誤差関数は 0 になります。
しかし、モデルの汎化能力は下がっているため、同じ分布から生成されたテストデータとの誤差を測ってみると、誤差が大きくなってしまうことがあります。

これを避けるテクニックが、誤差関数の正則化です。これは、誤差関数に罰金(penalty)項を付加することによって、係数が大きな値になるのを防ごうとするものです。 たとえば式(1.4)のように、誤差関数に  ||\bf{\omega}||^2 を足すと、モデルの係数が極端な値を取りづらくなります。
このようなテクニックを縮小推定と呼び、特に 2 次の正則化の場合はリッジ回帰と呼ばれます。

今回は、リッジ回帰の問題を解いていきます。


解いてみる

まず、式(1.4)に式(1.1)を代入する。

{ \displaystyle 
E(\bf{\omega}) = \frac{1}{2} \sum_{n=1}^N \left\{ \sum_{j=0}^M \omega_j x_n^j - t_n \right\}^2 + \frac{\lambda}{2} ||\bf{\omega}||^2 \tag{1.2.1}
}

誤差関数  E が最小値をとるには、 \frac{\delta E}{\delta \bf{\omega}} = 0 が必要なので、前問同様ベクトルの微分を考えると、ある  i について、合成関数の微分より、以下が成り立つ。

{ \displaystyle 
\begin{eqnarray}
\frac{\delta E}{\delta \omega_i}
& = & \sum_{n=1}^N \left\{ \sum_{j=0}^M \omega_j x_n^j - t_n \right\} \frac{\delta}{\delta \omega_i} \left\{ \sum_{j=0}^M \omega_j x_n^j - t_n \right\} + \lambda ||\bf{\omega}|| \frac{\delta}{\delta \omega_i}||\bf{\omega}|| \\
& = & \sum_{n=1}^N \left\{ \sum_{j=0}^M \omega_j x_n^j - t_n \right\} \omega_i + \lambda ||\bf{\omega}|| \frac{\delta}{\delta \omega_i}\sqrt{\omega_0^2 + \cdots + \omega_M^2} \\
& = & \sum_{n=1}^N \left\{ \sum_{j=0}^M \omega_j x_n^j - t_n \right\} \omega_i + \lambda ||\bf{\omega}|| \cdot \frac{1}{2||\bf{\omega}||} \frac{\delta}{\delta \omega_i} (\omega_0^2 + \cdots + \omega_M^2) \\
& = & \sum_{n=1}^N \left\{ \sum_{j=0}^M \omega_j x_n^j - t_n \right\} \omega_i + \lambda \omega_i \tag{1.2.2}
\end{eqnarray}
}

式変形については、演習1.1 と共通の部分が多いので省略した。

ここで、 \frac{\delta E}{\delta \bf{\omega}} = 0 なので、式(1.2.2)より、以下が成立。

{ \displaystyle 
\sum_{n=1}^N \left\{ \sum_{j=0}^M \omega_j x_n^j - t_n \right\} \cdot x_n^i + \lambda \omega_i  = 0 \tag{1.2.3}
}

移項して整理すると、

{ \displaystyle 
\sum_{j=0}^M \sum_{n=1}^N (x_n)^{i+j} \omega_j = \sum_{n=1}^N (x_n)^i t_n - \lambda \omega_i \tag{1.2.4}
}

演習1.1 の式(1.123)より、左辺と右辺をまとめると、以下のようになる。

{ \displaystyle 
\sum_{j=0}^M A_{ij} \omega_j = T_i - \lambda \omega_i \tag{1.2.5}
}

したがって、式(1.122)に類似した線形方程式が導かれた。

まとめ

問題自体は演習1.1 の延長線上だったので、前問が解けていればスムーズだったかもしれません。

本文では、過学習のところで具体例を出して説明してくれていたので、非常にわかりやすかったです。本を持っている方は読んでみてください。

以降の問題もちらっとみましたが、序章の基本問題はそれほど難しくもなさそうだったので、早いペースで進みたいなと思いました。

それでは、おかしな点などありましたら、指摘等お待ちしております。

ではでは!

PRML 演習まとめ