跳转至

次梯度

1 背景

  • 可导的凸函数,我们通常使用常规的梯度下降法处理,但当目标函数不可导,引入次梯度(Subgradient)用于解决此类目标函数并不总是处处可导的问题
  • 次梯度方法的优势是比传统方法能够处理的问题范围更大,不足之处就是算法收敛速度慢。

2 定义

2.1 凸函数定义

  • 凸函数的一阶条件:对于凸函数,如果它可导,则对, 有

  • 简单讲就是对于凸函数,其切线总是在函数的下方。

2.2 次梯度

  • 对给定的, 对, 若满足 就是的次梯度

  • 无论是凸函数还是非凸函数,只要满足上述条件,就是的次梯度。

  • 次微分:将处所有次梯度的集合称为的次微分,记作

  • 次梯度不一定唯一,也可能不存在。次梯度是在函数凸的区域上加以定义的,凸函数总有次梯度,非凸函数即使可微也不一定有次梯度。凸函数的次微分总是非空,凹函数的次微分是空集。

2.3 计算

  • 只考虑目标函数是凸函数情况

  • 考虑的左导数

  • 考虑的右导数

  • 因此对的次微分是, 都是次梯度

  • 如果可导,则,因此次梯度就是梯度

  • 不可导,次梯度才有多个

  • 例如

  • 公式

  • 次梯度是

3 优化条件(optimality condition)

  • 的最优解(无论是否是凸的,凸的就是全局最优,非凸就是局),当且仅当次微分包含0

  • 证明:

  • 则必定存在, 使得

4 次梯度迭代算法

4.1 公式

  • 类似于梯度下降算法,将梯度更换成了次梯度,重复 其中,即从次微分中随机选择一个次梯度作为梯度

  • 可以看出次梯度算法并不总是下降的,为了使更新的参数呈递减的趋势,对第 次的参数更新同步使用如下策略: 即第次更新时

  • 若使用次梯度算法得到使, 则另

  • 否则,另

4.2 步长选择

  • 固定步长,

  • 衰减步长,例如,必须满足

  • 只要选择的步长合适,算法总会收敛,只是算法收敛速度比较慢(TODO 证明:https://blog.csdn.net/qq_32742009/article/details/81704139)

5 例子

  • 求解lasso问题

  • 假设是正交的

  • Lasso公式为

  • 求导得

  • 由于 $$ \frac{\partial |\beta|_{1}}{\partial \beta_i}= \left{

    \right} $$

  • 因此分情况讨论得知

    • , 有, 因此有

    • , 有,因此有

    • , 使用反证

    • , 则有

    • ,则有
    • 因此可以得到,
  • 最后,总结情况可知(其中