Lecture 7 - Training Neural Networks
Fancier Optimization
SGD (Stochastic Gradient Descent)
- 某一维度的梯度移动可能很慢,导致了训练效率低下。例如,如果样本空间类似薯片形,则其在底部移动会非常慢
- 容易卡在局部最小值或者驻点,导致错误的结果或训练效率低下(梯度非常小,导致更新慢)
- 使用随机采样估计训练集整体的梯度,可能存在不准确的情况,也容易出现扰动
SGD + Momentum
- 引入"Momentum(动量)"的概念,将梯度作为加速度
- 其中
是超参“动摩擦因子”,一般取值有 , 是超参 learning rate - 这种方法可以有效解决 SGD 存在的问题:
- 如果某一方向梯度太小但方向始终一致,
项会使其梯度累加,即移动速度会逐渐增大 - 因为“惯性”(即
项)的存在,不会卡在驻点,也不容易卡在局部最小值点上 - 由于随机采样估计梯度产生的扰动的期望均值为
,添加的 项可以有效抵消左右摆动,减少扰动,使得梯度下降的路径更加平滑
- 如果某一方向梯度太小但方向始终一致,
Nesterov Momentum
- 这样做可以使得更新方向更加接近估算梯度的方向
- 令
,则:
- 这个形式使得 Nesterov Momentum 可以有另一种解释:
由旧的位置加上新的速度和乘上权重的纠偏构成

RMSProp

- 基本思路是通过累计标准差的形式,对每个维度的梯度进行放缩。如果在某个维度的梯度一直很小,则累计标准差也会很小,相除之后就会使得速度快起来。
- 为了防止除以
的情况发生,一般会在分母加上一个 之类的常数 - 可以看到 RMSProp 可以以更加稳健的方式靠近结果

Adam

- 结合动量和标准差两种方法
- 通过偏差修正,避免第一步由于方差很小而产生的较大步长,从而使算法更加符合实际情况
- 通常设定超参数的取值为:
beta1=0.9, beta2=0.999, learning rate=1e3 or 5e4
Second-Order Optimization
- 使用二阶近似的方式更新,这样就没有学习率参数了
- 但是这种方法在处理非凸问题和含有随机扰动的问题时效果不好,在参数过多的情况下,整体平方几乎不可能,故使用的不多
Regulazation
- Regulazation 的目的是为了增加模型的泛化能力,以尽量避免过拟合的发生
Dropout
- 每次前向传播时,随机地将每层的一部分神经元的输出设置为 0,即只使用部分神经元参与训练
- 一般对全连接层或卷积层进行操作
训练与预测
- 在训练时,网络变成了
,其中 是随机生成的 mask - 在预测时,我们不希望随机的 mask 影响到运行的结果,因此往往会采用采样平均的方式,即

Data Augmentation
- 通过使用随机混合、组合等方式,对数据进行变换,从而增加样本量和模型的泛用性,方法包括:
- 变换
- 旋转
- 拉伸
- 剪切
- 畸变
Dropout Connection
- 不直接删除节点,而是随机删除某些连接关系
Fractional Max Pooling
- 输出的池化层是从多个池化层中随机选择合成的
Stochastic Depth
- 随机跳过某些层
Transfer Learning
- 在大样本数据集上训练的模型,通过一定方法,使其在垂直域上表现得更好
相似数据集 | 不相似数据集 | |
---|---|---|
数据较少 | 在顶层加一个 FC 层 | 较困难, 尝试使用不同的网络架构 |
数据较多 | 微调少数几层 | 微调更多的层 |