一、梯度
1.1 什么是梯度?
梯度是一个向量(矢量), 表示某一函数在该点处的方向导数沿着该方向取得最大值,也就是该点变化率最大的方向。在现实中,就是山体的某点沿着山体最陡峭的向上方向就是梯度。
二、梯度下降法
2.1 什么是梯度下降法
● 梯度下降就是沿着梯度最陡的地方下降。也可以说梯度下降就是曲线或曲面上的某点沿着该点梯度的反方向移动。
● 如果我们从一个位置点x开始,每向下移动一点的距离,记做Oh,并将我们的位置更新为x-Oh,并且我们继续保持一致,直到达到底部。
梯度下降法的三要素:初始化权重、优化函数(动量) 、学习率。
2.2 梯度下降法的类别
根据采用数据量可以分为标准梯度下降法(GD)、批量梯度下降法(BatchGradient Descent)、小批量梯度下降法(Mini-batch Gradient Descent)、随机梯度下降法(Stochastic Gradient Descent)
(1)标准梯度下降法(GD)
● 每个样本都计算一次
● 训练速度慢,容易陷入局部最优解
(2)批量梯度下降法(Batch Gradient Descent)
批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。
如果数据集比较大,可能会面临内存不足问题,而且其收敛速度一般比较慢(相较于GD要快一些),容易陷入局部最优解。选取平均梯度最小的方向。
(3)小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降算法是折中方案,选取训练集中一个小批量样本,这样可以保证训练过程更稳定,而且采用批量训练方法也可以利用矩阵计算的优势。
通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
(4)随机梯度下降法(Stochastic Gradient Descent)
针对训练集中的一个训练样本计算的,又称为在线学习,即得到了一个样本,就可以执行一次参数更新。所以其收敛速度会快一些(不需要计算每个样本的梯度或平均梯度),但是有可能出现目标函数值震荡现象,因为高频率的参数更新导致了高方差。
从批样本随机选择一个方向进行下降。(某次有可能不正确,最终会正确)
2.3 自适应学习率优化算法
(1)AdaGrad算法
每个变量用不同的学习率,学习率越来越慢。(对于已经下降的变量,则减缓学习率,对于还没下降的变量,则保持较大的学习率)。
模型收敛稳定(由于学习率越来越小,接近目标的时候震荡小)。
(2)RMSProp算法
蓝色为Momentum,绿色为RMSProp
● 自适应调整学习率
(避免了学习率越来越低的问题)
● 模型收敛稳定
(消除了摆动大的方向,各个维度的摆动都较小)
(3)AdaDelta算法
结合了AdaGrad和RMSProp
●训练速度快(模型训练初中期加速效果好,速度快)
●模型收敛不稳定(模型训练的后期,会反复在局部最小值附近抖动)
(4)Adam算法
结合了AdaGrad和RMSProp
对内存需要较小(适用于大数据集和高维空间)
不同参数有独立自适应学习率(通过计算梯度的一阶矩估计和二阶矩估计)解决稀疏梯度和噪声问题(结合了AdaGrad和RMSProp算法最优的性能)
2.4 局部最小值和全局最小值