作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对神经网络进行编程,现在正在测试它。我已将其简化为 2 个训练示例,其中包含 2 个输入和 1 个输入。
Input : Output
1,0 : 1
1,1 : 0
我循环前向和反向传播 1,000 次,网络输出始终收敛到 1 或 0,具体取决于初始化随机权重的起始位置。无论我输入什么,输出都是一样的。它不会学习。
我不确定如何寻求帮助而不会使我的所有代码重载,所以我将发布我正在做的事情:
Create random initial weights
For i = 1 to 1000
For j = 1 to Samples in Training Set (2)
Set activations (Sigmoid function)
Forward-prop
delta = sum of (deltas in next layer * weights connecting this node with next deltas) * act*(1-act)
Weights = Weights + lambda(.05) * delta * x(i)
我似乎做错了什么吗?我应该发布部分/全部代码吗?关于我还应该测试什么有什么建议吗?我一直在 Excel 中手动测试所有内容,一切似乎都按我预期的方式工作(前向传播、增量计算等)
最佳答案
如果您尝试训练它进行异或,那么您应该使用所有四个训练示例(0,0->0)等。不要将计算网络的输出与反向传播等同起来,反向传播是指计算误差值隐藏层神经元。
反向传播本身就是一种算法,多层感知器使用它来(宽松地说)“推断”隐藏层神经元的误差值。反向传播适用于单个隐藏层神经元,通过将来自该神经元的每个权重与它们所连接的神经元的误差值相加来实现。
在所有四个示例上训练您的网络,它不应超过 10,000 个 epoch,因为它收敛得很好,但 1000 个可能就可以了。
另一个注意事项:无论学习问题如何,神经网络(以及几乎所有机器学习算法)在更多数据(训练示例)下总是会表现得更好。
关于machine-learning - 神经网络不学习,收敛于一个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526637/
我是一名优秀的程序员,十分优秀!