问题标签 [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.
c - 神经网络反向传播问题
在阅读了很多其他人的神经网络代码后,我确信我的代码有问题。它有效,我可以训练一个网络,只是为了训练隐藏层中的下一个感知器,我必须训练最后一个,我不应该能够并行训练隐藏层中的所有单元吗?
下面是它计算隐藏层误差的代码:
它应该是这样的(但这不起作用):
为什么必须为整个层而不是单个感知器声明 sum 变量?
neural-network - 用于移动机器人导航的神经网络
在使用人工神经网络设计移动机器人导航时 - 倾向于使用反向传播方法而不是前馈方法,为什么?
neural-network - 在神经网络中进行自适应学习率时使用哪个乘法和加法因子?
我是神经网络的新手,为了掌握这个问题,我已经实现了一个基本的前馈 MLP,我目前通过反向传播进行训练。我知道有更复杂和更好的方法可以做到这一点,但在机器学习简介中,他们建议通过一两个技巧,基本梯度下降可以有效地从现实世界的数据中学习。技巧之一是自适应学习率。
这个想法是当误差变小时将学习率增加一个常数值a,当误差变大时将其降低学习率的一部分b。所以基本上学习率的变化取决于:
如果我们朝着正确的方向学习,并且
如果我们正在破坏我们的学习。但是,在上面的书中没有关于如何设置这些参数的建议。我不希望有一个精确的建议,因为参数调整本身就是一个完整的主题,但至少在它们的数量级上只是一个提示。有任何想法吗?
谢谢你,
图努兹
matlab - 具有模糊聚类神经网络的贝叶斯信念网络/系统
许多研究认为,与传统方法相比,人工神经网络 (ANN) 可以提高入侵检测系统 (IDS) 的性能。但是对于基于ANN的IDS,检测精度,尤其是低频攻击的检测精度和检测稳定性仍有待提高。一种新的方法叫做FC-ANN,基于ANN和模糊聚类,来解决这个问题,帮助IDS实现更高的检测率、更少的误报率和更强的稳定性。FC-ANN的一般过程如下:首先使用模糊聚类技术生成不同的训练子集。随后,基于不同的训练子集,训练不同的人工神经网络模型,形成不同的基础模型。最后,使用元学习器模糊聚合模块来聚合这些结果。
问题:
是否可以将贝叶斯信念网络/系统与模糊聚类神经网络结合起来进行入侵检测?
谁能预见我可能遇到的任何问题?您的意见将是最有价值的。
c# - 神经网络-反向传播,训练误差
在阅读了一些关于神经网络(反向传播)的文章后,我尝试自己编写一个简单的神经网络。
我决定了 XOR 神经网络,我的问题是当我试图训练网络时,如果我只使用一个例子来训练网络,让我们说 1,1,0(作为输入 1,输入 2,目标输出)。经过 500 次火车 +- 网络回答 0.05。但是,如果我尝试不止一个示例(让我们说 2 种不同或所有 4 种可能性),网络的目标是 0.5 作为输出 :( 我在谷歌搜索我的错误但没有结果:我会尽量提供尽可能多的细节帮助找出问题所在:
-ive 尝试了具有 2,2,1 和 2,4,1 的网络(输入层、隐藏层、输出层)。
- 每个神经元的输出定义为:
而“i”是当前层,权重是前一层的所有权重。
- 最后一层(输出层)错误定义为:
而“value”是神经输出,“targetvalue”是当前神经的目标输出。
- 其他神经元的误差定义为:
- 网络中的所有权重都由这个公式调整(来自神经网络的权重 -> 神经网络 2)
而 LearnRate 是网络学习率(在我的网络中定义为 0.25)。- 每个神经元的偏差权重定义为:
偏差是常量值 = 1。
这几乎是我能详细说明的,正如我所说的输出目标是 0.5,不同的训练示例:(
非常感谢您的帮助^_^。
artificial-intelligence - 为什么识别 XOR 算子的反向传播神经网络需要偏置神经元?
我昨天发布了一个问题,是关于我在 XOR 运算符的反向传播神经网络中遇到的问题。我做了更多的工作,并意识到这可能与没有偏置神经元有关。
我的问题是,一般偏置神经元的作用是什么,它在识别 XOR 算子的反向传播神经网络中的作用是什么?是否可以创建一个没有偏置神经元的神经元?
neural-network - XOR 神经网络误差在训练期间停止减少
我正在使用随机梯度下降通过反向传播训练 XOR 神经网络。神经网络的权重被初始化为 -0.5 到 0.5 之间的随机值。神经网络在大约 80% 的时间内成功地训练了自己。然而,有时它在反向传播时会“卡住”。通过“卡住”,我的意思是我开始看到错误纠正率下降。例如,在成功的训练过程中,随着网络的学习,总误差会迅速减少,如下所示:
然而,当它卡住时,总错误正在减少,但它似乎正在下降:
当我阅读神经网络时,我遇到了关于局部最小值和全局最小值的讨论,以及神经网络如何并不真正“知道”它应该走向哪个最小值。
我的网络是否陷入局部最小值而不是全局最小值?
artificial-intelligence - 激活函数和初始权重的选择对神经网络是否陷入局部最小值有任何影响吗?
我昨天发布了这个问题,询问我的神经网络(我正在使用随机梯度下降通过反向传播进行训练)是否陷入局部最小值。以下论文讨论了 XOR 神经网络中的局部最小值问题。第一篇说不存在局部最小值问题,而下一篇论文(一年后写)说在 2-3-1 XOR 神经网络中存在局部最小值问题(作为另外,我使用的是 3-3-1,即输入层和隐藏层的偏差)。这两个都是摘要(我无法访问完整的论文,所以我无法阅读它):
- XOR 没有局部最小值:神经网络误差面分析的案例研究。 由哈米 LG。澳大利亚悉尼麦考瑞大学计算机系
- 2-3-1 XOR 网络的本地最小值。 作者:Sprinkhuizen-Kuyper IG,Boers EW。
还有另一篇论文 [PDF]说最简单的 XOR 网络没有局部最小值,但它似乎不是在谈论 2-3-1 网络。
现在回到我的实际问题:我找不到任何讨论激活函数的选择、初始权重以及这对神经网络是否会陷入局部最小值的影响。我问这个问题的原因是,在我的代码中,我尝试使用标准的 sigmoid 激活函数和双曲正切激活函数。我注意到在前者中,我只有大约 20% 的时间会被卡住,而在后者中,我往往会更频繁地被卡住。每当我第一次初始化网络时,我也会随机化我的权重,所以我想知道一组随机权重是否更倾向于让我的神经网络“卡住”。
就激活函数而言,由于误差最终与激活函数产生的输出有关,我认为是有影响的(即误差表面发生变化)。然而,这只是基于直觉,我更喜欢一个具体的答案(对于这两点:初始权重和激活函数的选择)。
backpropagation - 使用 Snarli 进行时间反向传播
这个问题源于以下帖子,其中建议使用 Snarli 进行反向传播。我尝试了常规的反向传播,效果很好。但是,我不确定随着时间的推移反向传播。由于文档有限,我不知道该怎么做。我使用了 BpptUpdate,但我需要为图层设置一些动量项。我对此有点困惑(设置哪个层以及如何设置)。
无论如何,只是寻求快速响应,我知道使用 Snarli 的受众可能非常有限。如果我没有听到任何消息,我的下一步是给作者发电子邮件,我想我可以发布答案。
artificial-intelligence - 随机化神经网络输入顺序的影响
对于我的高级算法和数据结构课程,我的教授要求我们选择任何我们感兴趣的主题。他还告诉我们研究它并尝试在其中实施解决方案。我选择了神经网络,因为这是我很久以来就想学习的东西。
我已经能够使用神经网络实现 AND、OR 和 XOR,其神经元使用激活器的阶跃函数。之后,我尝试实现一个反向传播神经网络来学习识别 XOR 运算符(使用 sigmoid 函数作为激活器)。通过使用 3-3-1 网络(输入和隐藏层有 1 个偏差,权重随机初始化),我能够在 90% 的时间里让它工作。在其他时候,它似乎陷入了我认为的局部最小值,但我不确定(我之前已经问过这个问题,人们告诉我不应该有局部最小值)。
在它工作的 90% 的时间里,我始终按以下顺序呈现我的输入:[0, 0], [0, 1], [1, 0], [1, 0]
预期输出设置为[0, 1, 1, 0]
. 当我以相同的顺序一致地呈现值时,网络最终会学习该模式。实际上,我发送它的顺序并不重要,只要每个时期的顺序完全相同。
然后我实现了训练集的随机化,所以这次输入的顺序是充分随机的。我现在注意到我的神经网络卡住了并且错误正在减少,但速度非常小(每个时期都在变小)。一段时间后,错误开始围绕一个值波动(因此错误停止减少)。
我是这个主题的新手,到目前为止我所知道的一切都是自学的(阅读教程、论文等)。为什么输入的呈现顺序会改变我的网络的行为?是不是因为从一个输入到下一个输入的误差变化是一致的(因为顺序是一致的),这让网络很容易学习?
我能做些什么来解决这个问题?我正在检查我的反向传播算法,以确保我已经正确地实现了它;目前它是通过学习率和动量实现的。我正在考虑查看其他增强功能,例如自适应学习率。然而,XOR 网络通常被描述为一个非常简单的网络,所以我认为我不需要使用复杂的反向传播算法。