我尝试实现神经网络。我正在使用反向传播来计算渐变。在获得梯度之后,我将它们乘以学习速率并从相应的权重中减去它们。 (基本上尝试应用渐变下降,请告诉我这是否错误)。 因此,在准备好反向传播和梯度下降之后我尝试的第一件事就是训练一个简单的XOR分类器,其输入可以是(0,0),(1,0),(0,1),(1,1)相应的输出为0,1,1,0。所以我的神经网络包含2个输入单元,1个输出单元和一个隐藏层,上面有3个单元。当训练它以3.0的学习率训练> 100(甚至尝试> 5000)时,成本下降直到它被卡住的特定点,因此它保持不变。每次运行程序时,权重都会随机初始化,但总是会以相同的特定成本卡住。无论如何,在训练结束后,我尝试在任何上述输入上运行我的神经网络,输出总是0.5000。我想改变输入和输出所以它们是:(-1,-1),(1,-1),( - 1,1),(1,1)和输出-1,1,1, - 1。现在,当训练具有相同的学习率时,成本会不断下降,无论迭代次数多少但结果仍然是错误的,并且它们总是倾向于非常接近0.我甚至试图将它训练成一个疯狂的数字迭代和结果如下:[迭代:(20kk),输入:(1,-1),输出:(1.6667e-08)]以及[迭代:(200kk),输入:(1,-1) ,输出:(1.6667e-09)],也尝试输入(1,1)等,输出也非常接近0.看起来输出总是平均值(min(y),max(y) ),我提供输入/输出的形式无关紧要。我无法弄清楚我做错了什么,有人可以帮忙吗?
答案 0 :(得分:1)
有很多地方你可能错了:
小问题,不应该导致上述问题,但值得修复: