问题标签 [hessian-matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
609 浏览

matlab - 为 sqp 提供 Hessian 函数时的八度错误

我正在尝试以八度解决以下优化问题

公式

第一个约束是 A 是半正定的。S 是一组数据点,如果 (xi,xj) 在 S 中,则 xi 与 xj 相似,D 是一组数据点,如果 (xi,xj) 在 D 中,则 xi 和 xj 不相似。请注意,上面的公式是 2 个单独的总和,第二个总和没有嵌套。还假设 xi 和 xj 是长度为 N 的列向量。

因为这是一个非线性优化,我正在尝试使用 octave 的非线性程序求解器 sqp。 问题是,如果我只是为它提供优化的功能,在一些小玩具测试中,找到Hessian的 BFGS 方法会 失败。因此,我尝试提供自己的 Hessian 函数,但现在出现此问题

当我对 sqp 进行以下调用时

我通过仅求解对角线条目并将所有对角线条目限制为 >=0 来简化 A 为半正定和对角线的约束。initial_guess 是 N 长的向量。

这是我计算我认为是 Hessian 矩阵的代码

和 Dsum_of_squares 和 HessianNumertor 是

X 是一个 M x N 矩阵,每行有一个观测值。

D 是 M x M 相异矩阵。如果 D(i,j) 为 1,则 X 的第 i 行与第 j 行不同。否则为 0。

我相信我的错误出现在以下领域之一(从最不可能到最有可能)

  1. 我用来推导 Hessian 函数的数学是错误的。我使用的公式在我对该函数的评论中。
  2. 我的数学实现。
  3. sqp 想要的 Hessian 矩阵与 Hessian Matrix Wikipedia 页面上描述的不同。

任何帮助将不胜感激。如果您需要我发布更多代码,我很乐意这样做。目前,尝试解决优化问题的代码量约为 160 行。

这是我正在运行的导致代码失败的测试用例。如果我只将梯度函数传递给它,它就可以工作。

0 投票
1 回答
687 浏览

r - 在 log(eigen(sigma, symmetric = TRUE, only.values = TRUE)$values) 中:产生了 NaN

我正在使用 估计对数似然optim()。我遇到了一些特征值问题,这些问题无法让我找到有效的粗麻布矩阵,因此无法计算标准误差。

以下是我收到的“警告”消息:

有人可以帮我找到问题吗?

这是我的代码:

0 投票
2 回答
2960 浏览

matlab - Matlab fminunc计算标准误差MLE

尝试从 fminunc 计算估计的标准误差时遇到问题。我的估计技术是最大似然估计。我尝试了以下两种方法,都失败了:

  1. fminunc 结果中的 Hessian 矩阵是不可逆的,因此我无法从 Hessian 矩阵中得到标准误差。

  2. 所以我转向使用 OPG(梯度外积)方法来获得标准错误。但是,我提供的梯度未能通过导数检查。

有人知道我是否有其他方法可以获得标准错误?您的帮助将不胜感激!

0 投票
0 回答
666 浏览

algorithm - fminunc 不考虑用户提供的 Hessian

首先,对不起,如果我问的是微不足道的事情,但我只是在 matlab 中学习多变量微积分和优化工具箱——优化:)

我正在测试我对在matlab中对一个简单的 2D 函数使用优化工具箱的理解,并试图找到一些局部最小值,但是对于特定点,matlab或函数给了我确切的起点,并带有以下注释:“初始点是局部最小值. ". 我提供了渐变用户提供的Hessian。我不知道是MATLAB还是我。也许我在定义Hessian 时犯了错误,但我认为一切都是正确的。fminunc

对于随机起点,该函数始终给出适当的(最接近的)最小值。然而,对于某些点,在精确的最大值处,fminunc返回与上述语句完全相同的点。我应该使用不同的优化算法还是只是我需要接受的MATLAB东西?我认为提供Hessian会解决这个问题。Hessian在所有有问题的点上始终是负定义的矩阵,这应该意味着该点是最大值!!!我通过返回的特征值对它进行了测试eig(hessian)。看起来fminunc根本没有考虑 Hessian。我应该怎么做才能fminunc与粗麻布一起工作?

