梯度下降法是一种常用的一阶优化方法,是求解无约束优化问题最简单、最经典的方法之一。
梯度下降算法如下:
输入:目标函数
,梯度函数
,计算精度
:
输出:
的极小点
(1)取初始值
,置为k=0
(2)计算
(3)计算梯度
,当
时,停止迭代,令
,否则,令
,求
,使
(4) 令
,计算
,当
或
时,停止迭代,令
(5)否则,令k=k+1,转(3)
当目标函数是凸函数时,梯度下降法的解释全局最优解,一般情况下,其解不保证是全局最优解,梯度下降法的收敛速度也未必是很快的。
基于梯度的搜索是使用最为广泛的参数寻优方法,但是会陷入局部极小。
批量梯度下降法是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新。
在整个数据集上(求出罚函数 J(θ 并)对每个参数 θ 求目标函数 J(θ) 的偏导数:
优点:全局最优解,易于并行实现
缺点:训练过程慢,对于较大的内存无法容纳的数据集,该方法否无法被使用
在每次更新参数时,随机选取一个样本,计算惩罚函数,然后求出相应的偏导数:
优点:训练速度快
缺点:SGD收敛过程中存在波动,会帮助跳出局部极小值,会让收敛到特定最小值的过程复杂化,因为该方法可能持续波动而不收敛,当慢慢降低学习率时,SGD和BGD表现出了相似的收敛过程。
更新每一参数时,使用一部分样本来更新,对n个样本构成的一批数据,计算惩罚函数并求导:
这种方法能够降低更新参数的方差,使得收敛过程更加稳定,能够利用最新的深度学习程序库中高度优化的矩阵运算器,能够高效地求出每小批数据的梯度。
梯度下降的优化算法:
对SGD进行平行计算或者分布式计算:
优化SHD的其它手段:
参考: