问题标签 [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.
algorithm - 遗传算法:命名驱动突变位置的部分
要设置我的问题,请允许我从一个示例开始:
假设一组 1000 个长度相同的数组(又名行向量)。每个都填充了 -1 和 1 之间的随机数。然后我随机抽取 500 个这些行向量并将它们相加。我现在从总和开始,想从最初的 1000 中对选择进行逆向工程。
我决定用遗传算法解决这个问题。我开始了一系列 1000 位长的位串,并运行了变异(又名,翻转随机位)和交叉过程。然后,十分之一秒后,我是 75% 正确的。然后,再过一个小时,我是对的 76%。本质上,我一直在等待正确设置几十位。可能是我的随机数生成器从未以可以合并到解决方案中的方式引入它们。
该算法在开始时做得很好,但后来未能进一步改进解决方案。我试着确保我的基因家族拥有每一个可能的位置之一。那没有帮助;您无法判断物品会以多快的速度从池中消失。
似乎该算法必须有一个额外的组件。一定有什么东西在驱动翻转位(又名突变)位置的选择。这件作品的技术术语是什么?坡度?它从何而来?
machine-learning - 机器学习如何处理大量特征
我开发了一个图像处理程序,可以识别给定数字图像的数字。每张图像为 27x27 像素 = 729 像素。我取每个 R、G 和 B 值,这意味着我从每个图像中有 2187 个变量(截距 +1 = 总共 2188)。
我使用了以下梯度下降公式:
其中θj
是变量 j 的系数;α
是学习率;hθ(x)
是假设;y
是实际值,xj
是变量 j 的值。m
是训练集的数量。hθ(x)
,y
是针对每个训练集的(即,这就是求和符号的用途)。进一步的假设被定义为:
有了这个和 3000 张训练图像,我能够在一个多小时内训练我的程序,并且在交叉验证集上进行测试时,它能够识别正确的图像 ~ 67% 的时间。
我想改进它,所以我决定尝试 2 次多项式。
然而,每张图像的变量数量从 2188 个跃升至 2,394,766 个!仅做一步梯度下降就需要我一个小时。
所以我的问题是,机器学习中如何处理大量变量?一方面,我没有足够的空间来为每个训练集保存那么多变量。另一方面,我目前为每个训练样本存储 2188 个变量,但我必须执行 O(n^2) 才能将每个变量的值乘以另一个变量(即多项式到 2 阶值)。
因此,非常感谢任何建议/建议。
artificial-intelligence - ANN:如何正确选择初始权重以避免局部最小值?
在反向传播训练中,在沿着误差面梯度下降的过程中,隐藏层中具有大量神经元的网络可能会陷入局部最小值。我已经读过在所有情况下将权重重新初始化为随机数最终会避免这个问题。这意味着始终存在一组“正确”的初始权重值。(假设这是安全的吗?)
我需要找到或制作找到它们的算法。
我试过用谷歌搜索算法,尝试自己设计它,但无济于事。任何人都可以提出解决方案吗?也许我可以搜索的算法名称?
注意:这是一个常规的前馈 3 层卷饼 :)
注意:我知道已经尝试为此目的使用 GA,但这需要在每次迭代中重新训练网络,当它变得足够大时,这会耗费时间。
提前致谢。
python - 使用 python 和 numpy 进行梯度下降
上面代码中的我的 theta 是100.2 100.2
,但它应该100.2 61.09
在 matlab 中是正确的。
machine-learning - 反向传播,所有输出趋向于 1
我在 MATLAB 中有这个反向传播实现,并且在训练它时遇到了问题。在训练阶段的早期,所有输出都变为 1。我已将输入数据(除了用于生成二进制目标向量的所需类)标准化为区间 [0, 1]。我一直在提到人工智能中的实现:一种现代方法,Norvig 等人。
根据我的代码检查了伪代码(并研究了一段时间的算法),我无法发现错误。我已经很久没有使用 MATLAB,所以一直在尝试在需要的地方使用文档。
我还尝试了隐藏层中不同数量的节点和不同的学习率(ALPHA
)。
目标数据编码如下:当目标被分类为 时,2
目标向量将是[0,1,0]
,假设它是1
,[1, 0, 0]
依此类推。我还尝试对目标使用不同的值,例如 (for class 1
for example) [0.5, 0, 0]
。
我注意到我的一些体重超过了1
,导致净值很大。
machine-learning - 当我们可以解析地解决线性回归时,为什么梯度下降
在线性回归空间中使用梯度下降有什么好处?看起来我们可以用分析方法解决问题(找到最小成本函数的 theta0-n)那么为什么我们仍然想使用梯度下降来做同样的事情呢?谢谢
matlab - 复值神经网络 (CVNN) 误差散度
我目前正在研究复值神经网络(CVNN)的本科论文。我的主题是基于单层复值神经网络的实值分类问题。我正在使用梯度下降学习规则对给定的数据集进行分类以下:
我在这里使用的算法可以在以下 PDF 的第 946 页上找到,标记为复值神经元 (CVN) 模型。主要算法可以在该主题的第 3 部分
但是我的误差曲线并没有收敛,而是表现出不同的特征。这是我的误差曲线输出。
我在MATLAB上模拟这背后的代码。我的实现也在下面给出:
我仍然无法弄清楚数据集上这种相反特征背后的原因。因此,感谢您对此提供任何帮助。
scikit-learn - Sklearn SGDClassifier minibatch-learning and learning rate schedule
partial_fit
当我使用该方法训练它时,我试图拼凑 SGDClassifier 如何选择它的学习率。
即,我的主要学习循环如下所示:
现在,由于我通过整个训练集进行了 40 次传递,我想随着时间的推移调整我的学习率。如果我使用fit
而不是部分拟合,我的理解是这会自动发生(除非我修改learning_rate
参数)。
但是,我不清楚在使用部分拟合时这是如何发生的。略读代码也无济于事。谁能澄清我如何在我的设置中实现退火学习率?
machine-learning - 梯度上升收敛
我试图通过梯度上升过程最大化目标函数的对数。我正在观察一个客观的价值序列,其中价值首先增加然后再次开始减少。我想知道这是否可能?我的意思是,是否存在这样的函数,其上升过程通过最大值然后产生递减值路径。以下是目标值序列的链接。
machine-learning - 使用梯度下降优化方法时如何从新数据中学习?
考虑最终使用梯度下降优化方法的任何情况。假设您已经成功创建了一个适合您的训练集并且运行良好的假设。一段时间后,你的算法会收到越来越多的新数据,它必须从中学习。
问题:1)这个算法可以继续被认为是有监督的吗?
2)如果是这样,有没有办法从新数据中学习而无需再次遍历所有(新+旧)数据?