神经网络-反向传播,训练误差

     2023-03-12     215

关键词:

【中文标题】神经网络-反向传播,训练误差【英文标题】:neural network-back propagation, error in training 【发布时间】:2011-11-20 16:40:47 【问题描述】:

在阅读了一些关于神经网络(反向传播)的文章后,我尝试自己编写一个简单的神经网络。

我决定了 XOR 神经网络, 我的问题是当我尝试训练网络时, 如果我只使用一个示例来训练网络,可以说 1,1,0(作为输入 1,输入 2,目标输出)。 经过 500 次火车 +- 网络回答 0.05。 但是如果我尝试了一个以上的例子(让我们说 2 种不同的或所有 4 种可能性),网络的目标是 0.5 作为输出:( 我在谷歌搜索我的错误没有结果:S 我会尽力提供尽可能多的细节来帮助找出问题所在:

-我尝试了具有 2,2,1 和 2,4,1 的网络(输入层、隐藏层、输出层)。

-由以下定义的每个神经元的输出:

double input = 0.0;
        for (int n = 0; n < layers[i].Count; n++)
            input += layers[i][n].Output * weights[n];

而“i”是当前层,权重是前一层的所有权重。

-最后一层(输出层)错误定义为:

value*(1-value)*(targetvalue-value);

而 'value' 是神经输出,而 'targetvalue' 是当前神经的目标输出。

-其他神经元的误差定义为:

foreach neural in the nextlayer 
           sum+=neural.value*currentneural.weights[neural];

-网络中的所有权重都由这个公式适应(神经网络的权重 -> 神经网络 2)

weight+=LearnRate*neural.myvalue*neural2.error;

而 LearnRate 是网络学习率(在我的网络中定义为 0.25)。 - 每个神经元的偏差权重定义为:

bias+=LearnRate*neural.myerror*neural.Bias;

偏差是 const value=1。

我能详细说明的, 正如我所说,输出的目标是 0.5,不同的训练示例:(

非常感谢您的帮助^_^。

【问题讨论】:

您是自己编写实现还是使用框架? 被保护后居然回答不了他的问题,真是好笑:) 【参考方案1】:

如果不查看完整代码,很难判断错误在哪里。您应该仔细检查的一件事是您对每个单元的局部误差梯度的计算是否与您在该层上使用的激活函数相匹配。看看这里的通用公式:http://www.learnartificialneuralnetworks.com/backpropagation.html。

例如,您对输出层进行的计算假设您使用的是逻辑 sigmoid 激活函数,但您没有在上面的代码中提及这一点,因此看起来您使用的是线性激活函数。

原则上,2-2-1 网络应该足以学习 XOR,尽管训练有时会陷入局部最小值而无法收敛到正确的状态。因此,重要的是不要从一次训练中得出关于算法性能的结论。请注意,简单的反向程序肯定会很慢,例如 Rprop 之类的更快、更健壮的解决方案。

有关该主题的书籍提供了简单网络的详细分步计算(例如 Negnevitsky 的“A.I.:智能系统指南”),这可以帮助您调试算法。另一种方法是使用现有框架(例如 Encog、FANN、Matlab)设置完全相同的拓扑和初始权重,并将计算结果与您自己的实现进行比较。

【讨论】:

反向传播 - 误差导数

...间】:2016-05-0902:21:10【问题描述】:我正在学习用于训练神经网络的反向传播算法。这有点道理,但还有一部分我不明白。据我了解,误差导数是针对网络中的所有权重计算的。这会导致误差梯度,其维数是网络中的权重数。然... 查看详情

cs231n误差反向传播

...向传播过程及其精妙之处,对于理解、实现、设计和调试神经网络非常关键。反向求导的核心问题是:给定函数$f(x)$ ,其中$x$是输入数据的向量,需要计算函数$f$关于$x$的梯度,也就是$ ablaf(x)$。之所以关注上述问题,是因... 查看详情

matlab中bp神经网络的训练算法具体是怎么样的

BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反... 查看详情

编写c语言版本的卷积神经网络cnn之三:cnn的误差反向传播过程

...sp;       上一节我们介绍了卷积神经网络的前向传播过程,这一节我们重点介绍反向传播过程,反向传播过程反映神经网络的学习训练过程。误差反向传播方法是神经网络学习的基础,网络上已经有许多... 查看详情

XOR 神经网络误差在训练期间停止减少

】XOR神经网络误差在训练期间停止减少【英文标题】:XORneuralnetworkerrorstopsdecreasingduringtraining【发布时间】:2011-12-2405:14:39【问题描述】:我正在使用随机梯度下降通过反向传播训练XOR神经网络。神经网络的权重被初始化为-0.5到... 查看详情

神经网络 MNIST:反向传播是正确的,但训练/测试精度非常低

】神经网络MNIST:反向传播是正确的,但训练/测试精度非常低【英文标题】:NeuralNetworkMNIST:Backpropagationiscorrect,buttraining/testaccuracyverylow【发布时间】:2018-01-0821:44:42【问题描述】:我正在构建一个神经网络来学习识别来自MNIST的... 查看详情

反向传播

...最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。基本的神经网络结构:前向传播也... 查看详情

神经网络为啥需要训练多轮运动

神经网络需要训练多轮运动主要是因为在单次训练中,网络只能得到有限的信息量和误差反馈,而训练多轮可以帮助网络逐渐优化参数,提高对数据的处理和分析能力。在神经网络的训练过程中,我们通常采用“前向传播”和“... 查看详情

反向传播算法的算法简介

反向传播算法(backpropagation)是目前用来训练人工神经网络(artificialneuralnetwork,ann)的最常用且最有效的算法。其主要思想是:(1)将训练集数据输入到ann的输入层,经过隐藏层,最后达到输出层并输出结果,这是ann的前向传... 查看详情

matlab深度学习多层神经网络

多层神经网络  对于多层神经网络的训练,delta规则是无效的,因为应用delta规则训练必须要误差,但在隐含层中没有定义。输出节点的误差是指标准输出和神经网络输出之间的差别,但训练数据不提供隐藏层的标准输出。 ... 查看详情

卷积神经网络(cnn)的训练过程

卷积神经网络的训练过程卷积神经网络的训练过程分为两个阶段。第一个阶段是数据由低层次向高层次传播的阶段,即前向传播阶段。另外一个阶段是,当前向传播得出的结果与预期不相符时,将误差从高层次向底层次进行传播... 查看详情

matlab中bp神经网络的训练算法具体是怎么样的

先用newff函数建立网络,再用train函数训练即可。1)正向传播:输入样本->输入层->各隐层(处理)->输出层注1:若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程)2)误差反向传播:输... 查看详情

