首页 > 解决方案 > 在神经网络训练期间应该何时调用反向传播算法?

问题描述

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

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

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

[ 0, 0 ] -> 0

[ 0, 1 ] -> 1

[ 1, 0 ] -> 1

[ 1, 1 ] -> 0

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

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

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

谢谢你。

标签: pythontensorflowmachine-learningdeep-learningneural-network

解决方案


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

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


推荐阅读