naru.jpn.com/wordpress

Programming, Computing etc.

正規方程式の連立偏微分方程式からの導出

最近 Andrew Ng の機械学習の講座を見ています. 目的関数と最急降下法の説明は丁寧でしたが, 正規方程式(Normal equation)の紹介は唐突感がありました. 正規方程式の表式を, 最急降下法で使われていた連立偏微分方程式から導いてみます.

目的

表式

\[
\theta = (X^{\mathrm{T}} X )^{-1} X^{\mathrm{T}} y
\]

を導く.

前提

目的関数として,

\[
J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}\left( h_{\theta}(x^{(i)}) – y^{(i)} \right)^{2}, ~~~h_{\theta}(x^{(i)}) = \sum_{k=0}^{n}\theta_{k}x_{k}^{(i)}
\]

を考える. \(J(\theta)\) を小さくする \(\theta\) の組を見つけたい. 最急降下法では, \(J(\theta)\) が極小値をとるようなパラメータを探していくのだった. 例えば, \(\theta_{j}\) については,

\[
\frac{\partial J(\theta)}{\partial\theta_{j}} = 0
\]

となるような \(\theta_{j}\) を計算する. 全てのパラメータについて, 同時に極小値をとるような \(\theta\) を見つけたい.

\[
\begin{eqnarray}
\left\{
\begin{array}{l}
\displaystyle \frac{\partial J(\theta)}{\partial\theta_{0}} = 0 \\
\displaystyle \frac{\partial J(\theta)}{\partial\theta_{1}} = 0 \tag{1} \\
\displaystyle \vdots \\
\displaystyle \frac{\partial J(\theta)}{\partial\theta_{n}} = 0
\end{array}
\right.
\end{eqnarray}
\]

偏微分方程式の展開

(1)式で\(\theta_{j}\)について考え, 式を展開していく.

\[
\begin{array}{rcl}
\displaystyle \frac{\partial J(\theta)}{\partial\theta_{j}} &=& \displaystyle \frac{1}{2m}\frac{\partial}{\partial\theta_{j}}\sum_{i=1}^{m}\left( h_{\theta}(x^{(i)}) – y^{(i)} \right)^{2} \\
&=& \displaystyle \frac{1}{2m}\sum_{i=1}^{m} \frac{\partial}{\partial\theta_{j}} \left( h_{\theta}(x^{(i)}) – y^{(i)} \right)^{2} \\
&=& \displaystyle \frac{1}{2m}\sum_{i=1}^{m} 2 \left( h_{\theta}(x^{(i)}) – y^{(i)} \right) x_{j}^{(i)} \\
&=& \displaystyle \frac{1}{m}\sum_{i=1}^{m} \left( h_{\theta}(x^{(i)}) – y^{(i)} \right) x_{j}^{(i)} \\
&=& \displaystyle \frac{1}{m} \left( \underline{\sum_{i=1}^{m} h_{\theta}(x^{(i)}) x_{j}^{(i)}}_{(\beta)} – \underline{\sum_{i=1}^{m} y^{(i)} x_{j}^{(i)}}_{(\alpha)} \right) \tag{2} \\
\end{array}
\]

ただし,

\[
\frac{\partial}{\partial\theta_{j}} h_{\theta}(x^{(i)}) = \frac{\partial}{\partial\theta_{j}} \left( \theta_{0}x_{0} + \theta_{1}x_{1} + \cdots + \theta_{n}x_{n} \right) = x_{j}^{(i)}
\]

なので

\[
\frac{\partial}{\partial\theta_{j}} \left( h_{\theta}(x^{(i)}) – y^{(i)} \right)^{2} = 2 \left( h_{\theta}(x^{(i)}) – y^{(i)} \right) x_{j}^{(i)}
\]

となることを用いている.

(1)式より \(\frac{\partial J(\theta)}{\partial\theta_{j}} = 0\) であるから, \(\theta_{j}\)について

\[
\sum_{i=1}^{m} h_{\theta}(x^{(i)}) x_{j}^{(i)} – \sum_{i=1}^{m} y^{(i)} x_{j}^{(i)} = 0 \tag{3}
\]

が成り立つ.

和の部分の行列表現

(2)式中の下線部 \((\alpha)\) について考える. \(i\) についての和をあらわに書くと.

\[
(\alpha) = \sum_{i=1}^{m} y^{(i)} x_{j}^{(i)} = x_{j}^{1}y^{1} + x_{j}^{2}y^{2} + \cdots + x_{j}^{m}y^{m}
\]

となり, これは行列で

\[
\begin{pmatrix} x_{j}^{1} & x_{j}^{2} & \cdots & x_{j}^{m} \end{pmatrix} \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix} \tag{4}
\]

と書ける. 下線部 \((\beta)\) についても, 添え字に注意して同様に和を展開していくと,

