[7]Training Neural Network(2)—训练神经网络

本文探讨了神经网络训练中的优化算法,包括SGD及其改进版带动量的SGD和Nesterov动量,接着介绍了AdaGrad、RMSProp和Adam等自适应学习率方法。此外,还讨论了学习率的选择、二阶优化以及模型集成策略。在正则化部分,提到了权重约束、随机失活(Dropout)以及局部最大池化和随机深度等方法,强调了它们在减轻过拟合和提升泛化能力上的作用。
摘要由CSDN通过智能技术生成

课堂问答

  • A0: 下面关于优化算法的比较应该都是以凸优化问题举例的。
  • Q1: 带有动量的SGD怎么处理不好的梯度方向?
  • Q2: Dropout层在哪里使用?
  • A2: 一般在全连接层后面添加DP使得某些神经元失活,当然也可以在卷积层后面添加,但是具体的做法使使得部分卷积核得到的激活图(activation map)置0.
  • Q3: Dropout 对于梯度的回传有什么影响?
  • A3: Dropout 使得梯度回传仅发生在部分神经元,使得我们的训练更加缓慢,但是最后的鲁棒性更佳。
  • Q4: 一般,我们采用几种正则化方法?
  • A4: 通常,我们会使用BN,因为其确实会起到正则化的作用。但是,我们一般不交叉验证需要使用哪些正则化方法,而是有的放矢
  • 的,当我们发现模型过拟合了,适当的添加正则手段。

Fancier optimization(更好的优化)

1.1 SGD 优化

之前,我们介绍了一个简单的梯度更新算法 SGD,它是固定步长,沿着负梯度方向的更新:

image-20210720104734306

但是,它也会有一些问题。

1.假设我们有损失函数L和二维的权重W,且损失L对于W的一个方向(维度)上变化不敏感(比如水平),对于另一个方向(例如竖直)变化则比较敏感,则按道理来说,如果沿着竖直方向更新,则我们的损失会下降的比较快。
但是 SGD 算法,使得我们沿着两个方向的合方向进行更新,整体上来讲就会呈现之字形(抖动),如下图,等高线表示沿着水平方向损失变化很小。
在这里插入图片描述

  • 上述情况在一个高维矩阵上表现得更加明显,因为梯度的方向更加的复杂。
  1. 比较容易陷入 局部最小值鞍点

在这里插入图片描述

  • 局部最小值梯度等于0,使得权重几乎无法更新;鞍点附近梯度很小,使得权重更新的很慢(特别是在高维的情况,鞍点特别多)。
  1. SGD 是在一个样本上计算梯度,但是这样当样本数很多的时候,我们的计算量太大。所以,我们经常采用的是小批量(Mini-batch)SGD,但是这样的梯度是一个批量的估计值,可能会引入噪声,使得参数更新比较曲折。

在这里插入图片描述

1.2 基于动量的(Momentum)SGD

SGD+Momentum

  • 即在我们的梯度项上加上一个动量项:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值