问题标签 [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.
machine-learning - 在随机梯度下降过程中,这两种更新假设的方式有什么区别?
我有一个关于在随机 GD 期间更新 theta 的问题。我有两种更新 theta 的方法:
1)使用前面的theta,得到所有样本的所有假设,然后通过每个样本更新theta。喜欢:
2)另一种方式:在扫描样本期间,使用最新的theta更新hypothese[i]。喜欢:
我检查了SGD代码,似乎第二种方式是正确的。但是在我的编码过程中,第一个会收敛得更快,结果也比第二个好。为什么错误的方式比正确的方式表现得更好?
我还附上了完整的代码如下:
machine-learning - 向量化梯度下降基础
我正在以八度音阶实现简单的梯度下降,但它不起作用。这是我正在使用的数据:
这是我的梯度下降实现:
问题是:
- 它会产生一些我使用的 theta 值,
theta * [1 2 3]
并期望输出接近 10(来自 y)。这是检验假设的正确方法吗?[h(x) = theta' * x] - 我如何确定它应该迭代多少次?如果我给它 1500 次迭代,theta 会变得非常小(在 e 中)。
- 如果我在 X 中使用两位数,theta 会再次变得太小。即使迭代次数 < 5。
我已经为这些事情苦苦挣扎了很长时间。无法自己解决。
抱歉格式错误。
python - 梯度下降未按预期工作
我Stochastic Gradient Descent
从scikit-learn
http://scikit-learn.org/stable/modules/sgd.html使用。链接中给出的示例如下所示:
如果,我是为这里提到的数据集做的,那么我会出错。以下是我正在做的事情以及我得到的错误:
谁能告诉我,我做错了什么?我也对gradient descent
python 中的其他实现持开放态度。
python - 多变量梯度下降
我正在学习gradient descent
计算系数。以下是我正在做的事情:
现在我上面的代码工作正常。如果我现在尝试多个变量并替换X
为X1
如下所示:
然后我的代码失败并显示以下错误:
谁能告诉我如何gradient descent
使用X1
?我使用的预期输出X1
是:
我也对其他 Python 实现持开放态度。我只想要coefficients (also called thetas)
forX1
和y
.
machine-learning - 小批量梯度只是在线梯度的总和吗?
我正在调整代码来训练一个神经网络,该网络进行在线训练以适用于小批量。权重 (de/dw) 的小批量梯度是否只是小批量中样本梯度的总和?或者,由于 sigmoid 输出函数,它是一些非线性函数吗?或者,它是总和但除以某个数字以使其更小吗?
澄清:最好把这个问题具体提出来,问一下full-batch梯度和在线梯度的关系。因此,请参见下一段:
我正在使用具有 sigmoid 激活函数的神经元对二维空间中的点进行分类。架构是 2 x 10 x 10 x 1。有 2 个输出类:一些点是 1,另一些是 0。误差是(目标 - 输出)平方的一半。我的问题是,整个批次梯度是否等于每个样本的梯度之和(在批次中保持权重不变)?
machine-learning - 使用梯度下降和 OCTAVE 的逻辑回归
我已经完成了 Andrew 教授的几门机器学习课程,并查看了使用牛顿方法进行逻辑回归的成绩单。然而,在使用梯度下降实现逻辑回归时,我面临着某些问题。
生成的图不是凸的。
我的代码如下:
我正在使用方程的矢量化实现。
每个say的代码没有给出任何错误,但不会产生正确的凸图。
如果有人能指出错误或分享导致问题的原因,我将很高兴。
谢谢
python - Sklearn SGDClassifier 部分拟合
我正在尝试使用 SGD 对大型数据集进行分类。由于数据太大而无法放入内存,我想使用partial_fit方法来训练分类器。我选择了适合内存的数据集样本(100,000 行)来测试fit与partial_fit:
然后我用相同的测试集测试这两个分类器。在第一种情况下,我得到 100% 的准确率。据我了解,SGD 默认通过训练数据 5 次(n_iter = 5)。
在第二种情况下,我必须将数据传递 60 次才能达到相同的精度。
为什么会有这种差异(5 vs. 60)?还是我做错了什么?
javascript - 可视化线性回归的梯度下降 - 没有很好地学习截距参数。
我正在为单变量线性回归编写一个小的 d3.js 可视化,其中两个参数是通过成本函数的梯度下降(误差平方和又名SSE)来学习的。
截至目前,我们可以看到最佳拟合线随着梯度下降迭代向参数“alpha”和“beta”的成本最小化选择进行调整,其中
在 javascript 中,数据表示为具有“x”和“y”属性的对象数组。数据生成如下:
- 首先,X是从 'lowBound' 和 'upBound' 之间的均匀分布中采样的
- 接下来,根据数据生成过程对Y进行采样:y = 3x - 10 + error,
其中误差是从均值为零和方差errorVariance的正态分布中采样的。
我编写了一些 d3.js 代码来实现梯度下降,当我观看可视化时,似乎没有正确学习截距项。这是因为该算法经常调整斜率参数,但仅从其初始值(随机选择)非常轻微地调整截距参数。有三种可能:
- 我在数学(或数学的 javascript 表示)中犯了一个错误。
- 我在可视化中犯了一个错误(例如 d3 SVG 的东西)。
- 我没有犯错,SSE关于截距参数alpha的偏导数远小于斜率参数,因此梯度下降不会对alpha进行太多调整是有道理的。
我实在想不通答案是什么。因此,我将发布我的代码的简化设置,希望有人能够为我提供一些启发。您还可以在此处查看当前形式的可视化(并查看完整源代码)。我们现在只关心数学。如果有人希望我发布将数据连接到 svg 元素的代码,我很乐意这样做,但我认为问题更可能出在此处。
这一切都很好,花花公子。然后在第 2 节中,我提供了进行梯度下降的实用程序。
我提前感谢您的所有帮助。
有点不相关,我想通过参数空间中的等高线图或嵌入欧几里得 3 空间(z 轴是成本)中的表面来显示成本函数的水平集,并观察该空间中的参数变化为出色地。我找到了 mike bostock 关于如何使用等高线图的帖子,但是
python - 神经网络训练误差随机梯度下降
我在 python 中实现了具有随机梯度下降的前馈神经网络。当使用异或门训练 NN 实例时,它训练得很好。但是当我用库存变化数据训练实例时,它会抛出这个错误:
XOR Gate 数据和股票数据看起来像这样(请注意,股票数据已被大大截断):
然后,我为 XOR Gate 创建了一个具有 2 个输入、2 个隐藏和 1 个输出的网络。Stock 数据有 3 个输入、15 个隐藏和 1 个输出。
两个训练集的结构完全相同,为什么会出现这个错误呢?
网络.py:
编辑: 我相信它可能与隐藏层值有关。我更改了 XOR Gate 隐藏层编号,它抛出了同样的错误。似乎隐藏层的值必须与输入层的数量完全相同。
machine-learning - 多项式回归的批量梯度下降
我试图从简单的线性单变量梯度下降转向更高级的东西:一组点的最佳多项式拟合。我创建了一个简单的 octave 测试脚本,它允许我在 2D 空间中直观地设置点,然后启动梯度下降算法并查看它如何逐渐接近最佳拟合。
不幸的是,它的效果不如简单的单变量线性回归:我得到的结果(当我得到它们时)与我期望的多项式不一致!
这是代码:
我不断得到错误的结果,即使看起来 J 被正确地最小化了。我用正规方程检查了绘图函数(它当然可以正常工作,虽然我相信错误出在 theta 方程的某个地方,但我无法弄清楚它是什么。