Main Content

ヘッシアン出力

ソルバー 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 次導関数の行列です。

Hessian Hij=2fxixj.

  • 準ニュートン アルゴリズム - fminunc は解において推定ヘッセ行列を返します。fminunc は有限差分法によって推定値を計算するため、その推定値は概して正確です。

  • 信頼領域アルゴリズム - fminunc は最後から 2 番目の反復においてヘッセ行列を返します。

    • 目的関数にヘッシアンを提供し、HessianFcn オプションを 'objective' に設定した場合、fminunc はこのヘッシアンを返します。

    • HessianMultiplyFcn 関数を提供した場合は、fminuncHessianMultiplyFcn 関数から Hinfo 行列を返します。詳細については、fminuncoptions の表内、trust-region のセクションにある HessianMultiplyFcn を参照してください。

    • 上記以外の場合では、fminunc は、勾配に関してスパース有限差分法アルゴリズムから近似値を返します。

    このヘッシアンは最後から 2 つ目の反復に対して正確です。ただし、最後から 2 つ目の反復は最終点に近くないかもしれません。

    trust-region アルゴリズムは効率を上げるために最後から 2 つ目の反復でヘッシアンを返します。fminunc はこのヘッシアンを内部的に使用して次のステップを計算します。fminunc が停止状態に達すると次のステップを計算する必要がないため、ヘッシアンを計算しません。

fmincon ヘッシアン

制約のある問題のヘッシアンは、ラグランジュ関数のヘッシアンです。目的関数 f、非線形不等式制約ベクトル c、および非線形等式制約ベクトル ceq の場合、ラグランジュ関数は次のようになります。

L=f+iλici+jλjceqj.

λi はラグランジュ乗数です。1 次の最適性の尺度およびラグランジュ乗数構造体を参照してください。ラグランジュ関数のヘッシアンは以下のようになります。

H=2L=2f+iλi2ci+jλj2ceqj.

fmincon は複数のアルゴリズムがあり、fmincon の信頼領域 Reflective 法アルゴリズムfmincon アクティブ セット アルゴリズム、およびfmincon の内点法アルゴリズムで説明しているようにヘッシアンに関していくつかのオプションがあります。

  • active-setsqp、または sqp-legacy アルゴリズム - fmincon は最後から 2 番目の反復で計算したヘッシアン近似を返します。fmincon はその反復の過程において、解におけるヘッセ行列の準ニュートン近似を計算します。一般的に、この近似は、すべての成分の真のヘッシアンと一致するわけではなく、特定の部分空間でのみ一致します。そのため、fmincon から返されるヘッシアンは不正確な可能性があります。active-set 計算の詳細については、SQP 法の実装 を参照してください。

  • trust-region-reflectiveアルゴリズム - fmincon は最後から 2 つ目の反復において計算したヘッシアンを返します。

    • 目的関数にヘッシアンを提供し、HessianFcn オプションを 'objective' に設定した場合、fmincon はこのヘッシアンを返します。

    • HessianMultiplyFcn 関数を提供した場合は、fminconHessianMultiplyFcn 関数から Hinfo 行列を返します。詳細については、fminconoptions、「信頼領域 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 は最終点において、この関数をヘッシアンとして返します。

関連するトピック