ベクトルの微分の計算方法(紙と鉛筆で)を前回書いたので、ここでは、本来の目的であった、最小二乗法の整理について書いてみる。
関数の最小化(復習)
ベクトル$x$に対して実数を出力する関数$F(x)$を考える。この関数を最小化したいとする。また、この関数は$x$に関して下に凸であるとする。このとき、ある$x_0$の周りで、
F(\boldsymbol{x}_0+d\boldsymbol{x}) = F(\boldsymbol{x}_0) + dx^t \boldsymbol{d} + \frac{1}{2} d\boldsymbol{x}^t \boldsymbol{H}(x_0) d\boldsymbol{x} + o(|d\boldsymbol{x}|^2)
ここで
\boldsymbol{d}(x) = \frac{d}{dx} F(x) |_{x_0} \\
\boldsymbol{H}(x) = \frac{d}{dx^t}\frac{d}{dx} F(x) |_{x_0}
ここで$dx$について傾きが0になるところを探す。$\frac{d}{d(dx)} F(x_0+dx) = 0$より
\boldsymbol{d}+\boldsymbol{H} dx = \boldsymbol{0}
より$d\boldsymbol{x}=-\boldsymbol{H}^{-1}\boldsymbol{d}$であるので、
\boldsymbol{x} \leftarrow \boldsymbol{x} - \boldsymbol{H}^{-1}\boldsymbol{d}
を繰り返せばよい。
- 確認
とりあえず例として $f(x)=\sum_{n=1}^N |y_n - x|^2$を考えてみよう。
d(x)=\frac{d}{dx} f(x) = -2\sum_n (y_n - x)\\
H(x)=\frac{d^2}{dxdx} f(x) = 2\sum_n I_N
より$x_0$からの更新式は
\boldsymbol{x} \leftarrow \boldsymbol{x}_0 - \frac{1}{2N}\boldsymbol{I} \cdot (-2)\sum_n (\boldsymbol{y}_n - \boldsymbol{x}_0) = \frac{1}{N} \sum_n \boldsymbol{y}_n
確かに合っていそう。
非線形関数の最小二乗法
そこでベクトルを実数に変換する非線形関数$y=f(x|\theta)$の最小二乗法を考えてみる。今、$l_n (\boldsymbol{\theta})= y_n - f(x_n|\boldsymbol{\theta})$と置き、
F(\boldsymbol{\theta}) = \sum_n l_n^2
と置くと
\boldsymbol{d}(\boldsymbol{\theta}) = \sum_n l_n \frac{\partial l_n}{\partial \boldsymbol{\theta}} \\
\boldsymbol{H}(\boldsymbol{\theta}) = \sum_n \left[ \left(\frac{\partial l_n}{\partial \boldsymbol{\theta}}\right)^t \left(\frac{\partial l_n}{\partial \boldsymbol{\theta}}\right) + l_n \left(\frac{\partial^2 l_n}{\partial \boldsymbol{\theta}^2}\right) \right]
何度も出てくるこの部分は$\frac{\partial}{\partial \theta} l_n = - \frac{\partial}{\partial \theta} f(x_n|\theta)$である。
-
1次元で$y_n=x_n+\theta$
- $\frac{\partial}{\partial \theta} l_n = -1$である。
-
n次元で $y_n = |\boldsymbol{x}_n - \boldsymbol{\theta}|$の場合
- $\frac{\partial}{\partial \theta} l_n = \frac{\boldsymbol{x}_n - \boldsymbol{\theta}}{|\boldsymbol{x}_n - \boldsymbol{\theta}|}$という単位ベクトルになる。$\boldsymbol{H}$も計算できる。
-
n次元ベクトルで $y_n = |\boldsymbol{x}_n - \boldsymbol{\theta}|^2$の場合
- も計算できる。
計算できるものはいずれも手元のノートにあるが、書くのが面倒なので省略。
最も素直な定式化だと思うのだが、対応する参考ページでよいものが見つからなかった。orz