当前位置:   article > 正文

梯度下降法(Gradient Descent)求解最优化问题_凸函数梯度下降一定是全局最优解

凸函数梯度下降一定是全局最优解

梯度下降法应用十分广泛,可以用于求解最小值问题。一个机器学习算法的目标就是要找到其损失函数最低点对应的参数,这时就用到了梯度下降法,该方法在之后要介绍的很多算法中要用到,所以单独写一篇文章来介绍。

1.概述

梯度下降法也成为最速下降法,是一种一阶最优化算法。

  • 首先对所有的参数进行初始化;
  • 然后不断更新参数的值,直到目标函数达到最小值。此时模型就被训练完成了。

Require: 学习率 α \alpha α和初始参数 Θ \Theta Θ
repeat
θ j : = θ j − α ⋅ ∂ J ( Θ ) ∂ θ j \theta _{j} := \theta _{j} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{j}} θj:=θjαθjJ(Θ)
until 达到收敛条件

注意事项
参数同时更新
正确的计算方式:(假设只有两个参数)
t e m p 0 : = θ 0 − α ⋅ ∂ J ( Θ ) ∂ θ 0 temp_{0} := \theta _{0} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{0}} temp0:=θ0αθ0J(Θ)
t e m p 1 : = θ 1 − α ⋅ ∂ J ( Θ ) ∂ θ 1 temp_{1} := \theta _{1} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{1}} temp1:=θ1αθ1J(Θ)
θ 0 : = t e m p 0 \theta _{0} := temp_{0} θ0:=temp0
θ 1 : = t e m p 1 \theta _{1} := temp_{1} θ1:=temp1
错误的计算方式:(假设只有两个参数)
t e m p 0 : = θ 0 − α ⋅ ∂ J ( Θ ) ∂ θ 0 temp_{0} := \theta _{0} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{0}} temp0:=θ0αθ0J(Θ)
θ 0 : = t e m p 0 \theta _{0} := temp_{0} θ0:=temp0
t e m p 1 : = θ 1 − α ⋅ ∂ J ( Θ ) ∂ θ 1 temp_{1} := \theta _{1} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{1}} temp1:=θ1αθ1J(Θ)
(此时由于 θ 0 \theta _{0} θ0已经更新, t e m p 1 temp_{1} temp1的值将受到影响)
θ 1 : = t e m p 1 \theta _{1} := temp_{1} θ1:=temp1

2.公式中各项的含义

收敛准则

不能证明梯度下降法是收敛的,并且没有明确定义的算法停止准则

通常使用如下方法对是否收敛进行判断:

  • 当梯度向量的欧几里得范数达到一个充分小的阈值时。
    ∥ ∇ Θ ∥ = ( ∇ θ 0 ) 2 + ( ∇ θ 1 ) 2 + ⋯ + ( ∇ θ n ) 2 \left \| \nabla\Theta \right \| = \sqrt{(\nabla\theta_{0})^{2}+(\nabla\theta_{1})^{2}+\cdots +(\nabla\theta_{n})^{2}} Θ=(θ0)2+(θ1)2++(θn)2
  • 当迭代的每一个回合的均方误差变化的绝对速率足够小时。

当目标函数是凸函数时,梯度下降法的解是全局最优解。一般情况下,其解不保证是全局最优解。其下降速度也不保证是最快的(不同特征之间特征值相差较大的情况下使用特征缩放,能够加快下降速度)。

导数项含义(作用)

导数为正
导数为正: θ = θ − α ⋅ \theta = \theta - \alpha \cdot θ=θα (positive number), θ \theta θ变小,向代价减小的方向;
导数为负
导数为负: θ = θ − α ⋅ \theta = \theta - \alpha \cdot θ=θα (negtive number), θ \theta θ变大,向代价减小的方向。
由此可见,导数项的作用是使参数向使得损失逐渐减小的方向更新。

学习率(learning rate)的作用

学习率 α \alpha α决定梯度下降的速度
学习率的作用
上图引自知乎用户@马同学,图中的 η \eta η表示学习率。
由上图可知,学习率太小,导致梯度下降缓慢,而学习率太高,可能越过最低点,导致无法收敛甚至发散,因此,应该选取合适大小的学习率。可以尝试从一系列学习率中(…, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, …间隔约三倍)选取合适的学习率。
梯度下降速率
在迭代的过程中,应使梯度下降的速率逐渐缓慢,以免越过最低点,而在实际的操作中,不需要逐渐减小 α \alpha α值,因为导数值越来越小,梯度下降会自动变缓慢。

3.批量与小批量

  • 批量梯度下降法(Gradient Descent, GD, Batch Gradient Descent):使用全部训练样本估计梯度进行训练。计算量大,一般不使用批量算法。
  • 小批量梯度下降法(Mini Batch Gradient Descent, MBGD):使用部分训练样本估计梯度进行训练。实际操作中最常使用。
  • 随机梯度下降法(Stochastic Gradient Descent, SGD):每次从固定训练集中抽取一个训练样本估计梯度进行训练。

4.总结

以上就是关于梯度下降算法的内容,其具体应用及实现将在以后的算法中展示。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/104027
推荐阅读
相关标签
  

闽ICP备14008679号