【问题标题】:Multi Layer Perceptron XOR, plotting error (loss) graph, converges too fast?多层感知器异或,绘制误差(损失)图,收敛太快?
【发布时间】:2021-06-28 09:30:10
【问题描述】:

我目前正在学习神经网络,并尝试在 Python 中使用反向传播训练 MLP 来学习 XOR。该网络有两个隐藏层(使用 Sigmoid 激活)和一个输出层(也是 Sigmoid)。 该网络(大约 20,000 个 epoch,学习率为 0.1)输出接近原始类标签的数字:

预测:0.11428432952745145 原始类输出为:0

预测:0.8230114358069576 原始类输出为:1

预测:0.8229532575410421 原始类输出为:1

预测:0.23349671680470516 原始类输出为:0

当我绘制错误(对于每个时期)时,我的图表显示急剧下降,然后出现轻微的“颠簸”,我的印象是错误会逐渐减少:

Errors (summed) vs Epoch

这会被归类为收敛吗?我尝试调整学习率,但没有成功。

谢谢!

【问题讨论】:

    标签: python neural-network xor convergence


    【解决方案1】:

    不一定,NN 会解决改变权重的优化问题。这不能保证只会下降,也许梯度下降的一些选择是选择“更差”的值。 我建议尝试更多的时期,最终它会收敛。如果你想发布你的代码以获得更具体的提示。

    【讨论】:

    • 谢谢!我将更新 epoch 数量并重新运行实验。我只尝试过使用 sigmoid 激活函数,所以也会尝试其他的。
    【解决方案2】:

    是的——肯定会收敛!您将获得具有 sigmoid 激活的 MLP 的特征 XOR 学习曲线——您可以将其放入教科书中。没有什么比预期的更快。实际上,您可以将学习率设置得更高,也可以设置步长。

    统计评估收敛性(不是封闭形式的限制,也不是图形)可能有点困难。但该图是收敛的很好证据。

    【讨论】:

    • 谢谢!我将尝试几种不同的学习率。在绘制误差方面,您会建议简单地将每个时期的误差“求和”,还是每个时期取平均值?我意识到我完全忘了添加一个偏见(不太确定我是否需要一个),所以现在也编程。
    • 对于 XOR 来说,偏差并不是绝对必要的,但如果您的层很窄,它可能会有所帮助。至于求和与平均——除非您的测试数据集具有不同数量的点,否则它们是相同的。也就是说,它要么是 sum(E) 要么是 sum(E) / N。如果 N 是常数,则没有区别。在最先进的 ANN 研究中,您会看到报告的平均错误。
    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 2018-12-14
    • 1970-01-01
    • 2017-11-03
    • 2013-07-14
    • 2020-08-01
    • 2021-07-13
    • 2018-10-29
    相关资源
    最近更新 更多