问题标签 [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.

0 投票
1 回答
2295 浏览

algorithm - 神经网络 - 反向传播

关于训练实例的神经网络和反向传播,我需要一个简短的问题和一些说明。

如果有人可以将他们的示例建立在与此类似的基础上,那就太好了,因为我缺乏简单易懂的示例。

假设需要训练三种颜色,即红色、蓝色和绿色,我们使用标准化将红色表示如下,因为它们是标称值。

有 3 个输入层,2 个隐藏层和 1 个输出层。

我假设提供了 -1 和 1 之间的随机权重,并与通过该层馈送它的每个输入层节点相乘,并给出一个存储在实例旁边的网络输出值 0.562。这个输出值会与所有三个实例一起存储吗?训练如何进行以便计算误差然后反向传播?这才是真正让我困惑的地方。

因为我需要编写这个算法,所以最好先更好地理解。

0 投票
1 回答
4712 浏览

backpropagation - 使用反向传播算法实现感知器

我正在尝试使用反向传播实现两层感知器来解决奇偶校验问题。该网络有 4 个二进制输入,第一层有 4 个隐藏单元,第二层有 1 个输出。我将用作参考,但在收敛方面存在问题。

首先,我会注意到我使用 sigmoid 函数进行激活,因此导数是(据我了解)sigmoid(v) * (1 - sigmoid(v))。因此,在计算 delta 值时使用它。

所以,基本上我设置了网络并运行了几个 epoch(遍历每个可能的模式——在这种情况下,16 个输入模式)。在第一个 epoch 之后,权重略有变化。在第二个之后,无论我运行多少个 epoch,权重都不会改变并保持不变。我现在使用 0.1 的学习率和 +1 的偏差。

训练网络的过程如下伪代码(根据我检查过的来源,我认为这是正确的):

前馈步骤:

输出层的反向传播:

隐藏层的反向传播:

更新权重:

这个过程当然会在各个时期循环,并且权重变化会持续存在。所以,我的问题是,在第二个时期之后权重保持不变有什么原因吗?如有必要,我可以发布我的代码,但目前我希望有一些我忽略的明显内容。谢谢大家!

编辑:这是 sarnold 建议的我的代码的链接:
MLP.java: http : //codetidy.com/1903 Neuron.java:http://codetidy.com/1904 Pattern.java:http://codetidy 。 com/1905 input.txt:http ://codetidy.com/1906


0 投票
1 回答
1053 浏览

python - Pybrain:完全线性网络

我目前正在尝试使用 pybrain 创建一个用于股票价格预测的神经网络。到目前为止,我只使用了具有二进制输出的网络。对于那些网络,sigmoid 内层就足够了,但我认为这不是预测价格的正确方法。问题是,当我创建这样一个完全线性的网络时,我总是会遇到类似的错误

RuntimeWarning:反向传播训练时在方格中遇到溢出。

我已经缩小了输入。可能是由于我的训练集的大小(每个训练集 50000 个条目)?有没有人做过这样的事情?

0 投票
1 回答
4365 浏览

machine-learning - 如何调整权重 - 反向传播

我决定用遗传算法来训练神经网络。它们将通过遗传发展,其中一个(许多)可变基因应该是转移功能。

所以,我需要更深入地研究数学,这真的很耗时。

例如,我有三个传递函数基因的变体。

1)log sigmoid函数

2)tan sigmoid函数

3)高斯函数

传递函数基因的特点之一应该是它可以修改函数的参数以获得不同的函数形状。

现在,我还无法解决的问题:

我在神经网络的输出上有错误,如何通过不同参数的不同函数将其转移到权重上?根据我的研究,我认为这与导数和梯度下降有关。

我是高级数学菜鸟。有人可以通过简单的示例向我解释如何通过参数化(例如)sigmoid 函数将误差传播回权重吗?

