ヘッシアン出力
ソルバー 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
は最終点において、この関数をヘッシアンとして返します。