美文网首页
6.1深度学习的神经网络中的训练难点

6.1深度学习的神经网络中的训练难点

作者: 遇见百分百 | 来源:发表于2018-05-26 15:16 被阅读0次

到目前为止, 我们例子中使用的神经网络一共只有3层 (一个隐藏层):


消失的gradient问题 (vanishing gradient problem)

>>>importmnist_loader

>>>training_data,validation_data,test_data=mnist_loader.load_data_wrapper()

>>>import network2

>>>net = network2.Network([784,30,10])

>>>net.SGD(training_data,30,10,0.1,lmbda=5.0,...evaluation_data=validation_data,monitor_evaluation_accuracy=True)

结果: 96.48%

加入一个隐藏层:

>>>net=network2.Network([784,30,30,10])

>>>net.SGD(training_data,30,10,0.1,lmbda=5.0,...evaluation_data=validation_data,monitor_evaluation_accuracy=True)

结果: 96.9%

再加入一个隐藏层:

>>>net=network2.Network([784,30,30,30,10])

>>>net.SGD(training_data,30,10,0.1,lmbda=5.0,...evaluation_data=validation_data,monitor_evaluation_accuracy=True)

结果: 96.57%

为什么加入一层反而降低了准确率?

条形区域长度代表∂C/∂b,Cost对于bias的变化率:

随机初始化, 看到第一层学习的速率远远低于第二层学习的速率

进一步通过计算来验证:

另外一个例子: 

 [784,30,30,30,10]

再增加一层:

[784,30,30,30,30,10]

可以看出, 第一个隐藏层比第四个几乎要慢100倍

这种现象普遍存在于神经网络之中, 叫做: vanishing gradient problem

另外一种情况是内层的梯度被外层大很多, 叫做exploding gradient problem

所以说神经网络算法用gradient之类的算法学习存在不稳定性

训练深度神经网络, 需要解决vanishing gradient problem

造成vanishing gradient problem的原因:

假设每层只有一个神经元

函数最高点σ′(0) = 1/4

按照平时随机从正太分部(0,1)中随机产生权重的方法, 大部分|w| < 1

相关文章

网友评论

      本文标题:6.1深度学习的神经网络中的训练难点

      本文链接:https://www.haomeiwen.com/subject/pntmjftx.html