3.1 深度学习优化算法
学习目标
- 目标
- 知道局部最优问题、鞍点与海森矩阵
- 说明批梯度下降算法的优化
- 说明三种类型的优化算法
- 知道学习率退火策略
- 知道参数初始化策略与输入归一化策略
- 应用
- 应用完成梯度下降优化算法的实现
深度学习难以在大数据领域发挥最大效果的一个原因是,在巨大的数据集基础上进行训练速度很慢。而优化算法能够帮助我们快速训练模型,提高计算效率。接下来我么就去看有哪些方法能够解决我们刚才遇到的问题或者类似的问题。
3.1.1 优化算法
- 优化的目标在于降低训练损失,只关注最小化目标函数上的表现
深度学习问题中,我们通常会预先定义一个损失函数。有了损失函数以后,我们就可以使用优化算法试图将其最小化。在优化中,这样的损失函数通常被称作优化问题的目标函数(objective function)。依据惯例,优化算法通常只考虑最小化目标函数。
3.1.1.1优化遇到的挑战
- 局部最优
- 梯度消失
3.1.1.2 局部最优
3.1.1.3 鞍点与海森矩阵(Hessian Matric)
刚刚我们提到,梯度接近或变成零可能是由于当前解在局部最优解附近造成的。事实上,另一种可能性是当前解在鞍点(saddle point)附近。
- 鞍点(saddle)是函数上的导数为零,但不是轴上局部极值的点。通常梯度为零的点是上图所示的鞍点,而非局部最小值。减少损失的难度也来自误差曲面中的鞍点,而不是局部最低点。
3.1.1.4 梯度消失
3.1.2 批梯度下降算法(Batch Gradient Descent)
- 定义:批梯度下降法(btach),即同时处理整个训练集。
其在更新参数时使用所有的样本来进行更新。对整个训练集进行梯度下降法的时候,我们必须处理整个训练数据集,然后才能进行一步梯度下降,即每一步梯度下降法需要对整个训练集进行一次处理,如果训练数据集很大的时候,处理速度就会比较慢。
所以换一种方式,每次处理训练数据的一部分进行梯度下降法,则我们的算法速度会执行的更快。
3.1.2.1 Mini-Batch Gradient Descent
- 定义:Mini-Batch 梯度下降法(小批量梯度下降法)每次同时处理固定大小的数据集。
不同
- 种类:
- mini-batch 的大小为 1,即是随机梯度下降法(stochastic gradient descent)
使用 Mini-Batch 梯度下降法,对整个训练集的一次遍历(epoch)只做 mini-batch个样本的梯度下降,一直循环整个训练集。
3.1.2.2 批梯度下降与Mini-Batch梯度下降的区别
3.1.2.4 大小选择
3.1.3 优化算法
这里我们会介绍三种类型的优化算法,不过很多原理都大同小异。
- 1、动量更新方法
- 2、逐参数适应学习率方法
- 3、二阶方法
3.1.3.1 动量梯度下降(Gradient Descent with Momentum)
- 目的:解决因鞍点问题带来的梯度更新停止问题。
- 解决办法:
- 在随机梯度下降(SGD)中加入指数加权平均数来更新参数的梯度
1、指数加权平均
指数加权平均(Exponentially Weight Average)是一种常用的序列数据处理方式,通常用在序列场景如金融序列分析、温度变化序列分析。
2、动量梯度下降(Gradient Descent with Momentum)是计算梯度的指数加权平均数,并利用该值来更
3.1.3.2 逐参数适应学习率方法
1、Adagrad
2、RMSProp 算法
3、Adam算法
所有优化算法效果对比
- 收敛对比
- 鞍点对比
资料来自:Alec Radford做的实验对比
3.1.7 学习率退火
3.1.8 参数初始化策略与归一化输入
3.1.8.1 参数初始化
3.1.8.2 归一化输入
3.1.10 总结
- 局部最优问题、鞍点与海森矩阵
- 批梯度下降算法的优化
- 三种类型的优化算法
- 学习率退火策略
- 参数初始化策略与输入归一化策略