微分積分⑬ ヘッセ行列による極値判定 このエントリーをはてなブックマークに追加

ヘッセ行列による極値判定

ヘッセ行列の定義

ヘッセ行列
スカラー値関数$f$について、以下の行列$H$を関数$f$のヘッセ行列といいます。
\begin{align*} H=[H_{ij}]=\left[\dfrac{\partial f}{\partial x_i \partial x_j}\right] \end{align*}
基本的に、微分を作用させる順序は交換しても変わりません。その場合、ヘッセ行列は$H_ij$$=H_{ji}$となる実対称行列です。

正定値行列と負定値行列

正定値行列
$A$を$n$$\times $$n$の行列として、零ベクトルでない任意の$n$成分の縦ベクトル$\boldsymbol{x}$に対して、
\begin{align*} {}^t\boldsymbol{x}A\boldsymbol{x}\gt 0 \end{align*}
を満たす行列を正定値行列といい、$-A$が正定値行列の場合、負定値行列といいます。
実は、この正定値行列に関しては、たとえば、「固有値がすべて正」など、多くの性質がありますが、今回着目するのは、「首座行列(左上の$m$$\times$$m$行列)の行列式がすべて正」という性質です。

ヘッセ行列式による極値の判定方法

ヘッセ行列式による判定法
$f$を$C^{n+1}$級の関数とします。ある点で、すべての1次偏導関数が0になる場合、その点が極値の候補となり、
\begin{align*} \text{ヘッセ行列式が正定値}&\Rightarrow \text{極小} \\ \text{ヘッセ行列が負定値}&\Rightarrow \text{極大} \\ \text{ヘッセ行列が正定値でも負定値でもない}&\Rightarrow \text{極大でも極小でもない(鞍点)} \end{align*}

ヘッセ行列式による判定方法の説明

一般の場合に証明するのは結構難しいので、$n=2$の場合に証明します。

点$(x_0,y_0)$で一次偏導関数が0となるとします。まず、この点周りに関数$f(x,y)$を2次の項までテイラー展開します。ただし、$f_{xy}$$=f_{yx}$が成り立つとしています。
\begin{align*} f(x,y)\approx f(x_0,y_0)+f_x(x_0,y_0)(x-x_0)+f_y(x_0,y_0)(y-y_0)+\dfrac{1}{2}\left\{f_{xx}(x_0,y_0)(x-x_0)^2+f_{xy}(x_0,y_0)(x-x_0)(y-y_0)+f_{yy}(x_0,y_0)(y-y_0)^2\right\} \end{align*}
これを線形代数の2次形式という表し方をつかって、
\begin{align*} f(x,y)\approx f(x_0,y_0)+f_x(x_0,y_0)(x-x_0)+f_y(x_0,y_0)(y-y_0)+ \begin{pmatrix} x-x_0 & y-y_0 \end{pmatrix} \begin{pmatrix} f_{xx}(x_0,y_0) & f_{xy}(x_0,y_0) \\ f_{yx}(x_0,y_0) & f_{yy}(x_0,y_0) \end{pmatrix} \begin{pmatrix} x-x_0 \\ y-y_0 \end{pmatrix} \end{align*}
さて、点$(x_0,y_0)$で一次偏導関数は0になるので、
\begin{align*} f(x,y)\approx f(x_0,y_0)+ \begin{pmatrix} x-x_0 & y-y_0 \end{pmatrix} \begin{pmatrix} f_{xx}(x_0,y_0) & f_{xy}(x_0,y_0) \\ f_{yx}(x_0,y_0) & f_{yy}(x_0,y_0) \end{pmatrix} \begin{pmatrix} x-x_0 \\ y-y_0 \end{pmatrix} \end{align*}
ここで、ヘッセ行列$H(x,y)$を
\begin{align*} H(x_0,y_0)= \begin{pmatrix} f_{xx}(x_0,y_0) & f_{xy}(x_0,y_0) \\ f_{yx}(x_0,y_0) & f_{yy}(x_0,y_0) \end{pmatrix} \end{align*}
とおいて、また、
\begin{align*} \boldsymbol{x}= \begin{pmatrix} x-x_0 \\ y-y_0 \end{pmatrix} \end{align*}
とすると、
\begin{align*} f(x,y)\approx f(x_0,y_0)+{}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x} \end{align*}
ここで、$H(x_0,y_0)$が正定値なら、任意の零ベクトルでない縦ベクトル$\boldsymbol{x}$に対して、
\begin{align*} {}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x}\gt 0 \end{align*}
なのでした。零ベクトルになるときも含めると、
\begin{align*} {}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x}\geq 0 \end{align*}
等号成立は$\boldsymbol{x}$が零ベクトルのときです。というわけで、点$(x_0,y_0)$の近傍で、
\begin{align*} f(x,y)\approx f(x_0,y_0)+{}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x}\geq f(x_0,y_0) \end{align*}
となり、ヘッセ行列が正定値行列のとき、この点で極小を取るといえます。 よって、逆にヘッセ行列$H(x_0,y_0)$が負定値なら、$-H(x_0,y_0)$が正定値行列になるので、
\begin{align*} f(x,y)\approx f(x_0,y_0)-{}^t\boldsymbol{x}\{-H(x_0,y_0)\}\boldsymbol{x}\leq f(x_0,y_0) \end{align*}
となり、極大と分かります。では、正定値でも不定値でもない場合は?というと$\boldsymbol{x}$の取り方によって、符号も値も変わってしまうので極値とはいえません。これを鞍点といいます。

ヘッセ行列による極値判定例題

たとえば、以下のような関数$f(x,y)$を考えましょう。
\begin{align*} f(x,y)=x^3-3x+y^3-2y \end{align*}
\begin{align*} f_x&=3x^2-3 \\ f_y&=3y^2-2 \end{align*}
よって、$f_x$$=f_y$$=0$となる極値の候補点は、
\begin{align*} \left(\pm 1,\pm \dfrac{\sqrt{6}}{3}\right) \end{align*}
の4点ですね。さて、まずは一般の座標に対してヘッセ行列を計算します。
\begin{align*} H(x,y)&= \begin{vmatrix} f_{xx} & f_{xy} \\ f_{yx} & f_{yy} \end{vmatrix} \\ &= \begin{vmatrix} 6x & 0 \\ 0 & 6y \end{vmatrix} \end{align*}
さて、先ほど求めた4点のうち、$H$が正定値行列の点は極小、$H$が負定値行列の点は極大、どちらでもない場合には、鞍点(極値ではない)となるのでした。

正定値行列は首座行列式がすべて正という性質がありました。つまり、$H$が正定値行列であることを示したければ、
\begin{align*} f_{xx}=6x\gt 0\text{かつ}\det{H(x,y)}=36xy\gt 0 \end{align*}
となります。以上より、$(1,\sqrt{6}/3)$は極小となります。また、$H$が負定値、つまり、$-H$が正定値になる場合、
\begin{align*} -f_{xx}=-6x\gt 0\text{かつ}\det{\{-H(x,y)\}}=-36xy\gt 0 \end{align*}
の場合に極大になります。つまり、$(-1,-\sqrt{6}/3)$は極大になります。残りの二点は、ヘッセ行列が正定値でも負定値でもないので、鞍点になります。以下の図がこの関数のグラフです。

鞍点は字の通り馬の鞍のような形をしています。



このエントリーをはてなブックマークに追加