この記事について
使いどころの多い最小二乗法を基礎からすごく丁寧にまとめていきます.
最小二乗法の前提と表記法
数学の論文を読んでいてとにかく苦痛なことは表記方法が統一されていないことです.論文ごと、ひどいときには同じ論文内で表記がずれているために数式を読み解いていくことが大変です.そこで、この記事でははじめに表記方法を説明していきます.
まず、$x\in \mathbb{R}^n$について説明します.早速、$x\in \mathbb{R}^n$の意味がわからないかと思います.これを日本語で表すと
$n$個の実数の元を持つ数$x$
と、読みます.もっと、わかりやすく言うと$x$は$n$行1列のベクトルという意味です.すなわち、数式では以下のように表せます.
x=
\begin{bmatrix}
x_1 \\
\vdots \\
x_n
\end{bmatrix}
ここに$x_1,\dots,x_n$は$x$の元(要素)です.
次に、$F(x)\in\mathbb{R}^{m}$を説明します.$F(x)\in\mathbb{R}^{m}$を日本語で表すと
$x$を引数と受取り、$m$個の元をもつ関数$F$
と、表せます.$x$のときと同様に、数式で表します.$F(x)$の元を$f_1(x),\dots,f_m(x)$とすると以下のように表せます.
F(x) =
\begin{bmatrix}
f_1(x) \\
\vdots \\
f_m(x)
\end{bmatrix}
以上、最小二乗法の説明で使う主な記号です.次の章からは$x$、$F(x)$に対する操作を表すフロベニウス和、ナブラ、ヤコビアンについて説明します.
フロベニウス和
$x$のフロベニウス和はベクトルの大きさを表します.以下のように表記されます.
||x||
元(各要素)を使ってフロベニウス和を表すと以下のようになります.
||x|| = \sqrt{x_1 ^2+\dots+x_n ^2}= \sqrt{\mathrm{Tr}(x^Tx)}
実際にフロベニウス和を計算に使用する際は、平方根が出てくると面倒なので二乗してしまうことが多いです.
||x||^2 = x_1 ^2+\dots+x_n ^2= \mathrm{Tr}(x^Tx)
ナブラ
$\nabla$は関数の偏微分を表します.困ったことにこの定義が文献によってまちまち.大きな混乱のもとになっています.
この記事では$\nabla$を$F(x)$に作用させた結果を以下のようにここでは定義します.
\nabla F(x)
=
\begin{bmatrix}
\frac{\partial f_1(x)}{\partial x_1} & \cdots & \frac{\partial f_1(x)}{\partial x_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial f_m(x)}{\partial x_1} & \cdots & \frac{\partial f_m(x)}{\partial x_n}
\end{bmatrix}
ヤコビアン
$F(x)$のヤコビアン$J_{F(x)}$を以下のように定義します.
J_{F(x)}
=
\begin{bmatrix}
\frac{\partial f_1(x)}{\partial x_1} & \cdots & \frac{\partial f_m(x)}{\partial x_1} \\
\vdots & \ddots & \vdots \\
\frac{\partial f_1(x)}{\partial x_n} & \cdots & \frac{\partial f_m(x)}{\partial x_n}
\end{bmatrix}
定義を見ればわかるとおり$J_{F(x)}$と $\nabla F(x)$の間には以下の関係があります.
J_{F(x)}=(\nabla F(x))^T
最小二乗法の説明
最小二乗法では$F(x)$を引数とする以下の関数$S(x)$が最小となるような$x$を求めます.
S(x)=\frac{1}{2}||F(x)||^2
すなわち、
x\in \mathbb{R}^n \; s.t. \; S(x)= \frac{1}{2}||F(x)||^2 \rightarrow \min
また、言い換えると「$F(x)$が0ベクトルにできるだけ近くなるような$x$を求める」とも言えます.
最小二乗法の解法
それでは、最小二乗法を解いていきます.はじめの着眼点としては$S(x)$が取りうる値です.フロベニウス和を二乗しているので$F(x)$の元が実数ならば必ず0以上で下に凸となります.したがって、$S(x)$は極小値を取ります.極小値では以下が成り立ちます.
\nabla S(x) =
\begin{bmatrix}
\frac{\partial S(x)}{\partial x_1} \\
\vdots \\
\frac{\partial S(x)}{\partial x_n}
\end{bmatrix}
= 0
このことより、$\nabla S(x)$の値を求める必要があることがわかります.それでは、$S(x)$の定義式に基づいて$\nabla S(x)$を求めていきます.
\nabla S(x) = \frac{1}{2}\nabla ||F(x)||^2
$||F(x)||^2$を展開すると以下のようになります.
\nabla S(x) = \frac{1}{2}\nabla ||F(x)||^2 = \frac{1}{2}\sum _{i=1}^n \nabla f_i(x)^2 \\
= \frac{1}{2} \sum _{i=1}^n 2f_i(x)\nabla f_i(x) \\
= \sum _{i=1}^n f_i(x)\nabla f_i(x) \\
= (\nabla F(x))^T F(x) \\
= 0
ヤコビアン$J_{F(x)}$の定義より
\nabla S(x) = J_{F(x)}F(x)=0
このことより、$S(x) \rightarrow \min $となる時、
J_{F(x)}F(x)=0
と、なることがわかります.
線形最小二乗法
線形最小二乗法では$F(x)$を以下のように定義します.
F(x)=Ax-b
これを$J_{F(x)}F(x)=0$に代入していきます.まず、$J_{F(x)}$を計算します.
J_{F(x)}=(\nabla F(x))^T \\
= (\nabla (Ax+b))^T \\
= A^T
したがって、$J_{F(x)}F(x)=0$は
J_{F(x)}F(x)=A^T(Ax+b)=0 \\
A^TAx-A^Tb=0 \\
x=(A^TA)^{-1}A^Tb
補足ですが、$(A^TA)^{-1}A^T$は疑似逆行列、または、MP逆行列と呼ばれ$A^+$で表されます.MP逆行列の詳細についてはまた後日まとめます.