问题标签 [gradient-descent]

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 回答
88 浏览

java - 梯度下降计算中损失与特征的关系

我的队友和我正在尝试编写梯度下降的实现,我认为我们非常接近

我们(尝试)遵循与此问题的第一个答案相关的步骤,即:

1.计算假设 h = X * theta

2.计算损失 = h - y 可能是平方成本 (loss^2)/2m

3.计算梯度 = X' * loss / m

4.更新参数theta = theta - alpha * gradient

但是正如您从那里丢失的代码中看到的那样,我们对于如何计算梯度有点不知所措,我们是否正确设置了它?

如何执行该计算?

X'和X有什么区别?

0 投票
2 回答
60 浏览

c++ - 展开恒定数量的参数

我想为 C++ 上具有 5 个参数的函数编写一个简单的梯度下降。现在我偶然发现了一个实现模型问题:我是否应该牺牲速度来将我的参数折叠到向量/数组中。这就是我的意思。我可以像这样实现函数值和梯度计算:

或者:

最后一个更容易实现,但是如果我要不断分配/释放内存,恐怕我会失去很多速度。

我的问题是:

  1. 你会选择哪一个?
  2. 如果你曾经实现过梯度下降,你是如何处理这种情况的?
0 投票
1 回答
855 浏览

matlab - 线性回归中的梯度下降出错

我实际上想使用线性模型来拟合一组“罪”数据,但事实证明,损失函数在每次迭代期间都会变大。我下面的代码有问题吗?(梯度下降法)

这是我在 Matlab 中的代码

这是我想要拟合的数据 y=sin(x)

0 投票
2 回答
859 浏览

r - R中的增强树和变量交互

如何在机器学习的 Boosted 树分类模型 (adaboost) 中看到哪些变量相互影响以及相互作用的程度如何?如果可能的话,我想在 R gbm 包中使用它。

0 投票
1 回答
2833 浏览

python - 随机梯度下降收敛准则

目前我的 SGD 收敛标准检查 MSE 错误率是否在特定边界内。

权重会更新到训练集中的单个数据点。

alpha 为 0.001,模型应该在几次迭代中收敛,但我没有收敛。这个收敛标准是不是太严格了?

0 投票
1 回答
245 浏览

apache-spark - Apache Spark - org.apache.spark.SparkException:任务不可序列化

尝试运行我的方法时:

我得到错误:org.apache.spark.SparkException: Task not serialisable

我知道我的梯度下降方法不会并行化,因为每个步骤都取决于上一步 - 所以并行工作不是一种选择。但是,如果我这样做,则从控制台:

我收到上述错误。

但是,如果在控制台中我这样做:

它工作得很好。您可能已经注意到,第二个示例中的代码与第一个示例中的代码相同,除了我只是将代码从方法中取出并直接调用它而不是方法。

为什么一个有效而另一个无效?我很困惑。

(附加说明:类GradientDescent extends Serializable)。

gradientDescent方法:

我知道我正在使用存储在主服务器上的 2 个变量 -userFactors并且itemFactors- 由于该过程是顺序并行化是不可能的。但这并不能解释为什么从控制台调用方法不起作用,但在控制台中重写方法的内部会起作用。

0 投票
2 回答
210 浏览

r - 在R中的另一个循环内循环

我对循环函数的循环结果有疑问。它只在循环内计数一次,并为第一个 raw 选择最佳解决方案,然后停止。

我想记住矩阵每一行的最佳解决方案zmienne。我究竟做错了什么?

0 投票
0 回答
1655 浏览

machine-learning - torch - LookupTable 和梯度更新

我正在尝试实现具有多层的神经网络。我试图了解我所做的是否正确,如果不正确,我该如何调试。我这样做的方式是,我以以下方式定义我的神经网络(我使用一些先前学习的嵌入来初始化可查找层):

现在,为了训练网络,我遍历每个训练示例,并且对于每个示例,我调用 gradUpdate() ,其中包含以下代码(这直接来自示例):

findGrad 函数只是 WARP Loss 的一个实现,它返回梯度 wrt 输出。我想知道这是否就是我所需要的?我假设这将反向传播并更新所有层的参数。为了检查这一点,我训练了这个网络并保存了模型。然后我加载了模型并做了:

现在,我检查了 vector[1] 和 lookuptable.weight[1] ,它们是相同的。我不明白为什么查找表层中的权重没有更新?我在这里想念什么?

期待您的回复!

0 投票
0 回答
315 浏览

optimization - Apache Spark / MLLib 中是否有接受不需要梯度的自定义损失函数的优化器?

我刚刚开始尝试使用 Apache Spark / MLLib,我想尝试拟合一个难以区分似然函数的模型。我在 R 中知道优化算法不需要指定梯度(我想它是根据经验/数值导数计算的。)

Apache Spark 是否存在这样的算法?有人遇到过吗?是否有将其集成到当前优化库中的最佳实践?所有的 R 代码都是编译的,所以我无法弄清楚它们是如何运作的。

在此先感谢您的帮助,

斯科特

0 投票
0 回答
258 浏览

vector - 矩阵分解和梯度下降

我正在关注此处找到的论文,并尝试进行批量梯度下降(BGD)而不是论文中描述的随机梯度下降(SGD)。

对于 SGD,我收集的是你这样做(伪代码):

Repeat for every user

Do the same for every Item, except in 2. multiply by the user vector instead of the item vector

Go back to start and repeat until some breakpoint

对于 BGD,我所做的是:

Then repeat for the Items exchanging item vector in 2. for user vector

这似乎是有道理的,但在进一步阅读时,我对 BGD 感到​​困惑。它说 BGD 必须遍历整个数据集才能进行 1 次更改。这是否意味着像我所做的那样,相对于该特定用户的整个数据集,或者它的字面意思是整个数据集?

我做了一个遍历整个数据集的实现,对每个预测误差求和,然后使用该数字更新每个用户向量(所以所有用户向量都更新了相同的数量!)。但是,即使 λ 率为 0.002,它也不会接近最小值并且会迅速波动。它可以从 12'500 的平均误差到 1.2,然后到 -539 等等。最终,这个数字接近无穷大,我的程序失败了。

对这背后的数学的任何帮助都会很棒。