性能优化
- 1.常用技巧
- 1.1模型初始化
- 1.2训练数据与测试数据
- 1.3欠拟合与过拟合
- 1.4权重衰减(L2正则化)
- 1.5暂退(Dropout)
- 2.动量法
- 2.1病态曲率
- 2.2动量法
- 3.自适应梯度算法
- 3.1AdaGrad
- 3.2RMSProp
- 3.3Adam
- 4.总结
1.常用技巧
1.1模型初始化
- 简单的考虑,把所有权值在[-1,1]区间内按均值或高斯分布
进行初始化。 - Xavier初始化:为了使得网络中信息更好的流动,每一层输
出的方差应该尽量相等。因此需要实现下面的均匀分布:
1.2训练数据与测试数据
-
数据包括
-
训练数据
-
验证数据
-
测试数据
-
通常,三者比例为 70 70%,15%,15%70 或 60 60%,20%,20%60,当数据很多时,训练和验证数据可适当减少
-
K 折交叉验证
-
原始训练数据被分成 K 个不重叠的子集。 然后执行 K 次模型训练和验证,每次在 K−1 个子集上进行训练, 并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。 最后,通过对 K 次实验的结果取平均来估计训练和验证误差。
1.3欠拟合与过拟合
- 欠拟合:误差一直比较大;
- 过拟合:在训练数据集上误差小而在测试数据集上误差大。
1.4权重衰减(L2正则化)
- 为防止过拟合和权值震荡,加入新的指标函数项:
- 第二项约束了权值不能过大。在梯度下降时,导数容易计算:
1.5暂退(Dropout)
- 在整个训练过程的每一次迭代中,标准暂退法包括在计算下一层之前将当前层中的一些节点置零。
2.动量法
2.1病态曲率
- 1.图为损失函数轮廓。在进入以蓝色标记的山沟状区域之前随机开始。颜色实际上表示损失函数在特定点处的值有多大,红色表示最大值,蓝色表示最小值。我们想要达到最小值点,为此但需要我们穿过山沟。这个区域就是所谓的病态曲率。
- 2.梯度下降沿着山沟的山脊反弹,向极小的方向移动较慢。这是因为脊的表面在W1方向上弯曲得更陡峭。
2.2动量法
- 1.对比
- 如果把原始的 SGD 想象成一个纸团在重力作用向下滚动,由于质量小受到山壁弹力的干扰大,导致来回震荡;或者在鞍点处因为质量小速度很快减为 0 00,导致无法离开这块平地。
- 动量方法相当于把纸团换成了铁球;不容易受到外力的干扰,轨迹更加稳定;同时因为在鞍点处因为惯性的作用,更有可能离开平地。
- 动量法更新公式
- 公式
3.自适应梯度算法
3.1AdaGrad
- 1.Adaptive Gradient:自适应梯度
- 参数自适应变化:具有较大偏导的参数相应有一个较大的学习率,而具有小偏导的参数则对应一个较小的学习率;
- 具体来说,每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根。
- 用于处理稀疏的梯度
- 2.算法 - AdaGrad
- 3.问题
- 学习率是单调递减的,训练后期学习率过小会导致训练困难,甚至提前结束;
- 需要设置一个全局的初始学习率。
3.2RMSProp
-
1.Root Mean Square Prop
-
RMSProp 解决 AdaGrad 方法中学习率过度衰减的问题;
-
RMSProp 使用指数衰减平均以丢弃遥远的历史,使其能够快速收敛;此外,RMSProp 还加入了超参数 ρ控制衰减速率。
-
具体来说(对比 AdaGrad 的算法描述),即修改 r 为:
-
处理非稳态数据
-
2.RMSProp 算法
3.3Adam
-
1. Adaptive Moment Estimation
-
Adam 在 RMSProp 方法的基础上更进一步:
除了加入历史梯度平方的指数衰减平均 r 外,
还保留了历史梯度的指数衰减平均 s ,相当于动量。 -
Adam 行为就像一个带有摩擦力的小球,在误差面上倾向于平坦的极小值。
-
用于解决机器学习中的大数据量,高特征纬度的优化问题。
-
2. Adam 算法:
4.总结
- 训练中常用技巧包括样本选择、权重衰减、暂退等;
- 动量法可有效改善收敛速度,以及避免一些陷入局部极小值;
- AdaGrad 及 Adam 等算法可自适应调节学习速率,加速收敛。