機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

最小二乗法の解の導出

線形回帰の最小二乗法による解を導出します。

N個の訓練データ (x_0,t_0),(x_1,t_1),\ldots,(x_{N-1},t_{N-1})を、M-1次多項式


y=w_{0}+w_{1}x+w_{2}x^{2}+\cdots+w_{M-1}x^{M-1}\tag{1}

で近似することを考えます。 ここで二乗和誤差


E (\mathbf{w})= \displaystyle \frac{1}{2} \sum_{i=0}^{N-1}(y_i-t_i)^2 \tag{2}

を最小にする係数 \mathbf{w}を求めることが目標です。なぜ二乗和誤差を計算するのか?は最小二乗法はなぜ二乗和誤差(残差平方和)を計算するのかに書いてあります。二乗和誤差Eは下に凸なので、偏微分係数が0になるところが最小値となります。よって、式(2)をw_iについて偏微分していけば解が求められますが、M個の係数をまとめて扱ったほうがスマートに導出できます。なお1/2は、計算をきれいするためだけにかかっているもので、本質的なものではありません。あってもなくても導かれる解は一緒です。

式(1)の多項式は、 \mathbf{x} = (x^{0},x^{1},\ldots,x^{M-1})^{T},\mathbf{w} = (w_{0},w_{1},\ldots,w_{M-1})^{T}とすれば、行列の積を用いて


y = \mathbf{w}^{T}\mathbf{x}\tag{3}

と書けます。さらにN個の訓練データをまとめて表せば、


  \mathbf{y} =  \left(
    \begin{array}{c}
      y_{0}\\
      y_{1} \\
      \vdots \\
      y_{N-1}
    \end{array}
  \right)
= \left(
    \begin{array}{cccc}
      x_{0}^{0} & x_{0}^{1} & \ldots & x_{0}^{M-1} \\
      x_{1}^{0} & x_{1}^{1} & \ldots & x_{1}^{M-1} \\
      \vdots & \vdots & \ddots & \vdots \\
      x_{N-1}^{0} & x_{N-1}^{1} & \ldots & x_{N-1}^{M-1}
    \end{array}
  \right)
 \left(
    \begin{array}{c}
      w_{0}\\
      w_{1} \\
      \vdots \\
      w_{M-1}
    \end{array}
  \right)
 \tag{4}

となります。ここで、x_{n}^{m}を並べたN×Mの行列を\mathbf Xで表すこととします。すると式(2)の二乗和誤差は、


E(\mathbf{w}) = \displaystyle \frac{1}{2} \|\mathbf X \mathbf w - \mathbf t \|^2 \tag{5}

と書けます。これがなぜ二乗和になるのかは、ベクトルのノルムベクトルの内積と2乗和より、ベクトルのノルムの二乗は、各要素の二乗和に等しいことが確認できます。もちろん \mathbf{X} \mathbf{w} - \mathbf{t} で得られるベクトルの各要素は、予測値と訓練データの誤差です。式(5)を、転置行列の定理ベクトルのノルムの式(5)を使って展開していくと、


\begin{eqnarray*}
E(\mathbf{w}) &=& \displaystyle \frac{1}{2} \|\mathbf X \mathbf w - \mathbf t \|^2 \\
&=& \displaystyle \frac{1}{2} (\mathbf{X} \mathbf{w} - \mathbf{t})^{T}(\mathbf{X} \mathbf{w} - \mathbf{t}) \tag{6} \\
&=& \displaystyle \frac{1}{2} (\mathbf{w}^{T} \mathbf{X}^{T} - \mathbf{t}^{T})(\mathbf{X} \mathbf{w} - \mathbf{t}) \tag{7} \\
&=& \displaystyle \frac{1}{2}(\mathbf{w}^{T}\mathbf{X}^{T}\mathbf{X}\mathbf{w} -\mathbf{w}^{T}\mathbf{X}^{T}\mathbf{t} - \mathbf{t}^{T}\mathbf{X}\mathbf{w} + \|\mathbf{t}\|^2 ) \tag{8} \\
\end{eqnarray*}

となります。ここで、ベクトルの微分の式(2)、(8)より、


\begin{eqnarray*}
\displaystyle \frac{\partial E(\mathbf{w})}{\partial \mathbf{w}}  &=& \displaystyle \frac{1}{2} (\mathbf{X}^{T}\mathbf{X}+(\mathbf{X}^{T}\mathbf{X})^{T} )\mathbf{w}  - \mathbf{X}^{T}\mathbf{t}\tag{9} \\
&=&  \mathbf{X}^{T}\mathbf{X}\mathbf{w} - \mathbf{X}^{T}\mathbf{t} \tag{10}

\end{eqnarray*}

となります。式(8)の\mathbf{t}^{T}\mathbf{X}\mathbf{w} は、 (\mathbf{X}^{T}\mathbf{t})^{T}\mathbf{w}と変形し、 \mathbf{X}^{T}\mathbf{t}が列ベクトルの形になっていますので、ベクトルの微分の式(2)から計算できます。

よって、 \displaystyle \frac{\partial E(\mathbf{w})}{\partial \mathbf{w}} = 0となるのは、


\mathbf{w} = (\mathbf{X}^{T}\mathbf{X})^{-1} \mathbf{X}^{T}\mathbf{t} \tag{11}

のときです。

参考書は初歩的な説明はせずにどんどん進んでいくことが多いので、全ての式変形を理解するのが大変でした。このレベルでこんな調子だと、どこかで致命的につまづくときが来そうですが、、、それまで頑張ります。