深度神经网络中的难点

一:消失的gradient问题 (vanishing gradient problem)

>>> import mnist_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,30,10]

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

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

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

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

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

 

三:造成vanishing gradient problem的原因

每层的学习速率会由于一个固定的比值越来越大或越来越小,但是为什么会造成vanishing gradient problem(估计就是这样定义的)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值