编辑 我还在做研究,现在我不确定我是否误解了反向传播。我找到了这个文档 http://www.google.cz/url?sa=t&rct=j&q=backpropagation+algorithm+sigmoid+examples&source=web&cd=10&ved=0CHwQFjAJ&url=http%3A%2F%2Fwww4.rgu.ac.uk% 2Ffiles%2Fchapter3%2520-%2520bp.pdf&ei=ZF9CT-7PIsak4gTRypiiCA&usg=AFQjCNGWZjabH5ALbDLgSOBak-BTRGmS3g 并且他们有一些计算权重的示例,其中不涉及将函数转换为权重调整。

那么是否没有必要将传递函数纳入体重调整?

0 投票
1 回答
1403 浏览

neural-network - 使用神经网络进行天气预报

我正在尝试使用反向传播编写一个天气预报程序。我有不同参数的数据,如温度、湿度、风速、海平面压力等。我为输入层(温度、湿度、风速、海平面压力)设置了 4 个参数(4 个节点)。

现在我对输出/目标是什么感到困惑。需要按月/按季划分吗?以及如何标准化这 4 个不同的参数(在 -1 到 1 之间)?

0 投票
2 回答
7423 浏览

java - 反向传播算法

我在网上找到了一个示例,其中包含一种反向传播错误并调整权重的方法。我想知道这到底是如何工作的,以及使用了什么权重更新算法。会不会是梯度下降?

0 投票
1 回答
863 浏览

java - 反向传播算法——误差导数计算

在计算误差导数时,我正在使用以下工作,但不确定原因。

当我从第一个输出中删除减号时,它会失败并达到最大时期限制。我假设这就是不使用减号运算符的http://homepages.gold.ac.uk/nikolaev/311imlti.htm示例。

我目前正在查看一个修改现有的 BackPropagation 实现,它使用随机梯度下降并希望让它使用标准的反向传播算法。目前,它看起来像这样。

0 投票
1 回答
616 浏览

c# - 使用反向传播训练 ff nn

我在训练我的nn时遇到了一些困难。当我使用 10 个训练集时,在训练过程结束时,神经网络只针对最后两个进行训练。我输入的值与我用来训练网络的值相同,但我得到了错误的结果,除了最后两个。在我看来,新的 nn 记忆抑制了旧记忆。我使用了 64 个输入神经元,隐藏层中的 42 个神经元和一个输出神经元。Sigmoid 函数用于激活神经元。训练输入和预期输出在 0 到 1 的范围内。有谁知道可能导致问题的原因?

}

和神经元类

0 投票
4 回答
10058 浏览

artificial-intelligence - 训练 OCR 的前馈神经网络

目前我正在学习神经网络,我正在尝试创建一个可以被训练来识别手写字符的应用程序。对于这个问题,我使用了前馈神经网络,当我训练它识别 1、2 或 3 个不同的字符时,它似乎可以工作。但是当我试图让网络学习超过 3 个字符时,它会停滞在 40 - 60% 左右的错误百分比上。

我尝试了多层和更少/更多的神经元,但我似乎无法做到这一点,现在我想知道前馈神经网络是否能够识别那么多信息。

一些统计数据:

网络类型:前馈神经网络

输入神经元: 100(一个10 * 10)的网格用于绘制字符

输出神经元:要重新识别的字符数量

有谁知道我的架构中可能存在的缺陷是什么?输入神经元是否过多?前馈神经网络不能进行字符识别吗?

0 投票
2 回答
30696 浏览

java - 在 Java 中实现神经网络:训练和反向传播问题

我正在尝试用 Java 实现前馈神经网络。我创建了三个类 NNeuron、NLayer 和 NNetwork。“简单”的计算似乎很好(我得到了正确的总和/激活/输出),但是在训练过程中,我似乎没有得到正确的结果。谁能告诉我我做错了什么?NNetwork 类的整个代码很长,所以我发布了导致问题的部分:[编辑]:这实际上几乎是 NNetwork 类的全部

某些方法的名称(及其返回值/类型)是不言自明的,例如“this.getAllSums”返回每一层的总和(每个神经元的 sum(x_i*w_i)),“this.getAllOutputs”返回每层的输出(每个神经元的 sigmoid(sum))和返回第 i 层的第 j 个神经元的“this.getNeuron(i,j)”。

预先感谢您的帮助 :)