问题标签 [backpropagation]
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.
nlp - 用于 OCR 的多层感知器
我打算使用经过反向传播训练的多层感知器网络(一个隐藏层,输入用作包含图像中黑白像素的 8x8 位矩阵)。出现以下问题:
- 我应该使用哪种类型的学习:批量学习还是在线学习?
- 我如何估计隐藏层中正确的节点数?我打算处理英文字母的26个字母。
- 我怎样才能停止训练过程,以避免过度拟合?
- (不太相关)是否有另一个比 MLP 表现更好的 NN?我知道 MLP 会陷入局部最小值、过度拟合等问题,那么是否有更好的(基于软计算的)方法?
谢谢
neural-network - 神经网络反向传播?
谁能推荐一个网站或简要介绍如何在 NN 中实现反向传播?我了解基本概念,但不确定如何编写代码。
我发现的许多资料都只是简单地显示了方程式,而没有解释为什么要这样做,而且变量名很难找到。
例子:
在那个例子中,有人可以解释
谢谢。
batch-file - 反向传播和批量训练
反向传播计算dW
每个模式的每个权重(权重增量),因此在进行随机训练时如何修改权重很简单。但是,我如何将它用于批量训练?简单地累积dW
整个训练集,然后应用修改,还是还有更多?
machine-learning - 单网络 - 多输出,还是多网络 - 单输出?
在设计具有多个输出的前馈神经网络时,具有具有多个输出的单个网络与具有多个网络且每个具有单个输出之间是否存在概念差异(计算效率除外)?
尽管同一网络中的输出神经元不会“即时”相互影响,但它们确实会影响训练,因为来自每个输出的误差会反向传播并影响隐藏层的权重,进而影响其他输出的值.
有没有可以更好地解决的问题?直觉上,我会说单个网络更适合一次只有一个输出应该处于活动状态的问题(即 OCR),其中多个网络更适合多个输出可以同时处于活动状态的问题(即当每个输出对应于某些特征时)在输入中,其中几个可以同时出现)。但这只是直觉。它实际上成立吗?
computer-science - 了解神经网络反向传播
更新:问题的更好表述。
我试图以 XOR 神经网络为例来理解反向传播算法。对于这种情况,有 2 个输入神经元 + 1 个偏置,隐藏层中的 2 个神经元 + 1 个偏置,以及 1 个输出神经元。
(来源:wikimedia.org)
我正在使用随机反向传播。
在阅读了更多内容后,我发现输出单元的误差被传播到隐藏层......最初这很令人困惑,因为当你到达神经网络的输入层时,每个神经元都会得到一个误差调整来自隐藏层中的两个神经元。尤其是误差的分布方式,一开始很难掌握。
第 1 步计算每个输入实例的输出。
第 2 步计算输出神经元(在我们的例子中只有一个)和目标值之间的误差:第 3 步我们使用第 2 步的误差来计算每个隐藏单元 h 的误差:
“权重 kh”是隐藏单元 h 和输出单元 k 之间的权重,这很容易混淆,因为输入单元没有与输出单元相关的直接权重。盯着公式看了几个小时后,我开始思考求和是什么意思,我开始得出结论,连接到隐藏层神经元的每个输入神经元的权重乘以输出误差并求和. 这是一个合乎逻辑的结论,但公式似乎有点混乱,因为它清楚地表示了“权重 kh”(在输出层 k 和隐藏层 h 之间)。
我在这里正确理解一切吗?有人可以证实这一点吗?
输入层的 O(h) 是多少?我的理解是每个输入节点都有两个输出:一个进入隐藏层的第一个节点,一个进入第二个节点隐藏层。两个输出中的哪一个应该插入O(h)*(1 - O(h))
公式的部分?
neural-network - 使用神经网络的天气预报
我正在尝试使用反向传播编写一个天气预报程序。我是这个领域的初学者。我有不同参数的历史数据,如温度、湿度、风速、降雨量等。
我对如何将这些数据提供给输入层感到困惑。是否要为每个输入节点提供给定日期的全部数据,还是我需要为每个参数设置不同的网络?我也对输出层感到困惑。
machine-learning - 偏差在神经网络中的作用是什么?
我知道梯度下降和反向传播算法。我不明白的是:什么时候使用偏见很重要,你如何使用它?
例如,在映射AND
函数时,当我使用两个输入和一个输出时,它没有给出正确的权重。但是,当我使用三个输入(其中一个是偏差)时,它会给出正确的权重。
neural-network - 弹性反向传播神经网络 - 关于梯度的问题
首先我想说我对神经网络真的很陌生,而且我不太了解它;)
我已经完成了反向传播神经网络的第一个 C# 实现。我已经使用 XOR 对其进行了测试,它看起来可以正常工作。
现在我想改变我的实现以使用弹性反向传播(Rprop - http://en.wikipedia.org/wiki/Rprop)。
定义说:“Rprop 只考虑所有模式的偏导数的符号(而不是大小),并且独立地作用于每个“权重”。
有人能告诉我所有模式的偏导数是什么吗?以及我应该如何计算隐藏层中神经元的偏导数。
非常感谢
更新:
我的实现基于此 Java 代码:www_.dia.fi.upm.es/~jamartin/downloads/bpnn.java
我的 backPropagate 方法如下所示:
那么我可以使用 change = hidden_deltas[j] * activationsInputs[i]
变量作为梯度(偏导数)来检查唱歌吗?
backpropagation - 用于快速训练的神经网络设置
我正在创建一个工具,用于根据过去的数据预测软件项目的时间和成本。该工具使用神经网络来做到这一点,到目前为止,结果很有希望,但我认为我可以通过改变网络的属性来做更多的优化。在这些设置方面似乎没有任何规则甚至许多最佳实践,所以如果有经验的人可以帮助我,我将不胜感激。
输入数据由一系列整数组成,这些整数可以随用户的需要而上升,但我原以为大多数会低于 100,000。有些会低至 1。它们是项目中的人数和项目成本等详细信息,以及有关数据库实体和用例的详细信息。
总共有 10 个输入和 2 个输出(时间和成本)。我正在使用弹性传播来训练网络。目前它有:10 个输入节点、1 个带有 5 个节点的隐藏层和 2 个输出节点。我正在训练将错误率控制在 5% 以下。
该算法必须在网络服务器上运行,因此我采取了一种措施,当它看起来无处可去时停止训练。这设置为 10,000 次训练迭代。
目前,当我尝试使用一些不同的数据来训练它时,但在我们期望用户投入的范围内,训练需要很长时间,一遍又一遍地达到 10,000 次迭代限制。
这是我第一次使用神经网络,我真的不知道会发生什么。如果你能给我一些关于我应该为网络和迭代限制使用什么样的设置的提示,我将不胜感激。
谢谢!
neural-network - 交叉熵误差函数在普通的反向传播算法中是如何工作的?
我正在使用 C++ 开发前馈反向传播网络,但似乎无法使其正常工作。我所基于的网络正在使用交叉熵误差函数。但是,我对它不是很熟悉,即使我正在尝试查找它,我仍然不确定。有时看起来很容易,有时看起来很困难。该网络将解决多项分类问题,据我了解,交叉熵误差函数适用于这些情况。有人知道它是如何工作的吗?