干杯!


错误的地方fminunc

例如最后一点:





我使用了下面的代码:


  • 绘制图形:


  • 我一直在测试局部最小值的函数的代码:

  • 0 投票
    4 回答
    4241 浏览

    r - R 黑森矩阵

    黑森矩阵

    我需要创建一个函数的 Hessian 矩阵,如下所示:

    我也需要二阶导数作为表达式,并且我需要多次评估它们,所以我制作了一个一阶导数列表和一个二阶导数列表。

    到目前为止,它有效。

    现在的问题是: 如何创建一个包含评估表达式值的矩阵?外面试了,没用。

    其他问题: 是否有更优雅的方式来存储二阶导数表达式?例如,是否可以将表达式存储在矩阵中而不是列表中?

    第三个问题: 是否有可能得到一个表达式的变量向量?上面我使用了手动输入的 vars <- c("x", "y") ,是否有必要或者是否有类似“get_variables”的方法?

    0 投票
    0 回答
    188 浏览

    r - optim() 中的无限 Hessian 和 mle() 中禁用的“开始”参数

    我试图使用mle()最小化 -log 似然函数,但是它总是会弹出如下错误消息:

    我的职能是:

    我尝试了上述两种方法,但都不起作用......

    有谁知道为什么?

    对于那些想介绍的人optim(),我实际上已经尝试过了,但是我的 Hessian 矩阵在取逆并提取对角线之后 - 变成了负数!收敛性很好。我不知道那是什么意思。所以我想尝试mle()看看事情是否可以改变。我的优化功能:

    我的 KF 功能:

    我不知道如何在这里附加文件,所以这里只是一瞥:

    0 投票
    2 回答
    4000 浏览

    matlab - How to measure gradient and Hessian matrix in matlab over gradient?

    By wikipedia http://en.wikipedia.org/wiki/Hessian_matrix , it is defined to be the square matrix of second order partial derivative of a function.

    Can anybody tell me if it's correct?

    0 投票
    1 回答
    2810 浏览

    matlab - 梯度和粗麻布问题的函数句柄 MATLAB

    我在处理渐变和粗麻布的函数句柄时遇到问题。

    我有以下代码:

    现在当我输入命令终端时:

    我得到一些标量值。

    但是当我输入

    我想要在这些点评估梯度的相应向量。

    对于渐变,我只是得到

    这只是 grad 向量函数。但我想要输入 x1 = 1 和 x2 = 2 的实际数值结果。

    返回错误。

    我不确定为什么。

    0 投票
    1 回答
    14679 浏览

    matlab - 图像的 Hessian 矩阵

    我想知道图像的Hessian 矩阵提供什么信息?它是否提供稳定点的信息?Hessian矩阵有什么用?

    0 投票
    2 回答
    2152 浏览

    r - R 错误:尝试使用最大值进行估计时,OPTIM 中的 Hessian 错误。可能性

    我是一个 R 菜鸟,这可能反映在不那么密集的代码中 - 所以请忍耐。我正在尝试使用最大值估计二元正态分布的系数。似然估计。我在调用 OPTIM 函数时收到与 Hessian 相关的错误。我已经尝试了很多调试,但似乎无法摆脱错误。非常感谢您对如何解决这个问题的任何见解。

    我使用的数据是 {y1,y2,x1,x2} 其中 y1,y2 是二进制变量。我用来模拟数据的代码如下:

    我试图估计的参数是潜在效用函数 z1 和 z2 中的 beta,以及方差-协方差矩阵中的非对角线元素。

    谢谢!

    我首先指定错误,然后在错误之后提供代码:

    首先,似乎源于代码中这一行的错误:

    A)如果我在调用 OPTIM 的参数中设置 hessian = F,我会收到以下错误和回溯:

    B)如果我在调用 OPTIM 的参数中设置 hessian = T,我会收到以下错误和回溯:


    现在代码: