Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Hessian 矩阵输出

fminuncfmincon 求解器返回一个逼近 Hessian 矩阵作为可选输出。

[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)

本主题说明返回的 Hessian 矩阵的含义以及您可能获得的准确度。

您还可以指定求解器用作输入 Hessian 矩阵参数的 Hessian 矩阵的类型。对于 fminunc,请参阅包括梯度和 Hessian 矩阵。对于 fmincon,请参阅作为输入的 Hessian 矩阵

fminunc Hessian 矩阵

无约束问题的 Hessian 矩阵是由目标函数 f 的二阶导数组成的矩阵:

Hessian Hij=2fxixj.

  • 拟牛顿算法 - fminunc 在解处返回估计的 Hessian 矩阵。fminunc 通过有限差分计算估计值,因此估计值通常是准确的。

  • 信赖域算法 - fminunc 在倒数第二个迭代中返回一个 Hessian 矩阵。

    • 如果您在目标函数中提供 Hessian 并将 HessianFcn 选项设置为 'objective'fminunc 将返回此 Hessian 矩阵。

    • 如果您提供 HessianMultiplyFcn 函数,fminunc 将从 HessianMultiplyFcn 函数返回 Hinfo 矩阵。有关详细信息,请参阅 fminunc options 表的 trust-region 部分中的 HessianMultiplyFcn

    • 否则,fminunc 将基于梯度通过稀疏有限差分算法返回一个逼近矩阵。

    此 Hessian 矩阵对于倒数第二个迭代是准确的。然而,倒数第二个迭代可能并不接近最终点。

    trust-region 算法在倒数第二个迭代返回 Hessian 矩阵是为了提高效率。fminunc 在内部使用 Hessian 矩阵来计算其下一迭代步。当 fminunc 达到停止条件时,它不需要计算下一迭代步,因此不会计算 Hessian 矩阵。

fmincon Hessian 矩阵

约束问题的 Hessian 矩阵是拉格朗日 Hessian 矩阵。对于目标函数 f、非线性不等式约束向量 c 以及非线性等式约束向量 ceq,拉格朗日函数为

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

λi 是拉格朗日乘数;请参阅一阶最优性度量拉格朗日乘数结构体。拉格朗日方程的 Hessian 矩阵公式为

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

fmincon 提供若干种算法和几个选项来计算 Hessian 矩阵,如 fmincon 信赖域反射算法fmincon 活动集算法fmincon 内点算法中所述。

  • active-setsqpsqp-legacy 算法 - fmincon 返回它在倒数第二个迭代中计算的 Hessian 矩阵逼近。fmincon 会在其迭代过程中计算在解处的 Hessian 矩阵的拟牛顿逼近。一般情况下,这种逼近并不在每个分量上都与真正的 Hessian 矩阵相匹配,而是仅在某些子空间中匹配。因此,fmincon 返回的 Hessian 矩阵可能不准确。有关 active-set 计算的详细信息,请参阅SQP 实现

  • trust-region-reflective 算法 - fmincon 返回它在倒数第二个迭代中计算的 Hessian 矩阵。

    • 如果您在目标函数中提供 Hessian 并将 HessianFcn 选项设置为 'objective'fmincon 将返回此 Hessian 矩阵。

    • 如果您提供 HessianMultiplyFcn 函数,fmincon 将从 HessianMultiplyFcn 函数返回 Hinfo 矩阵。有关详细信息,请参阅 fmincon options 中的信赖域反射算法

    • 否则,fmincon 将基于梯度通过稀疏有限差分算法返回一个逼近矩阵。

    此 Hessian 矩阵对于倒数第二个迭代是准确的。然而,倒数第二个迭代可能并不接近最终点。

    trust-region-reflective 算法在倒数第二个迭代返回 Hessian 矩阵是为了提高效率。fmincon 在内部使用 Hessian 矩阵来计算其下一迭代步。当 fmincon 达到停止条件时,它不需要计算下一迭代步,因此不会计算 Hessian 矩阵。

  • interior-point 算法

    • 如果 HessianApproximation 选项是 'lbfgs''finite-difference',或如果您提供 HessianMultiplyFcn 函数,则 fmincon 返回 [] 作为 Hessian 矩阵。

    • 如果 HessianApproximation 选项是 'bfgs'(默认值),fmincon 会返回最终点处的 Hessian 矩阵的拟牛顿逼近。此 Hessian 矩阵可能不准确,类似于 active-setsqp 算法 Hessian 矩阵。

    • 如果 HessianFcn 选项是函数句柄,fmincon 会在最终点处返回此函数作为 Hessian 矩阵。

相关主题