ヘッセ行列による極値判定の証明をしてみる

Qiita初投稿になります．
本記事では大学の微積分の講義で扱うヘッセ行列を用いた多変数関数の極値判定法の妥当性について，(ある程度)厳密な証明を作成してみます．あくまで自分なりの証明なのでレポート等で参考にする際は自己責任でお願いします．また，誤りを見つけた際はご指摘いただけると幸いです．

なお，直感的にわかりやすい説明に関しては@IshitaTakeshiさんの[ヘッセ行列で関数の極値判定ができる理由](https://qiita.com/IshitaTakeshi/items/c7b0db1c73d65f9707ea)を参照していただくのがよいと思います．

# 本記事で示すこと
$n$変数実関数$f$にすべての二階偏微分が存在するとき，以下のようにヘッセ行列が定義されます．
```math
H(f) =
\begin{pmatrix}
    \frac{\partial f^2}{\partial x_1^2} & \frac{\partial f^2}{\partial x_1 \partial x_2} & \cdots & \frac{\partial f^2}{\partial x_1 \partial x_n} \\
    \frac{\partial f^2}{\partial x_2 \partial x_1} & \frac{\partial f^2}{\partial x_2^2} & \cdots & \frac{\partial f^2}{\partial x_2 \partial x_n} \\
    \vdots & \vdots & \ddots & \vdots \\
    \frac{\partial f^2}{\partial x_n \partial x_1} & \frac{\partial f^2}{\partial x_n \partial x_2} & \cdots & \frac{\partial f^2}{\partial x_n^2}
\end{pmatrix}
```
今回はヘッセ行列が対称になる場合を考えます．
$f$の勾配が$\vec{x}=\vec{a}$において0になるとし，この行列に$\vec{x}=\vec{a}$を代入したものを$H$と略記したとき，以下の3つを示します．
1. $H$が正定値$\Rightarrow$$f$は$\vec{a}$において極小となる
1. $H$が負定値$\Rightarrow$$f$は$\vec{a}$において極大となる
1. $H$は正定値でも負定値でもないが非零の固有値を持つ$\Rightarrow$$\vec{a}$は$f$の鞍点となる

# 証明
多変数版のテイラーの定理より関数$f$は
```math
f(\vec{x})=f(\vec{a})+\mathrm{grad}f(\vec{a})(\vec{x}-\vec{a})+\frac{1}{2}(\vec{x}-\vec{a})^\top H(\vec{x}-\vec{a})+o(\|\vec{x}-\vec{a}\|^2)
```
と$\vec{x}=\vec{a}$周辺で近似することができます．
更に$\vec{x}=\vec{a}$での勾配が0であることから
```math
f(\vec{x})=f(\vec{a})+\frac{1}{2}(\vec{x}-\vec{a})^\top H(\vec{x}-\vec{a})+o(\|\vec{x}-\vec{a}\|^2)
```
とできます．

ここで$H$の対角化を考えてみましょう．これにより$f$の等高線の概形がわかりやすくなります．
$H$は対称行列であったので，直交行列$P$を用いて
```math
H = P\Lambda P^\top \quad (\Lambda=\mathrm{diag}(\lambda_1,\lambda_2,\cdots,\lambda_n))
```
と対角化ができます．
この$P$によって$\vec{x}-\vec{a}=P\vec{\xi}\hspace{0.5em}\left(\vec{\xi}=(\xi_1,\xi_2,\cdots,\xi_n)\right)$と座標変換をしてあげれば
```math
\begin{align}
    f(\vec{x}) &= f(\vec{a}) + \frac{1}{2}\vec{\xi}^\top \Lambda \vec{\xi} + o(\|\vec{x}-\vec{a}\|^2) \\
    &= f(\vec{a}) + \frac{1}{2}(\lambda_1 \xi_1^2+\lambda_2 \xi_2^2+\cdots+\lambda_n \xi_n^2) + o(\|\vec{x}-\vec{a}\|^2)
\end{align}
```
という具合に$x_ix_j \hspace{0.5em} (i\neq j)$の項がなくなって概形がわかりやすくなりました．

次にスモールオーダーがそのまま残っていると不等式評価しづらいので$\epsilon\text{-}\delta$論法を用いて書き換えましょう．
スモールオーダーの定義から，任意に$\epsilon > 0$をとったときにある$\delta>0$が存在して
```math
\|\vec{x}-\vec{a}\|<\delta \Rightarrow \left|\frac{f(\vec{x})-f(\vec{a})-\vec{\xi}^\top \Lambda \vec{\xi}/2}{\|\vec{x}-\vec{a}\|^2}\right|<\epsilon
```
つまり
```math
\|\vec{x}-\vec{a}\|<\delta \Rightarrow \left|f(\vec{x})-f(\vec{a})-\frac{1}{2}\vec{\xi}^\top \Lambda \vec{\xi}\right|<\epsilon\|\vec{x}-\vec{a}\|^2<\epsilon\delta^2
```
が言えます．

これをもとに判定法の各場合についてみていきましょう．
#### Hが正定値である場合
$\delta/2 < \lVert\vec{x} - \vec{a}\rVert < \delta$を満たすように$\vec{x}$をとると先の不等式から
```math
f(\vec{x})-f(\vec{a}) > \frac{1}{2}\vec{\xi}^\top \Lambda \vec{\xi}-\epsilon \delta^2
```
となります．
$H$が正定値である場合はその固有値がすべて正になるわけですが，そのうち最小のものを$\lambda_{\mathrm{min}}$とすると
```math
\begin{align}
    f(\vec{x})-f(\vec{a}) &> \frac{1}{2}(\lambda_1 \xi_1^2 + \lambda_2 \xi_2^2 + \cdots + \lambda_n \xi_n^2) - \epsilon \delta^2 \\
    &\geq \frac{1}{2}\lambda_{\mathrm{min}}\|\vec{\xi}\|^2 - \epsilon \delta^2 \\
    &> \frac{1}{8}\lambda_{\mathrm{min}}\delta^2 -\epsilon \delta^2 \\
    &= \left(\frac{1}{8}\lambda_{\mathrm{min}}-\epsilon\right)\delta^2
\end{align}
```
と下から評価できます．なお，3つ目の不等号は直交行列がノルムを変化させないことから$\lVert\vec{\xi}\rVert=\lVert\vec{x}-\vec{a}\rVert$となることも用いています．
$\epsilon$は任意にとれたので，$\epsilon \leq \lambda_{\mathrm{min}}/8$を満たすようにとってやれば$f(\vec{x})>f(\vec{a})$とでき，$\vec{x}=\vec{a}$において極小であることがわかります．

#### Hが負定値である場合
正定値の場合とほぼ同様なので省略しながら説明します．
$\delta/2 < \lVert\vec{x}-\vec{a}\rVert < \delta$を満たすように$\vec{x}$をとり，$H$の固有値のうち最大のものを$\lambda_{\mathrm{max}}<0$とすると
```math
f(\vec{a})-f(\vec{x}) > \left(-\frac{1}{8}\lambda_{\mathrm{max}}-\epsilon\right)\delta^2
```
となるので$\epsilon \leq -\lambda_{\mathrm{max}}/8$となるように$\epsilon$をとれば$f(\vec{x})<f(\vec{a})$となり，$\vec{x}=\vec{a}$において極大となることがわかります．

#### Hは正定値でも負定値でもないが非零の固有値を持つ場合
$H$の固有値のうち$\lambda_i$が正であるとし，$\vec{x}$を
```math
\left\{
    \begin{aligned}
        &\vec{x}-\vec{a}=\alpha \vec{v}_i \\
        &\frac{\delta}{2} < \alpha < \delta
    \end{aligned}
\right.
```
を満たすようにとります．ただし，$\vec{v}_i$は$P$の第$i$列目のベクトルです．
このように定義すると
```math
\vec{\xi} = P^\top(\vec{x}-\vec{a}) =(\vec{v}_1^\top \vec{v}_2^\top \cdots \vec{v}_n^\top)^\top \vec{v}_i = \alpha \vec{e}_i
```
となります．ここで$\vec{e}_i$は第$i$要素が1でそれ以外の要素が0であるようなベクトルです．
このとき，
```math
\begin{align}
    f(\vec{x})-f(\vec{a}) &> \frac{1}{2}\vec{\xi}^\top \Lambda \vec{\xi} - \epsilon \delta^2 \\
    &= \frac{1}{2}(\alpha \vec{e}_i)^\top \Lambda (\alpha \vec{e}_i) - \epsilon \delta^2 \\
    &= \frac{1}{2}\alpha^2\lambda_i - \epsilon \delta^2 \\
    &> (\frac{1}{8}\lambda_i-\epsilon)\delta^2
\end{align}
```
となるので，$\epsilon \leq \lambda_i/8$となるように$\epsilon$をとれば$f(\vec{x})>f(\vec{a})$となります．
これは正の固有値に対応する固有ベクトル方向に対しては$\vec{x}=\vec{a}$において$f$が極小になることを表しています．

負の固有値に関しても同様で，対応する固有ベクトル方向に対しては$\vec{x}=\vec{a}$において$f$が極大になることを示すことができます．

したがって，方向によって極大・極小が変化することが分かったので$\vec{a}$は$f$の鞍点であることがわかりました．

# 参考文献
@IshitaTakeshi.「ヘッセ行列で関数の極値判定ができる理由」(https://qiita.com/IshitaTakeshi/items/c7b0db1c73d65f9707ea)