0

我决定在不使用任何库的情况下创建一个前馈神经网络。我对这个主题相当陌生,并且完全是自学的。

我的神经网络使用反向传播来设置权重,所有层之间的激活函数(input-hidden1-output)是一个 Sigmoid 函数。假设我尝试用我的 NN 解决一个基本问题,例如 XOr 逻辑门问题。每当我使用完整的训练集(1 和 0 的所有可能组合)时,我的 NN 都无法以能够产生所需输出的方式设置权重。似乎它总是停在中间。(在所有情况下输出约为 0.5)另一方面,当我只迭代一种类型的输入(比如说 0 和 1)时,它会很快学习。

我的成本函数、节点数、隐藏层或什么有问题吗?我会很感激一些指导的话!

4

2 回答 2

0

XOR 问题不是线性可分的,并且使单层感知器不适合。但是,在您的网络中添加隐藏层使网络能够捕获非线性特征,这使它变得很好。

网络性能不佳的最可能的原因是学习问题的初始阶段曲折。所以增加迭代将解决问题。

还有一种可能的尝试是通过 XOR 的平滑非线性,因此偏差的作用与平移参数一样重要,与权重一样重要(您没有提到)

于 2019-06-22T05:02:06.520 回答
-1

XOR 不能用一个隐藏层来解决。因为您不能仅用一行来分隔标签(0 和 1)。您可以用两条线将它们分开,然后使用 AND 门(另一个隐藏层)找到它们的公共区域。请参阅此帖子以进行澄清:https ://medium.com/@jayeshbahire/the-xor-problem-in-neural-networks-50006411840b

于 2019-06-21T12:03:39.250 回答