深度学习_与学习相关的技巧

深度学习_与学习相关的技巧

参考书籍:深度学习入门_基于python的 理论与实现

一. 参数的更新

  1. 随机梯度下降法(SGD)
    (1)公式: η表示学习率η表示学习率,式子中的←表示用右边的值更新左边的值
    在这里插入图片描述
    (2)代码实现:参数lr表示learning rate(学习率);参数params和grads分别保
    存了权重参数和它们的梯度
    在这里插入图片描述
    (3)缺点:如果函数的形状非均向(anisotropic),比如呈延伸状,搜索的路径就会非常低效。

  2. Momentum(动量)
    (1)公式:η表示学习率。这里新出现了一个变量v,对应物理上的速度。公式表示了物体在梯度方向上受力,在这个力的作用下,物体的速度增加这一物理法则
    在这里插入图片描述
    (2)代码实现:初始化时,v中什么都不保存,但当第一次调用update()时,v会以字典型变量的形式保存与参数结构相同的数据。
    在这里插入图片描述

  3. AdaGrad
    (1)公式:η表示学习率,变量h保 存了以前的所有梯度值的平方和,圈点表示对应矩阵元素的乘法,在更新参数时,通过乘以( 根号h分之一),就可以调整学习的尺度;AdaGrad会记录过去所有梯度的平方和,因此,学习越深入,更新的幅度就越小,如果无止境地学习,更新量就会变为 0,完全不再更新
    在这里插入图片描述
    (2)代码实现:最后一行加上了微小值1e-7。这是为了防止当self.h[key]中有0时,将0用作除数的情况
    在这里插入图片描述

  4. Adam
    (1)基本思路:Momentum参照小球在碗中滚动的物理规则进行移动,AdaGrad为参数的每个元素适当地调整更新步伐,将两者融合在一起
    (2)参数:Adam会设置 3个超参数。一个是学习率,另外两个是一次momentum系数β1和二次momentum系数β2,根据论文,标准的设定值是β1为 0.9,β2 为 0.999。设置了这些值后,大多数情况下都能顺利运行。

  5. 最优化方法的比较:SGD、Momentum、AdaGrad、Adam
    在这里插入图片描述
    二. 权重的初始值

  6. 权值衰减:一种以减小权重参数的值为目的进行学习的方法。通过减小权重参数的值来抑制过拟合的发生

  7. 使用标准差为1的高斯分布作为权重初始值时的各层激活值的分布:偏向0和1的数据分布会造成反向传播中梯度的值不断变小,最后消失(梯度消失)
    在这里插入图片描述

  8. 使用标准差为0.01的高斯分布作为权重初始值时的各层激活值的分布:激活值在分布上有所偏向会出现“表现力受限”的问题
    在这里插入图片描述

  9. Xavier初始值:与前一层有n个节点连接时,初始值使用标准差为(根号h分之一)的分布
    在这里插入图片描述

  10. 使用Xavier初始值作为权重初始值时的各层激活值的分布
    在这里插入图片描述

  11. ReLU的权重初始值:当激活函数使用ReLU时使用ReLU专用的初始值,,称为“He初始值”,当前一层的节点数为n时,He初始值使用标准差为(根号n分之2)的高斯分布

  12. 激活函数使用ReLU时,不同权重初始值的激活值分布的变化
    在这里插入图片描述

  13. 总结:当激活函数使用ReLU时,权重初始值使用He初始值,当激活函数为sigmoid或tanh等S型曲线函数时,初始值使用Xavier初始值
    三. Batch Normalization

  14. 优点:
    (1)可以使学习快速进行(可以增大学习率)
    (2)不那么依赖初始值(对于初始值不用那么神经质)
    (3)抑制过拟合(降低Dropout等的必要性)

  15. 使用了Batch Normalization的神经网络的例子:向神经网络中插入对数据分布进行正规化的层
    在这里插入图片描述

  16. 公式:这里对mini-batch的m个输入数据的集合B = {x1, x2, … , xm}求均值和方差 ,然后,对输入数据进行均值为0、方差为1(合适的分布)的正规化,ε是一个微小值,为了防止出现除以0的情况
    在这里插入图片描述

  17. 用法:通过将上述 处理插入到 激活函数的前面(或者后面),可以减小数据分布的偏向,Batch Norm层会对正规化后的数据进行缩放和平移的变换,一开始γ = 1,β = 0,然后再通过学习调整到合适的值。
    在这里插入图片描述

  18. 结论:几乎所有的情况下都是使用Batch Norm时学习进行得更快,同时也可以发现,实际上,在不使用Batch Norm的情况下,如果不赋予一个尺度好的初始值,学习将完全无法进行
    四. 正则化

  19. 过拟合:只能拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据的状态

  20. 过拟合的原因:
    (1)模型拥有大量参数、表现力强
    (2)训练数据少

  21. 权值衰减:该方法通过在学习的过程中对大的权重进行惩罚,来抑制过拟合,很多过拟合原本就是因为权重参数取值过大才发生的

  22. 权值衰减方法:为损失函数加上权重的平方范数(L2范数)

  23. L2范数:在这里插入图片描述

  24. Dropout:Dropout是一种在学习的过程中随机删除神经元的方法,训练时,每传递一次数据,就会随机选择要删除的神经元。然后,测试时,虽然会传递所有的神经元信号,但是对于各个神经元的输出, 要乘上训练时的删除比例后再输出。

  25. Dropout的概念图,左边是一般的神经网络,右边是应用了Dropout的网络。Dropout通过随机选择并删除神经元,停止向前传递信号
    在这里插入图片描述

  26. 代码实现 :每次正向传播时,self.mask中都会以False的形式保存要删除的神经元;self.mask会随机生成和x形状相同的数组,并将值比dropout_ratio大的元素设为True,反向传播时的行为和ReLU相同
    在这里插入图片描述

  27. 集成学习:让多个模型单独进行学习,推理时再取多个模型的输出的平均值
    五 . 超参数的验证

  28. 训练数据用于参数(权重和偏置)的学习,验证数据用于超参数的性能评估。为了确认泛化能力,要在最后使用(比较理想的是只用一次)测试数据。

  29. 超参数的最优化:所谓逐渐缩小范围,是指一开始先大致设定一个范围,从这个范围中随机选出一个超参数(采样),用这个采样到的值进行识别精度的评估;然后,多次重复该操作,观察识别精度的结果,根据这个结果缩小超参数的“好值”的范围。通过重复这一操作,就可以逐渐确定超参数的合适范围。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值