问题标签 [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 投票
1 回答
1165 浏览

machine-learning - 具有梯度下降误差的逻辑回归

我正在尝试使用梯度下降实现逻辑回归,

我得到了迭代次数的成本函数 j_theta,幸运的是,当根据迭代次数绘制 j_theta 时,我的 j_theta 正在减少。

我使用的数据集如下:

我设法使用梯度下降为逻辑回归编写的代码是:

如果您查看 x1 与 x2 的图表,图表将如下所示,

在此处输入图像描述

运行代码后,我创建了一个决策边界。决策线的形状似乎还可以,但有点偏移。带有决策边界的 x1 与 x2 的关系图如下所示:

![在此处输入图像描述][2]

请告诉我我哪里错了......

谢谢:)

新图表::::

0 投票
0 回答
219 浏览

machine-learning - 具有梯度下降的逻辑回归导致不同数据集的不同结果

我正在尝试使用梯度下降和两个数据集进行逻辑回归,每个数据集我得到不同的结果。

数据集 1 输入

数据集2输入-

y =

数据集 1 和数据集 2 的区别只是值的范围。当我为这两个数据集运行我的通用代码时,我的代码为数据集 1 提供了所需的输出,但为数据集 2 提供了非常奇怪的想法。

我的代码如下:

请找到每个数据集的图表,如下所示:

对于数据集 1:

在此处输入图像描述

对于数据集2:

在此处输入图像描述

如您所见,数据集一给了我正确的答案。

话虽如此,我相信 datsaet2 的数据范围很广,可能是 10-100,因此为了对其进行规范化,我对 dataset2 使用了特征缩放并得到了图表。形成的决策线是正确的,但略低于预期的位置,请自己查看。

具有特征缩放的 Dataset2 输入:

下面给出了在我之前的代码中添加特征缩放后得到的图表

在此处输入图像描述

正如你所看到的,如果决策线有点高,那么我就会得到完美的输出..

请帮助我理解这个场景,为什么即使特征缩放也无济于事。或者如果我的代码有错误,或者我遗漏了什么。

0 投票
1 回答
1918 浏览

machine-learning - 神经网络小批量梯度下降

我正在使用多层神经网络。我打算做小批量梯度下降。假设我有 100 个超过 100 万个数据点的小批量。我不明白我必须更新整个网络的权重的部分。当我对这 100 个样本进行前向传递时,我将这 100 个样本的所有错误相加。除了这个我还能做什么?我是否也必须并排计算隐藏层错误?什么时候计算?

0 投票
1 回答
3499 浏览

python - Theano 教程中的说明

我正在阅读Theano 文档主页上提供的本教程

我不确定梯度下降部分给出的代码。

在此处输入图像描述

我对 for 循环有疑问

如果将“ param_update ”变量初始化为零。

然后在剩下的两行中更新它的值。

为什么我们需要它?

我想我在这里弄错了。你们能帮帮我吗!

0 投票
0 回答
982 浏览

machine-learning - 使用梯度下降的 SVM - 公式

在使用梯度下降进行线性 SVM(支持向量机)时,我遇到了一些困难。

我使用的公式如下所示。

在此处输入图像描述

其中第一个方程是成本函数,第二个方程是每个特征的 theta 值。

c是对拟合参数(Regularization parameter)的控制

alpha 决定斜率收敛的速率。

不知何故,当我为我的数据集运行上述公式时,我的 j(theta) 不断增加,它永远不会减少。我通过更改 c 和 alpha 的值尝试了所有可能的情况。

如果公式中可能有任何错误,如果有人能指出,我会很高兴。

这是我正在使用的八度代码:

谢谢

0 投票
1 回答
54 浏览

multithreading - Matlab中的双线程处理

我有一个使用 Matlab 运行的大规模梯度下降优化问题。代码有两部分:

  1. 触发每次更新参数向量的迭代的顺序更新部分。
  2. 一个验证错误计算部分,每 10 次左右的迭代触发一次,它使用触发它的相应迭代结束时的参数值。

我现在运行的方式是依次执行 (1) 和 (2)。但是(2)需要很多时间,而且它不是我日常工作的核心部分——我只是为了检查进度并绘制模型的错误。是否可以在 Matlab 中以与 (1) 并行的方式运行 (2) ?请注意,(1) 不能并行运行,因为它执行顺序更新。所以一个简单的“parfor”用法不是一个解决方案,除非有一个非常聪明的方法来做到这一点。

0 投票
1 回答
605 浏览

numpy - 向量化梯度下降 Numpy

我在 Numpy 中实现了这个梯度下降:

虽然代码的其他部分在这里完全矢量化,但仍有一个 for 循环在我看来是不可能消除的;特别要求在每一步更新 theta 我不知道如何对其进行矢量化或以更有效的方式编写它。

感谢您的帮助

0 投票
0 回答
727 浏览

matlab - 在从初始猜测重新分配所有权重之前,Logistic 回归的梯度下降停止

我正在尝试在 MATLAB 中实现逻辑回归分类,并坚持使用梯度下降计算正确的权重。

我正在使用随机方法,因此我为每个特征单独更新权重向量中的每个权重,然后移动到下一个样本并再次执行。

我正在使用更新方程

theta_j := theta_j - alpha * (y_i - h_theta(x_i)) * x_ij

当最后一个权重向量与当前权重向量之间的差异小于 0.00005 时,我会中断。我计算两个向量之间的“差”,方法是从另一个向量中减去一个,然后取它们差向量的点积的平方根。

问题是它似乎只在四次更新后就停止了更新,所以我的 8 行权重向量中只有前四个被更新了。无论我的学习率 alpha 是多少,都会发生这种情况。

这是我的实现:

我也尝试过使用全局方法而不是随机方法,但它仍然会导致非常大的权重值。

这是我的 evaluateSigmoid 函数

这是我正在使用的数据集。最后一列被过滤掉,第一列根据是否满足阈值变为1或0(低于22为0,高于为1)。

0 投票
3 回答
6924 浏览

machine-learning - 使用矢量化的梯度下降八度代码未正确更新成本函数

我已经使用矢量化实现了以下梯度下降代码,但似乎成本函数没有正确递减。相反,成本函数随着每次迭代而增加。

假设 theta 为 n+1 向量,y 为 am 向量,X 为设计矩阵 m*(n+1)

计算成本函数为:

0 投票
1 回答
204 浏览

python - 具有随机输入实现的梯度下降

我正在尝试在数据集上实现梯度下降。尽管我尝试了一切,但我无法让它发挥作用。所以,我创建了一个测试用例。我正在对随机数据尝试我的代码并尝试调试。

更具体地说,我正在做的是生成 0-1 之间的随机向量和这些向量的随机标签。并尝试过度拟合训练数据。

然而,我的权重向量在每次迭代中变得越来越大。然后,我有无穷大。所以,我实际上并没有学到任何东西。这是我的代码:

我正在使用 LMS 进行损失函数。因此,在所有迭代中,我的更新如下,

在此处输入图像描述

其中 w^i 是第 i 个权重向量,R 是 stepSize,E(w^i) 是损失函数。

这是我的损失函数。(LMS)

在此处输入图像描述

这是我推导损失函数的方法,

在此处输入图像描述,

现在,我的问题是:

  1. 在这种使用梯度下降的随机场景中,我应该期待好的结果吗?(理论界限是多少?)
  2. 如果是,我的实现中的错误是什么?

PS:我尝试了其他几个maxIterations参数stepSize。还是行不通。PS2:这是我可以在这里提出问题的最佳方式。对不起,如果问题太具体。但这让我发疯了。我真的很想学习这个问题。