梯度下降法、牛顿法、拟牛顿法 三类迭代法应用场景有何差别?
By Datawhale知乎内容输出小组D1
问题
梯度下降法一族(如SGD、Adam)、牛顿法一族(如Gauss-Newton Method,LM法)、拟牛顿法一族(如L-BFGS)是机器学习中最常见的三大类迭代法,但三者分别通常擅长解决的应用场景是什么?为什么会这样的呢?谢谢
解答
梯度下降法(SGD为例) | 牛顿法 | 拟牛顿法 | |
---|---|---|---|
时间复杂度(单次迭代) | 只需计算1阶导,时间复杂度低,为 O ( n ) O\left( n \right) O(n) | 需计算Hessian矩阵及其逆,时间复杂度高,为 O ( n 3 ) O\left( { {n^3}} \right) O(n3) | 用正定矩阵近似Hessian矩阵的逆,时间复杂度为 O ( n 2 ) O\left( { {n^2}} \right) O(n2) |
收敛速度 | 收敛慢,迭代次数大 | 收敛快,迭代次数小 | - |
初始值要求 | 无太强要求,容易逃离鞍点 | 对初始值有一定要求,非凸问题容易陷入鞍点(牛顿法步长会越来越小) | - |
应用场景 | 特征维度较大的场景,如特征数>10k | 特征维度较小的场景 | 需满足拟牛顿条件,更适合凸问题 |
此外,在神经网络(非凸问题)的训练中,大多数都采用梯度下降法一族方法。而在训练逻辑回归(凸问题)等模型时,可采用梯度下降和拟牛顿方法。
关于时间复杂度和收敛速度的差异,起因于求解方法:
机器学习的任务中,是要最小化损失函数 L ( θ ) L\left( \theta \right) L(θ),其中 θ \theta θ 是待求的模型参数。梯度下降法、牛顿法/拟牛顿法都是迭代求解。梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。
迭代公式 θ t = θ t − 1 + Δ θ {\theta ^t} = {\theta ^{t - 1}} + \Delta \theta θt=θt−1+Δθ
求解方法
梯度下降法:一阶泰勒展开
L ( θ t ) = L ( θ t − 1 + Δ θ ) ≈ L ( θ t − 1 ) + L ′ ( θ t − 1 ) Δ θ \begin{aligned} L\left( {
{\theta ^t}} \right) &= L\left( {
{\theta ^{t - 1}} + \Delta \theta } \right) \\ &\approx L\left( {
{\theta ^{t - 1}}} \right) + L'\left( {
{\theta ^{t - 1}}} \right)\Delta \theta \end{aligned} L(θt)