为什么前馈NN无法在输入变化的情况下工作?

时间:2019-06-21 11:28:10

标签: c# neural-network backpropagation feed-forward

我决定在不使用任何库的情况下创建前馈神经网络。我对这个学科还很陌生,并且完全是自学成才。

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

我的成本函数,节点数,隐藏层数或什么问题?我会喜欢一些指导性的话!

2 个答案:

答案 0 :(得分:0)

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

网络性能差的最合理的原因可能是由于学习该问题的初期曲折。因此,增加迭代次数将解决该问题。

还有另一种可能的尝试是XOR的平滑非线性,因此偏差的作用对于转换参数至关重要,而与权重一样重要(您没有提到)

答案 1 :(得分:-1)

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