繁体   English   中英

神经网络训练期间什么时候应该调用反向传播算法?

[英]When should Back-propagation algorithm be called during Neural Network training?

我有一个有效的反向传播算法,当在相同的奇异输入上迭代 100,000 次时,它可以正确地最小化错误,例如 [1, 0] -> 1。

但是当有多个输入时,我不确定如何扩展它来训练神经网络。

假设我们希望训练 XOR 函数,具有四种可能的输入和输出状态:

[ 0, 0 ] -> 0

[ 0, 1 ] -> 1

[ 1, 0 ] -> 1

[ 1, 1 ] -> 0

我尝试在每个输入输出测试数据之后调用反向传播算法。 即使经过大量迭代,网络也根本不会以这种方式学习。

在调用反向传播之前,我是否应该计算整个训练集(即上述 4 种情况)的累积误差?

在这个例子中,累积的错误如何存储和用于整个训练集?

谢谢你。

每个示例后的更新和累积版本都是正确的。 他们只是实现了两种略有不同的算法,更新每一步将使其成为 SGD(随机梯度下降),而另一个 GD(梯度下降)。 你也可以在两者之间做一些事情,在那里你更新每一批数据。 您描述的问题(缺乏学习)与更新发生时无关。

请注意,“正确学习”一个样本并不意味着您拥有无错误的算法! 如果您只有一个样本,那么您只调整最后一层的偏差的网络应该能够这样做,但会失败。 这只是可以打破但通过“单样本测试”的一个例子。

如果您的模型是单层网络,它将无法学习 XOR 函数,因为它是线性不可分的。 如果它有多个层,您应该累积所有错误并按所有样本的总数(在您的情况下为 4)对它们进行归一化。 最后,你的问题的主要原因可能是由于高学习率导致参数变化太大。 尝试降低学习率并增加迭代次数。 请参阅https://medium.com/analytics-vidhya/understanding-basics-of-deep-learning-by-solving-xor-problem-cb3ff6a18a06以供参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM