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

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

ベクトルをベクトルで微分の定義とヘッセ行列

\mathbf{y}=(y_1, \cdots , y_m)^{T}\mathbf{x}=(x_1, \cdots , x_n)^{T}としたとき、\displaystyle \frac{\partial \mathbf{y}}{\partial \mathbf{x}}は以下のように定義されます。 *1



\displaystyle \frac{\partial \mathbf{y}}{\partial \mathbf{x}} = \left(
    \begin{array}{cccc}
      \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \ldots & \frac{\partial y_1}{\partial x_n} \\
      \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \ldots & \frac{\partial y_2}{\partial x_n} \\
      \vdots & \vdots & \ddots & \vdots \\
      \frac{\partial y_m}{\partial x_1} & \frac{\partial y_m}{\partial x_2} & \ldots & \frac{\partial y_m}{\partial x_n}
    \end{array}
  \right) \tag{1}


さて、スカラを返す関数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{2}

でしたから(参考:ベクトルの微分)、式(1)の定義に従って式(2)をもう1度\mathbf{x}で微分すると、


\displaystyle \frac{\partial^{2} f}{\partial \mathbf{x} \partial \mathbf{x}^{T}} = \left(
    \begin{array}{cccc}
      \frac{\partial^{2} f}{\partial x_1 \partial x_1} & \frac{\partial^{2} f}{\partial x_1 \partial x_2} & \ldots & \frac{\partial^{2} f}{\partial x_1 \partial x_n} \\
      \frac{\partial^{2} f}{\partial x_2 \partial x_1} & \frac{\partial^{2} f}{\partial x_2 \partial x_2} & \ldots & \frac{\partial^{2} f}{\partial x_2 \partial x_n} \\
      \vdots & \vdots & \ddots & \vdots \\
      \frac{\partial^{2} f}{\partial x_n \partial x_1} & \frac{\partial^{2} f}{\partial x_n \partial x_2} & \ldots & \frac{\partial^{2} f}{\partial x_n \partial x_n}
    \end{array}
  \right) \tag{3}

となります。式(3)はヘッセ行列と呼ばれ、\displaystyle \frac{\partial^{2} f}{\partial \mathbf{x} \partial \mathbf{x}^{T}} =\mathbf{H}と表記されます。xの要素に注目すると\mathbf{x}\mathbf{x}^{T}となっているからでしょうか、\displaystyle \frac{\partial^{2} f}{\partial \mathbf{x}^{2}}とは書かないようです。


ところで、「ベクトルをベクトルで微分」って珍しい演算なんでしょうか。この定義が書いてあるサイトが意外と少なかった印象で、しかも教えてgooには

>ベクトルaをベクトルbで偏微分する

こんな話は少なくともベクトル解析の世界では聞いたことがありません。

とか書いてある始末。(参考:ベクトルとベクトルの偏微分について -ベクトルaをベクトルbで偏微分す- 数学 | 教えて!goo

ちなみに、英語のWikipediaには定義がそのまま載っていました。→Matrix calculus - Wikipedia 英語を読むのは得意ではないのですが、数式は世界共通なので助かりますね。日本語のWikipediaにも載っているのかな。偶然にも先に英語版が見つかってしまった。

*1:これはNumerator-layout notaionという定義です。Denominator-layout notationという定義もあり、その場合は式(1)を転置した形になるようです。Layout_conventions