神经网络入门——15反向传播(代码片段)

反向传播如何让多层神经网络学习呢?我们已了解了使用梯度下降来更新权重,反向传播算法则是它的一个延伸。以一个两层神经网络为例,可以使用链式法则计算输入层-隐藏层间权重的误差。要使用梯度下降法更新隐藏层的... 查看详情

bp神经网络的神经网络

参考技术A在人工神经网络发展历史中,很长一段时间里没有找到隐层的连接权值调整问题的有效算法。直到误差反向传播算法(BP算法)的提出,成功地解决了求解非线性连续函数的多层前馈神经网络权重调整问题。BP(BackPropagat... 查看详情

具有交叉熵误差的整流线性单元激活的反向传播

...4-08-1214:59:18【问题描述】:我正在尝试使用反向传播实现神经网络的梯度计算。我无法使用交叉熵误差和校正线性单元(ReLU)作为激活。我设法让我的实现使用sigmoid、tanh和ReLU激活函数处理平方误差。正确 查看详情

神经网络反向传播未完全训练

】神经网络反向传播未完全训练【英文标题】:Neuralnetworkbackpropnotfullytraining【发布时间】:2018-08-0419:52:01【问题描述】:我有这个我训练过的神经网络,如下所示,它可以工作,或者至少看起来可以工作,但问题在于训练。我... 查看详情

一文搞懂反向传播算法

...gation)运动,旨在得到最优的全局参数矩阵,进而将多层神经网络应用到分类或者回归任务中去。前向传递输入信号直至输出产生误差,反向传播误差信息更新权重矩阵。这两句话很好的形容了信息的流动方向,权重得以在信息... 查看详情

脱离公式谈谈对反向传播算法的理解

...失函数对所在层线性组合函数(判别函数)求导。误差项是反向传播的核心概念。从意义上,误差项反映了最终损失对某一层神经元的敏感程度,也间接反映了不同神经元对网络能力的贡献程度。从计算上,把误差项再... 查看详情