\[
\begin{array}{rcl}
(\beta) &=& \displaystyle \sum_{i=1}^{m} h_{\theta}(x^{(i)}) x_{j}^{(i)} \\
&=& \displaystyle \sum_{i=1}^{m} \left( \sum_{k=0}^{n}\theta_{k}x_{k}^{(i)} \right) x_{j}^{(i)} \\
&=& \displaystyle \sum_{i=1}^{m} \left( \theta_{0}x_{0}^{(i)} + \theta_{1}x_{1}^{(i)} + \cdots + \theta_{n}x_{n}^{(i)} \right) x_{j}^{(i)} \\
&=& \displaystyle \left( \theta_{0}x_{0}^{(1)} + \theta_{1}x_{1}^{(1)} + \cdots + \theta_{n}x_{n}^{(1)} \right) x_{j}^{(1)} + \left( \theta_{0}x_{0}^{(2)} + \theta_{1}x_{1}^{(2)} + \cdots + \theta_{n}x_{n}^{(2)} \right) x_{j}^{(2)} + \left( \theta_{0}x_{0}^{(m)} + \theta_{1}x_{1}^{(m)} + \cdots + \theta_{n}x_{n}^{(m)} \right) x_{j}^{(m)}
\end{array}
\]

となり, これは行列で

\[
\begin{pmatrix} x_{j}^{(1)} & x_{j}^{(2)} & \cdots & x_{j}^{(m)} \end{pmatrix} \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix} \tag{5}
\]

と書ける.

(3),(4),(5)式から, \(\theta_{j}\)について,

\[
\begin{pmatrix} x_{j}^{(1)} & x_{j}^{(2)} & \cdots & x_{j}^{(m)} \end{pmatrix} \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix} ~-~
\begin{pmatrix} x_{j}^{1} & x_{j}^{2} & \cdots & x_{j}^{m} \end{pmatrix} \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix} = 0 \tag{6}
\]

となる.

再び, 連立

\(\theta_{0}\)について考えると, (6)式を参考にして

\[
\begin{pmatrix} x_{0}^{(1)} & x_{0}^{(2)} & \cdots & x_{0}^{(m)} \end{pmatrix} \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix} ~-~
\begin{pmatrix} x_{j}^{1} & x_{j}^{2} & \cdots & x_{j}^{m} \end{pmatrix} \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix} = 0
\]

であるが, ここで各項の左端の行列の形式を変える.

\[
\begin{pmatrix} x_{0}^{(1)} & x_{0}^{(2)} & \cdots & x_{0}^{(m)} \\ 0 & 0 & \cdots & 0 \\ \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \cdots & 0 \end{pmatrix} \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix} ~-~
\begin{pmatrix} x_{0}^{(1)} & x_{0}^{(2)} & \cdots & x_{0}^{(m)} \\ 0 & 0 & \cdots & 0 \\ \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \cdots & 0 \end{pmatrix} \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix} = 0
\]

\(\theta_{1}\), \(\theta_{n}\) についてはそれぞれ以下のようにする.

\[
\begin{pmatrix} 0 & 0 & \cdots & 0 \\ x_{1}^{(1)} & x_{1}^{(2)} & \cdots & x_{1}^{(m)} \\ \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \cdots & 0 \end{pmatrix} \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix} ~-~
\begin{pmatrix} 0 & 0 & \cdots & 0 \\ x_{1}^{(1)} & x_{1}^{(2)} & \cdots & x_{1}^{(m)} \\ \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \cdots & 0 \end{pmatrix} \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix} = 0
\]

\[
\begin{pmatrix} 0 & 0 & \cdots & 0 \\ 0 & 0 & \cdots & 0 \\ \vdots & \ddots & \vdots & \vdots \\ x_{n}^{(1)} & x_{n}^{(2)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix} ~-~
\begin{pmatrix} 0 & 0 & \cdots & 0 \\ 0 & 0 & \cdots & 0 \\ \vdots & \ddots & \vdots & \vdots \\ x_{n}^{(1)} & x_{n}^{(2)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix} = 0
\]

これらを連立させて足し合わせることで, 以下の式を得る.

\[
\begin{pmatrix} x_{0}^{(1)} & x_{0}^{(2)} & \cdots & x_{0}^{(m)} \\ x_{1}^{(1)} & x_{1}^{(2)} & \cdots & x_{1}^{(m)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{n}^{(1)} & x_{n}^{(2)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix} ~-~
\begin{pmatrix} x_{0}^{(1)} & x_{0}^{(2)} & \cdots & x_{0}^{(m)} \\ x_{1}^{(1)} & x_{1}^{(2)} & \cdots & x_{1}^{(m)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{n}^{(1)} & x_{n}^{(2)} & \cdots & x_{n}^{(m)} \end{pmatrix} \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix} = 0 \tag{7}
\]

正規方程式の表式

\(X\), \(\theta\), \(y\) を定義する.

\[
X = \begin{pmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)} \\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)} \\ \vdots & \ddots & \vdots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix}
\]

\[
\theta = \begin{pmatrix} \theta_{0} \\ \theta_{1} \\ \vdots \\ \theta_{n} \end{pmatrix}
\]

\[
y = \begin{pmatrix} y^{1} \\ y^{2} \\ \vdots \\ y^{m} \end{pmatrix}
\]

(7)式は以下のように書くことができる.

\[
X^{\mathrm{T}} X \theta – X^{\mathrm{T}} y = 0
\]

\(X^{\mathrm{T}} X\) の(一般)逆行列を左から掛ける.

\[
\theta = (X^{\mathrm{T}} X )^{-1} X^{\mathrm{T}} y
\]

目的の表式を得た.