调试神经网络


10

我使用scipy.optimize.minimize(共轭梯度)优化功能在python中构建了一个人工神经网络。

我已经实施了梯度检查,仔细检查了所有内容,等等,我确定它可以正常工作。

我已经运行了几次,它达到了“优化成功终止”,但是当我增加隐藏层的数量时,假设成功终止后,假设的成本增加了(其他所有条件保持不变)。

凭直觉,似乎随着增加隐藏层的数量,成本应该降低,因为它能够生成更复杂的假设,可以更好地拟合数据,但是事实并非如此。

我很想了解这里发生的事情,或者我是否正确实施了神经网络?

Answers:


9

神经网络有很多出错的方法,这将很难调试。另外,为了满足您的直觉,每个额外的隐藏层都会使学习变得更加困难。话虽如此,这里有一些可能性:

  1. 您增加了体重下降。添加更多层会增加权重,从而增加正则化成本。
  2. 问题很简单,只有一个隐藏层的模型就足够了。添加更多的隐藏层将使网络变得更难学习(更难的优化问题)。
  3. 优化方法做得不好(我更喜欢climin来scipy.optimize)。
  4. 您正在使用S形/ tanh激活功能。乙状结肠功能会导致梯度消失的问题,使学习难度加大。尝试使用ReLu功能。

训练神经网络需要大量的练习,运气和耐心。祝好运。


1
好答案。但是请意识到2、3、4可以以复杂的方式进行交互。调试可以通过检查ANN,人工神经网络的权重的大小的激活值,保持眼睛上进行样品中和外的样品误差和优化的收敛等
Def_Os

3

在大多数情况下,增加标准神经网络的隐藏层数实际上不会改善结果。更改隐藏层的大小将会。

历史事实(隐藏层的数量很少)实际上是历史记录,是深度学习领域的动力。深度学习是训练多层神经网络的有效聪明方法,例如,当训练不同层时,通过隔离特征子集。

YouTube上有关此主题的精彩介绍视频


2
深度学习涉及增加隐藏层的数量。否则,这将被称为胖学习:)
Emre 2014年

@Emre绝对是那样。诅咒我的标点符号!
eric chiang 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.