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

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

ヘッセ行列で極値の判定

ヘッセ行列で最大/最小値の存在を判定の続きで、今回は関数における停留点が極値かどうかを判定する方法を確認します。高校数学で習うように、1変数の関数であれば、二階微分の正負から増減表によって極値の判定ができますが、多変数関数では増減表を書くことができません。しかしあとで見るように、二階微分で作られるヘッセ行列が正定値/負定値であるかどうかで判定することができます。これは二階微分の正負で判定する手法の一般化であるといえます。

n変数関数f(x_1,\cdots, x_n)を考え、点(x_{1}^{\prime} , \cdots ,x_{n}^{\prime})で停留点、つまり、


\displaystyle \frac{\partial f}{\partial x_1} = \cdots = \frac{\partial f}{\partial x_n} =0 \tag{1}

とします。停留点は極値であることの必要条件です。

(x_{1}^{\prime} , \cdots ,x_{n}^{\prime})まわりのテイラー展開による2次近似は、


\displaystyle f(x_1,\cdots, x_n) \simeq \sum_{k=0}^{2}\frac{1}{k!} \left\{ (x_1-x_{1}^{\prime}) \frac{\partial}{\partial x_1} +\cdots+(x_n-x_{n}^{\prime}) \frac{\partial}{\partial x_n} \right\}^{k}f(x_{1}^{\prime},\cdots, x_{n}^{\prime})\tag{2}

で与えられます。ここで、式(1)の条件より、k=1のとき0になり、k=0,2のときの項のみ残りますから、


\displaystyle  \simeq f(x_{1}^{\prime},\cdots, x_{n}^{\prime}) + \frac{1}{2} \left\{ (x_1-x_{1}^{\prime}) \frac{\partial}{\partial x_1} +\cdots+(x_n-x_{n}^{\prime}) \frac{\partial}{\partial x_n} \right\}^{2}f(x_{1}^{\prime},\cdots, x_{n}^{\prime})\tag{3}

です。ここで、2番目の項は、ヘッセ行列(参考:ベクトルをベクトルで微分の定義とヘッセ行列)に点(x_{1}^{\prime} , \cdots ,x_{n}^{\prime})を代入した


\displaystyle \bar{\mathbf{H}}= \left(
    \begin{array}{ccc}
      \frac{\partial^{2} \bar{f}}{\partial x_1 \partial x_1} &  \ldots & \frac{\partial^{2}  \bar{f}}{\partial x_1 \partial x_n} \\
      \vdots & \ddots & \vdots \\
      \frac{\partial^{2}  \bar{f}}{\partial x_n \partial x_1}  & \ldots & \frac{\partial^{2}  \bar{f}}{\partial x_n \partial x_n}
    \end{array}
  \right) \tag{4}

と、\mathbf{x}^{\prime} = (x_1-x_{1}^{\prime}, \cdots,x_n-x_{n}^{\prime})^{T}を用いて、\displaystyle \frac{1}{2}\mathbf{x}^{\prime T}\bar{\mathbf{H}}\mathbf{x}^{\prime} と書けますから、


\displaystyle f(x_1,\cdots, x_n) \simeq f(x_{1}^{\prime},\cdots, x_{n}^{\prime}) +\displaystyle \frac{1}{2}\mathbf{x}^{\prime T}\bar{\mathbf{H}}\mathbf{x}^{\prime} \tag{5}

です。なお式(4)の各要素は、2階微分した関数に点(x_{1}^{\prime} , \cdots ,x_{n}^{\prime})を代入したものですから、


\displaystyle \frac{\partial^{2}  \bar{f}}{\partial x_{i} \partial x_{j}} = f_{x_{i} x_{j}} (x_{1}^{\prime} , \cdots , x_{n}^{\prime}) \tag{6}

のことです。

ちなみに、1変数関数の場合は、


\displaystyle f(x) \simeq f(x^{\prime}) + \frac{f^{\prime\prime}(x^{\prime})}{2}(x-x^{\prime})^{2} \tag{7}

となり、2次の項はx^{\prime}が頂点の放物線ですから、f^{\prime\prime}(x^{\prime})の正負で上に凸か下に凸か、つまり極大か極小であるかがわかります。近似式は点x^{\prime}の付近でf(x)をよく近似しているはずなので、近似式が点x^{\prime}で最大/最小ならf(x)もその点で極値だろうということですね。

さて、同じように式(5)においてf(x_{1}^{\prime},\cdots, x_{n}^{\prime})は定数ですから、\displaystyle \frac{1}{2}\mathbf{x}^{\prime T}\bar{\mathbf{H}}\mathbf{x}^{\prime} が最大値/最小値を持つかどうかが判定できれば、f(x_1,\cdots, x_n)が点(x_{1}^{\prime} , \cdots ,x_{n}^{\prime})において極値かどうかが明らかになります。そして2次形式\displaystyle \frac{1}{2}\mathbf{x}^{\prime T}\bar{\mathbf{H}}\mathbf{x}^{\prime} が最大値/最小値を持つかどうかは、ヘッセ行列が正定値行列または負定値行列であるかによって確認できます*1。(参考:ヘッセ行列で最大/最小値の存在を判定

よって、n変数関数f(x_1,\cdots, x_n)が停留点(x_{1}^{\prime} , \cdots ,x_{n}^{\prime})において、式(4)のヘッセ行列が正定値行列であれば極小値、負定値行列であれば極大値となります。

*1:このあたりは本来もっと議論が必要だと思いますが、直感的に理解するにはこれくらいで十分かなと思います、、、という言い訳。