ヘッセ行列による多変数関数の極値判定

第2次偏導関数を成分とする「ヘッセ行列」の情報を使えば多変数関数の極値判定が可能です。今回は多変数関数の停留点に対する極値判定の方法について解説します。


 

 3種類の停留点

勾配(1次微分)の値がゼロとなる点を「停留点」と呼びます。停留点には以下の3種類があります。

        • 極大点
        • 極小点
        • 鞍点

いずれの点も勾配がゼロになっています。イメージとしては「平らになっている点」が停留点に相当します。例えば、2変数関数f(x,y)=12sinxcosyを図示すると以下のようになります。

図示した範囲には極大点と極小点が1つずつ、鞍点が2つ存在しています。極大点と極小点はそのまま見た目から分かりますよね。鞍点というのは聞き慣れないかもしれませんが、その周辺が「馬のくら」のような曲面になっていることから「鞍点」の名が付いています。

※「鞍」は英語で “Saddle” なので、英語で「鞍点」は “Saddle Point” と呼ばれています。

 

 ヘッセ行列(ヘシアン)

n変数関数に対して2次微分を成分とする n×n の正方行列を「ヘッセ行列」または「ヘシアン」(Hessian)と呼びます。H[2fx122fx1x22fx1xn2fx2x12fx222fx2xn2fxnx12fxnx22fxn2]ヘッセ行列は2次微分であることを明示して2f(x)と表記されることもあります。

※「」は「ナブラ (nabla)」と呼ばれる「微分」を表す演算子です。また「ヘシアン」は「ヘッシアン」と呼ばれることもありますが、本質的に違いはありません。

※ここで「」は偏微分の記号で「関数をある1種類の変数について微分していますよ」という意味の記号です。多変数関数に対してしか使いません。

⚠️偏微分の順序について

変数xiで偏微分してから変数xjで偏微分した第2次偏導関数と、変数xjで偏微分してから変数xiで偏微分した第2次偏導関数は一致します。第2次偏導関数はどちらの変数から先に偏微分して求めても変わらないので2fxixj=2fxjxiが成り立ちます。つまりヘッセ行列は常にn次の対称行列となります。これより、ヘッセ行列の要素を計算する際は、下三角成分か上三角成分のいずれかを計算すれば十分です。

 

 行列の正定値性と極値判定

以下のいずれかの条件を満たす行列 A を「正定値行列」といいます。

 

    1. 零ベクトルでない任意の列ベクトルxに対して、二次形式 xAx が正
       
    2. Aの固有値が全て正
       
    3. Aのすべての首座小行列(左上側の k×k の正方行列)の行列式が全て正
        
    4. Aのすべての主小行列(第 i 行と第 i 列を除いて得られる小行列)の行列式が全て正
       
    5. ある正則行列Sを用いて A=SS と書ける
       
    6. ある直交行列Qと対角要素が正の対角行列Dを用いて A=QDQ と書ける

これらの条件は全て同値なので、どれか1つが成り立てば残りの5つも成り立ちます。行列 A が正定値のとき、元の行列 A は負定値と定義されます。それ以外の場合、行列 A は正定値でも負定値でもありません。

ヘッセ行列が正定値行列かどうかで極値判定ができるので、この行列の正定値性の判別は重要です。変数が少ない場合は条件3を使ってヘッセ行列の正定値性を調べるのが簡単です。

n次正方行列は全部でn個の首座小行列を持ちます。例えば、[123456789]の首座小行列は以下の通り。
1次:[1]2次:[1245]3次:[123456789]

※主小行列とは「第 i 行と第 i 列を除いて得られる小行列」のことで、「対角成分を含む行と列を除いて得られる小行列」とも言い換えられます。詳しくは線形代数の教科書を参考にして下さい。n次正方行列のk次の主小行列は全部でnCk個存在します。例えば、[123456789]2次の主小行列は [1245][5689][1379]3つです。


1変数関数の場合、以下のことが成り立ちます。

    • 極値の必要条件: x=a で極大 or 極小 f(a)=0
    • 極小の十分条件: f(a)=0 and f(a)>0 x=a で極小
    • 極大の十分条件: f(a)=0 and f(a)<0 x=a で極大

これと同様のことが多変数関数でも成立します。

多変数関数の極値判定

 

    • 極値の必要条件:
      f(x)が点xで極値 xで偏導関数の値が全てゼロ
       
    • xで偏導関数の値が全てゼロ かつ ヘッセ行列が正定値
      xで極小

       
    • xで偏導関数の値が全てゼロ かつ ヘッセ行列が負定値
      xで極大

これを利用すれば微分可能な多変数関数f(x)の極値判定ができます。

 

 極値判定してみる

実際に上記の公式を使って極値判定してみましょう。イメージしやすいように2変数関数の場合を考えます。2次のヘッセ行列はH=[2f(x)x22f(x)xy2f(x)yx2f(x)y2]と表されます。


