ヘッシアン出力
ソルバー fminunc および fmincon は、オプションの出力として、次のような近似ヘッシアンを返します。
[x,fval,exitflag,output,grad,hessian] = fminunc(fun,x0)
% or
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)このトピックでは、返されるヘッシアンの意味と期待できる精度について説明します。
ソルバーが入力引数として使用するヘッシアンの種類を指定することもできます。fminunc については、勾配とヘッシアンを含めるを参照してください。fmincon については、入力としてのヘッシアンを参照してください。
fminunc ヘッシアン
制約のない問題のヘッシアンは、目的関数 f の 2 次導関数の行列です。
準ニュートン アルゴリズム -
fminuncは解において推定ヘッセ行列を返します。fminuncは有限差分法によって推定値を計算するため、その推定値は概して正確です。信頼領域アルゴリズム -
fminuncは最後から 2 番目の反復においてヘッセ行列を返します。目的関数にヘッシアンを提供し、
HessianFcnオプションを'objective'に設定した場合、fminuncはこのヘッシアンを返します。HessianMultiplyFcn関数を提供した場合は、fminuncはHessianMultiplyFcn関数からHinfo行列を返します。詳細については、fminuncのoptionsの表内、trust-regionのセクションにあるHessianMultiplyFcnを参照してください。上記以外の場合では、
fminuncは、勾配に関してスパース有限差分法アルゴリズムから近似値を返します。
このヘッシアンは最後から 2 つ目の反復に対して正確です。ただし、最後から 2 つ目の反復は最終点に近くないかもしれません。
trust-regionアルゴリズムは効率を上げるために最後から 2 つ目の反復でヘッシアンを返します。fminuncはこのヘッシアンを内部的に使用して次のステップを計算します。fminuncが停止状態に達すると次のステップを計算する必要がないため、ヘッシアンを計算しません。
fmincon ヘッシアン
制約のある問題のヘッシアンは、ラグランジュ関数のヘッシアンです。目的関数 f、非線形不等式制約ベクトル c、および非線形等式制約ベクトル ceq の場合、ラグランジュ関数は次のようになります。
λi はラグランジュ乗数です。1 次の最適性の尺度およびラグランジュ乗数構造体を参照してください。ラグランジュ関数のヘッシアンは以下のようになります。
fmincon は複数のアルゴリズムがあり、fmincon の信頼領域 Reflective 法アルゴリズム、fmincon アクティブ セット アルゴリズム、およびfmincon の内点法アルゴリズムで説明しているようにヘッシアンに関していくつかのオプションがあります。
active-set、sqp、またはsqp-legacyアルゴリズム -fminconは最後から 2 番目の反復で計算したヘッシアン近似を返します。fminconはその反復の過程において、解におけるヘッセ行列の準ニュートン近似を計算します。一般的に、この近似は、すべての成分の真のヘッシアンと一致するわけではなく、特定の部分空間でのみ一致します。そのため、fminconから返されるヘッシアンは不正確な可能性があります。active-set計算の詳細については、SQP 法の実装 を参照してください。trust-region-reflectiveアルゴリズム -fminconは最後から 2 つ目の反復において計算したヘッシアンを返します。目的関数にヘッシアンを提供し、
HessianFcnオプションを'objective'に設定した場合、fminconはこのヘッシアンを返します。HessianMultiplyFcn関数を提供した場合は、fminconはHessianMultiplyFcn関数からHinfo行列を返します。詳細については、fminconのoptions、「信頼領域 Reflective 法アルゴリズム」を参照してください。上記以外の場合では、
fminconは、勾配に関してスパース有限差分法アルゴリズムから近似値を返します。
このヘッシアンは最後から 2 つ目の反復に対して正確です。ただし、最後から 2 つ目の反復は最終点に近くないかもしれません。
trust-region-reflectiveアルゴリズムは効率を上げるために最後から 2 つ目の反復でヘッシアンを返します。fminconはこのヘッシアンを内部的に使用して次のステップを計算します。fminconが停止状態に達すると次のステップを計算する必要がないため、ヘッシアンを計算しません。interior-pointアルゴリズムHessianApproximationオプションが'lbfgs'または'finite-difference'である場合、または関数HessianMultiplyFcnを指定した場合は、fminconがヘッシアンに対して[]を返します。HessianApproximationオプションが'bfgs'(既定の設定) の場合、fminconは最終点においてヘッシアンに対して準ニュートン近似値を返します。active-setまたはsqpアルゴリズムのヘッシアンと同様に、このヘッシアンも不正確な場合があります。HessianFcnオプションが関数ハンドルである場合、fminconは最終点において、この関数をヘッシアンとして返します。