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

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

ベクトルの微分

ベクトルの微分の定義

スカラを返す関数 fにおいて、ベクトル \mathbf{x}での微分係数は以下のように定義されます。


\displaystyle \frac{\partial f}{\partial \mathbf{x}} = \left(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \cdots ,\frac{\partial f}{\partial x_n} \right)^{T} \tag{1}

ベクトル \mathbf{a} , \mathbf{x} に対して、 \mathbf{a}^{T} \mathbf{x} = a_1x_1+a_2x_2+ \dots + a_nx_nですから、式(1)の定義と、転置行列の定理の式(5)より、


\displaystyle \frac{\partial }{\partial \mathbf{x}}\mathbf{a}^{T} \mathbf{x} =\frac{\partial }{\partial \mathbf{x}}\mathbf{x}^{T} \mathbf{a}
= \mathbf{a} \tag{2}

となることがわかります。 x_kで微分すれば、その係数a_kのみ残りますので、解はk番目の成分がa_kのベクトル、つまり \mathbf{a}になります。

2次形式の微分

次に2次形式 \mathbf{x}^{T}\mathbf A \mathbf{x}の微分を考えます。 \mathbf{x}^{T}\mathbf A \mathbf{x}はスカラになりますから、微分は式(1)の定義に従えばよいです。また、 \mathbf{x} がn次元なら、 \mathbf{x}^{T}\mathbf A \mathbf{x}が計算可能な行列Aは、n×nの正方行列です。

行列Aを


  \mathbf A = \left(
    \begin{array}{cccc}
      a_{11} & a_{12} & \ldots & a_{1n} \\
      a_{21} & a_{22} & \ldots & a_{2n} \\
      \vdots & \vdots & \ddots & \vdots \\
      a_{n1} & a_{n2} & \ldots & a_{nn}
    \end{array}
  \right) \tag{3}

とすれば、


  \mathbf{x}^{T}\mathbf A = \left(
      \displaystyle \sum_{i=1}^na_{i1} x_i ,
      \cdots ,
      \displaystyle \sum_{i=1}^na_{in} x_i
  \right) \tag{4}

となりますから、

 \mathbf{x}^{T}\mathbf A \mathbf{x} = \displaystyle \sum_{j=1}^n \sum_{i=1}^n a_{ij}x_i x_j \tag{5}

です。

ここでk番目の成分 x_kでの微分を考えると、積の微分公式より


\begin{eqnarray*}
\displaystyle \frac{\partial }{\partial x_k}\mathbf{x}^{T}\mathbf A\mathbf{x} &=& \displaystyle \sum_{j=1}^n \sum_{i=1}^n a_{ij}\displaystyle \left(\frac{\partial }{\partial x_k} x_i \right) x_j + \displaystyle \sum_{j=1}^n \sum_{i=1}^n a_{ij}x_i \displaystyle \frac{\partial }{\partial x_k} x_j \tag{6}\\
 &=&\displaystyle \sum_{j=1}^n a_{kj} x_j + \displaystyle \sum_{i=1}^n a_{ik}x_i  \tag{7}
\end{eqnarray*}

となります。( x_kで微分すれば、それぞれi=k、j=k以外の成分は消えます)

ここで、式(7)を見ますと、前半の項は \mathbf A \mathbf{x}のk番目の成分であり、後半の項は \mathbf A^{T} \mathbf{x}のk番目の成分になっていますから、これをk=1~nまで並べれば \mathbf A \mathbf{x} \mathbf A^{T} \mathbf{x}になることがわかります。

よって、

 
\displaystyle \frac{\partial }{\partial \mathbf{x}} \mathbf{x}^{T}\mathbf A \mathbf{x} = (\mathbf A + \mathbf A^T)\mathbf{x} \tag{8}

となります。今回の式(2)、(8)は最小二乗法の解の導出に使用します。最小二乗法の解の導出

関連:ベクトルをベクトルで微分行列の微分