问题标签 [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.
neural-network - 用于 DNN 训练的无 Hessian 优化与梯度下降
Hessian-Free (HF) 优化技术与用于训练深度神经网络 (DNN) 的梯度下降技术(例如随机梯度下降 (SGD)、批量梯度下降、自适应梯度下降)相比如何?
在什么情况下应该更喜欢 HF 技术而不是梯度下降技术?
algorithm - 在神经网络中计算成本函数 hessian 的最有效方法
我正在编写一个MLP
网络,我想实现该levenberg-marquardt
算法。对于levenberg-marquardt
,每次迭代后的权重更新由以下公式给出:
但我找不到一个算法来计算(或有一个可接受的估计)hessian
。我怎样才能做到这一点?
r - 来自 R 中 optim 的错误 Hessian
我正在做一些极值分析。出于各种原因,我不想使用 fevd 包(首先我希望能够调整一些我无法做到的事情)。我编写了自己的代码。它大多非常简单,我以为我已经解决了所有问题。但是对于某些参数组合,我的对数似然分析(基于optim)得出的 Hessian 将不正确。
一步一步走过去。我的代码 - 或它的选定部分 - 看起来像这样:
在某些情况下,一切都很好。如果我运行我的例程和 fevd 例程,我会得到完全相同的结果。在某些情况下(在我的具体情况下,当 shape=-0.29 如此强烈地为负/weibull 时),我的例程会给出负方差和时髦的粗麻布。它并不总是错误的,但某些参数组合显然没有给出有效的 hessian (注意:参数仍然估计正确,含义与 fevd 结果相同,但协方差矩阵完全关闭)。
我发现这篇文章比较了两个程序的粗麻布,确实 optim 似乎很不稳定。但是,如果我只是在我的例程中替换 maxLik,它根本不会收敛(即使在收敛发生的情况下)。
我试图给出不同的初始值——即使是正确的值——但它就是不收敛。
我没有提供数据,因为我认为在我的示例中正确使用了 optim 例程。简而言之,对于某些参数组合,数值结果并不稳定。我的问题是:
1) 我在使用 maxLik 的方式上是否遗漏了什么?
2) 除了 maxLik 之外,还有其他优化例程可以从中提取粗麻布吗?
谢谢
scikit-learn - 如何在 scikit-learn 中进行逻辑回归后检索 Hessian?
我正在使用包 scikit-learn 来计算中等大数据集(300k 行,2k 列。这对我来说相当大!)的逻辑回归。
现在,由于 scikit-learn 不产生置信区间,我自己计算它们。为此,我需要计算并反转在最小值处评估的逻辑函数的 Hessian 矩阵。由于 scikit-learn 在优化时已经计算了 Hessian,如果我能检索它会很有效。
在sklearn.classification.LogisticRegression
中,有没有办法检索以最小值评估的 Hessian?
注意:这是一个中间步骤,实际上我只需要 Hessian 逆矩阵的对角线条目。如果有人有更直接的方法可以到达那里,我很想学习它。
matlab - 查找函数的符号 Hessian 矩阵
我有伪代码函数f(x,y)=x+y
,我想使用 Matlab 找到符号 Hessian 矩阵(2x2 二阶偏导数矩阵)。我该怎么做呢?
这是我的第一次尝试,与正确的语法相去甚远:
r - 计算 Hessian 的维度误差(最大似然)
鉴于我通过 for 循环强制 Hessian 成为 8x8,为什么我会收到错误,认为它是 2x1?
运行 8x8 Hessian 以在 nx8 回归数据集上生成 maxLik。得到一个错误,即 Hessian 是 2x1 而不是 8x8,即使这是在Hessian[i,j]<-中强制执行的。
- 数据集 x 为 nxk (4406x8)。
- 参数(估计器的初始迭代,maxLik 下的 start= 参数)向量是 8 个数字字符串,因此 loglambda 是 (nxk)%*%(8x1) 一个 nx1 向量。正确的?
- 然后时刻是 nx1 * nx1 即 nx1 作为元素乘法。正确的?
- 并且 Hessian 的每个元素都应该是标量,因为它是一个求和的 kx1 向量(来自时刻 %*% lambda)。这部分代码是不一致的。
主要的 qn 是,即使部分不是正确的维度(可能),Hessian[i,j <- -sum(vector) 应该形成一个标量,通过 {i,j} 在 1:8 循环中应该强制8x8。为什么这不起作用?
r - Hessian 是 -1 * Hessian 在使用 optim 找到函数最大值时
我想找到函数的最大值:
我可以使用以下代码进行“详尽”搜索:
该函数的最大值为11872
whend1 = 76
和d2 = 80
。
我还可以使用optim
以下代码找到最大值:
我将上面的函数乘以-1
得到最大值,并注意到这段代码返回的最大值是真正最大值的负数。此外,此代码返回的 Hessian 是真正的 Hessian * -1:
直到现在我才意识到这一点,也没有在optim
页面上看到它。我应该担心吗?如果有,在什么情况下?
语句中是否有一个选项可以在optim
找到最大值时返回原始函数的真正 Hessian 而不是 -1 * 原始函数?或者我应该知道,当我搜索最大值(而不是搜索最小值)并自己更正 Hessian 时,Hessian 乘以 -1?
python - 贝叶斯神经网络:Hessian 的计算
我正在尝试在 Python 中编写几种类型的 ANN 算法,以便更好地理解/直觉这些算法。我没有使用 Scikit-learn 或任何其他现成的软件包,因为我的目标是教育而不是实用。作为一个示例问题,我使用 MNIST 数据库(http://yann.lecun.com/exdb/mnist/)。
虽然我执行了简单的 1 隐藏层 NN 和卷积 NN,但我成功地避免了任何二阶优化方法,因此没有计算 Hessian 矩阵。然而,然后我到了贝叶斯神经网络,为了优化超参数,Hessian 的计算是强制性的。
在我的全连接网络中,有 784 个输入、300 个隐藏单元和 10 个输出单元。所有这些都会产生 238200 个权重(+ 偏差)。当我尝试计算甚至近似 Hessian(通过梯度的外积)时,Python 会通知“MemoryError”。即使我将权重数量减少到 ~40000 并且没有显示错误消息,我的计算机也会在几分钟后卡住。据我了解,问题在于理想的矩阵非常庞大。我浏览了几篇关于贝叶斯神经网络的文章,注意到作者通常使用不超过 10 或 20 个输入和隐藏单元的网络架构,因此参数比我少得多。但是,我没有看到任何关于此类限制的明确声明。
为了将贝叶斯方法应用于 MNIST 的 NN,我该怎么做?
更一般地说:是否可以将贝叶斯方法应用于此(238200 个权重)甚至更大的架构?或者也许它只适用于相对较小的网络?
python - python的任何优化器模块都支持具有奇异Hessian矩阵的对象函数吗?
我想用有界约束和线性不等式约束(即总和 wi*xi ≤ b)来解决约束最小化。然而,目标函数的 Hessian 矩阵可能是奇异的。
我已经用方法尝试了minimize
inscipy.optimize
模块SLSQP
,但没有运气。一个简化的问题如下:
我们可以看到优化器给出了错误的结果。是否有任何 python 模块可以满足要求?谢谢。
python - 在 Theano 中结合标量和向量来计算 Hessian
我正在尝试使用 Theano 来计算函数相对于向量以及几个标量的粗麻布(编辑:也就是说,我本质上希望将标量附加到我正在计算粗麻布的向量上) . 这是一个最小的例子:
我的第一次尝试是:
哪个失败了AssertionError: tensor.hessian expects a (list of) 1 dimensional variable as 'wrt'
我的第二次尝试是将 A、b 和 c 与:
哪个失败了DisconnectedInputError: grad method was asked to compute the gradient with respect to a variable that is not part of the computational graph of the cost, or is used only by a non-differentiable operator: Join.0
在这种情况下计算粗麻布的正确方法是什么?
更新:为了澄清我在寻找什么,假设 A 是一个 2 元素向量。那么 Hessian 将是:
对于示例函数,它y
应该是:
因此,如果我们要定义一个函数:
然后,假设我们可以hy
成功计算,我们会期望输出:
在我的实际应用中,A有25个元素,y
比较复杂,但是思路是一样的。