1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

非線形関数の最小二乗法の計算方法

Posted at

ベクトルの微分の計算方法(紙と鉛筆で)を前回書いたので、ここでは、本来の目的であった、最小二乗法の整理について書いてみる。

関数の最小化(復習)

ベクトル$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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?