例えばf(x,y)=x23xy+y2+y3とすると、第1次偏導関数は{fx=2x3yfy=3x+2y+3y2となり、第2次偏導関数は{2fx2=22fxy=32fy2=6y+2となります。よってヘッセ行列はH=[2336y+2]で与えられ、行列式はdet(H)=2(6y+2)(3)2=12y5となります。

極値の必要条件を考えます。fx=fy=0 の連立方程式を解くと、偏導関数の値が全てゼロとなるのは(0,0)(54,56)の2点のみであることが分かるので、これらの点が極値の候補となります。この2点についてヘッセ行列で極値判定します。

まず点(0,0)について、ヘッセ行列の首座小行列を考えます。1次の首座小行列の行列式は2 (>0)で正ですが、2次の首座小行列の行列式は1205=5 (<0)と負になるので、ヘッセ行列は正定値でも負定値でもありません。したがって、点(0,0)は極値を与える点ではありません。(この場合は鞍点になっています)

次に点(54,56)について、ヘッセ行列の首座小行列を考えます。1次の首座小行列の行列式は2 (>0)で正、2次の首座小行列の行列式も12565=5 (>0)と正になるので、ヘッセ行列は正定値です。したがって、点(54,56)では 偏導関数の値が全てゼロ かつ ヘッセ行列が正定値 なので、極小を与える点であることが分かります。

以上の結果が正しいことは、曲面を図示すると視覚的に理解できます。

このようにして、ヘッセ行列を用いた極値判定を行います。2変数関数の場合は「判別式」などを使って極値判定する方法もありますが、ヘッセ行列の正定値性を調べる方法の方が汎用性が高いと言えます。

 

 鞍点と「虚の振動数」

ここからは数学を離れて、少し発展的な話に入ります。

多変数関数を一種のポテンシャル面と見なすとき、その偏微分はある次元における「力」のベクトルに対応します。つまり、ポテンシャル面上のある点における勾配は力という物理量に対応しているのです。

例えば以下のような「調和振動子」の場合、最低点から少しボールを動かすと、中心の位置に戻ろうとする力が働きます。これは物理学で「復元力」と呼ばれる力です。

ここからは物理の内容になってしまうのですが、復元力Fが変位xに比例して負方向に働くとすると、比例定数をk(>0)としてF=kxと書けます。ボールを質量mの質点とすれば運動方程式はmx¨=kxとなります。

x¨xの時間に関する2回微分、すなわち加速度を表します。

この両辺に速度x˙を乗じてxに関して積分すると、12mx˙2=12kx2+Cとなります。ここで積分定数Cを便宜上 12kx02 と置くと、dxdt=km(x02x2)となり、ωkm と置いて整理するとω dt=dx(x02x2)1/2となります。この両辺をそれぞれ積分してωt+δ=sin1xx0 x=x0sin(ωt+δ)を得ます。

※式変形の途中で積分公式dxa2x2=sin1xa+Cを用いました。これは大学教養レベルの解析学で学ぶ積分です。

結局、この一連の式変形から何が言いたいかと言うと「ボールは振動数ωで振動運動をする」ということです。最初に変位(=x0sinδ)を与えられたボールは、振動数を ωkm として周期的な振動運動(単振動)をします。いま、kは正なので振動数ωは実数ですが、kが負になる場合は振動数ω虚数となります。

kが負になるケースというのは例えば、下図のようにポテンシャルの頂点にボールが設置してある場合に相当します。このボールに微小な変位を与えたら最後、転がりっぱなしで二度と初期位置に戻ってくることはありません。これは言うなれば、”負の” 復元力が働いているイメージです。このとき「振動数は虚である」とか「虚の振動数をもつ」という風に言います。


ここで、2変数関数の鞍点に立ち戻ってみましょう。上記の観点から、鞍点は「1方向にのみ虚の振動数を持っている停留点」と定義することができます。言い換えれば、鞍点ではある1方向以外の次元に対しては振動数が実数(固有値がただ1つを除いて正)となります。

これは以下の図を見れば何となく理解できると思います。確かに1方向にのみ虚振動(=転がったボールが戻ってこない)していますよね。

一般に、2次以上の関数上の鞍点ではヘッセ行列の固有値が一つだけ負になっています。これは鞍点がポテンシャル面上において1方向にのみ虚の振動数を持つ点であることに対応しています。

今は2変数関数を考えていたので非常に分かりやすかったのですが、より高次の多変数関数になると、ヘッセ行列の複数の固有値が負になることがあります。これは「高次の鞍点」と呼ばれるものに相当し、化学動力学などの理論化学の分野における研究対象になっています。化学反応における「遷移状態」は自由エネルギーポテンシャル面上の1次の鞍点として定義されており、ポテンシャル面上の鞍点をいかに効率よく収集するかが計算化学における課題の一つとなっています。

以上、余談でした。( ..)φ…メモメモ

“ヘッセ行列による多変数関数の極値判定” への12件の返信

  1. 大学数学未履修ですが、ヘッセ行列の説明とてもわかりやすかったです!ありがとうございました。

    1. Shunsukeyyy さん

      管理人のpencilと申します。
      記事をご覧いただきありがとうございます
      参考にしていただけたようで何よりです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

©Copyright 2017-2025 理系のための備忘録 All Rights Reserved.