次梯度

次梯度

梯度是比较熟悉的一个概念了,经常用在优化问题上,例如最为常用的随机梯度下降(SGD),但是有时候会遇到一些不可导的情况,而次梯度就是为了解决这些问题而出现的一个概念。

首先看一下维基百科上给出的解释:次梯度法是求解凸函数最优化(凸优化)问题的一种迭代法。次梯度法能够用于不可微的目标函数。当目标函数可微时,对于无约束问题次梯度法与梯度下降法具有同样的搜索方向。

要解释次梯度,先来看一下次导数:定义凸函数 f : I → R f : I \rightarrow R f:IR,函数在点 x 0 x_0 x0 处的次导数,是实数 c c c 使得:
f ( x ) − f ( x 0 ) ≥ c ( x − x 0 ) f(x)-f\left(x_{0}\right) \geq c\left(x-x_{0}\right) f(x)f(x0)c(xx0)

可以看到是一个不等式,因此 c c c 很可能不止一个,事实上,在点 x 0 x_0 x0 的次导数是一个非空闭区间[a, b],其中a和b是单侧极限:
a = lim ⁡ x → x 0 − f ( x ) − f ( x 0 ) x − x 0 b = lim ⁡ x → x 0 + f ( x ) − f ( x 0 ) x − x 0 \begin{aligned} &a=\lim _{x \rightarrow x_{0}^{-}} \frac{f(x)-f\left(x_{0}\right)}{x-x_{0}}\\ &b=\lim _{x \rightarrow x_{0}^{+}} \frac{f(x)-f\left(x_{0}\right)}{x-x_{0}} \end{aligned} a=xx0limxx0f(x)f(x0)b=xx0+limxx0f(x)f(x0)
a a a b b b 都是一定存在的,所有次导数的集合 [ a , b ] [a, b] [a,b] 称为函数 f f f 在点 x 0 x_0 x0次微分。直观的说,是连接原点和 x 0 x_0 x0中的所有直线中,仅仅在 x 0 x_0 x0 处与函数曲线相交,其余都在曲线下面的那些直线的斜率的集合,如下红线所示:

举个例子,对于函数 ∣ x ∣ |x| x 来说,在 x = 0 x=0 x=0 处次梯度是 [ − 1 , 1 ] [-1,1] [1,1],而在 x < 0 x<0 x<0 时是-1,在 x > 0 x>0 x>0 时是1。次梯度的性质如下:

  • 数乘不变性: ∀ α ≥ 0 , ∂ ( α f ) ( x ) = α ∂ f ( x ) \forall \alpha \geq 0, \partial(\alpha f)(x)=\alpha \partial f(x) α0,(αf)(x)=αf(x)
  • 加法不变性: ∂ ( f 1 + f 2 ) = ∂ f 1 + ∂ f 2 \partial\left(f_{1}+f_{2}\right)=\partial f_{1}+\partial f_{2} (f1+f2)=f1+f2
  • 仿射性: ∂ f ( A x + b ) = A T ∂ f ( A x + b ) \partial f(A x+b)=A^{T} \partial f(A x+b) f(Ax+b)=ATf(Ax+b)

次梯度算法

可以参考次梯度算法,介绍的很详细。有几个关键的地方记录一下:

  • 次梯度算法并不是下降算法,因此参数更新并不能保证得到更优的结果,所以通常选择多次更新中最好的结果

  • 因为上一条的原因,次梯度算法没有明确的步长选择方法,可以固定步长,也可以选择逐步减小同时满足以下条件的步长: ∑ k = 1 ∞ t k 2 < ∞ , ∑ k = 1 ∞ t k = ∞ \sum_{k=1}^{\infty} t_{k}^{2}<\infty, \sum_{k=1}^{\infty} t_{k}=\infty k=1tk2<,k=1tk= ,Note that 需要预先设定好变化,而不是自适应的。

  • 次梯度可以保证收敛,利用莱布尼兹条件证明,上面的链接里有具体过程,这里仅仅给出结果:如果f为凸函数,且满足Lipschitz continuous with G,如果固定步长为t,那么次梯度算法满足: f ( x b e s t ( k ) ) − f ∗ ≤ ∥ x ( 1 ) − x ∗ ∥ 2 2 + t 2 k G 2 2 t k = R 2 2 t k + G 2 t 2 \begin{aligned} &f\left(x_{b e s t}^{(k)}\right)-f^{*} \leq \frac{\left\|x^{(1)}-x^{*}\right\|_{2}^{2}+t^{2} k G^{2}}{2 t k}\\ &=\frac{R^{2}}{2 t k}+\frac{G^{2} t}{2} \end{aligned} f(xbest(k))f2tkx(1)x22+t2kG2=2tkR2+2G2tk趋近于无穷大时,第一项可以省略。

  • 次梯度的收敛速度为 O ( 1 ϵ 2 ) O(\frac{1}{\epsilon^2}) O(ϵ21),跟梯度下降算法收敛速度 O ( 1 ϵ ) O(\frac{1}{\epsilon}) O(ϵ1)相比,要慢许多。

参考文献

  1. https://blog.csdn.net/quiet_girl/article/details/79648124
  2. http://www.pianshen.com/article/3002681077/
  3. https://en.wikipedia.org/wiki/Subgradient_method
  4. https://blog.csdn.net/qq_32742009/article/details/81704139
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值