我使用 scipy.optimize.minimize (共轭梯度)优化函数在 python 中构建了一个人工神经网络。
我已经实现了梯度检查,仔细检查了所有内容等,我很确定它工作正常。
我已经运行了几次,它达到了“优化成功终止”,但是当我增加隐藏层的数量时,假设的成本在它成功终止后会增加(其他一切都保持不变)。
直觉上,当隐藏层的数量增加时,似乎成本应该降低,因为它能够生成更复杂的假设,可以更好地拟合数据,但情况似乎并非如此。
我有兴趣了解这里发生了什么,或者我是否错误地实现了神经网络?
我使用 scipy.optimize.minimize (共轭梯度)优化函数在 python 中构建了一个人工神经网络。
我已经实现了梯度检查,仔细检查了所有内容等,我很确定它工作正常。
我已经运行了几次,它达到了“优化成功终止”,但是当我增加隐藏层的数量时,假设的成本在它成功终止后会增加(其他一切都保持不变)。
直觉上,当隐藏层的数量增加时,似乎成本应该降低,因为它能够生成更复杂的假设,可以更好地拟合数据,但情况似乎并非如此。
我有兴趣了解这里发生了什么,或者我是否错误地实现了神经网络?
神经网络有很多方法会出错,以至于很难调试。此外,为了满足您的直觉,每个额外的隐藏层都会使学习变得更加困难。话虽如此,这里有一些可能性:
训练神经网络需要大量的练习、运气和耐心。祝你好运。
在大多数情况下,增加标准神经网络的隐藏层数量实际上不会改善结果。改变隐藏层的大小。
这个事实(隐藏层的数量很少)实际上在历史上已经被注意到,并且是深度学习领域背后的动机。深度学习是训练多层神经网络的有效巧妙方法,例如,在训练不同层时隔离特征子集。
YouTube上关于此主题的精彩介绍视频