次梯度(subgradient)方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/quiet_girl/article/details/79648124

写在前面

本篇博客来自其他几篇博客的整合(详见参考文献),主要是提取了一些利于自己理解的小点。

一、为什么需要次梯度方法

次梯度方法是传统梯度下降算法的拓展,传统梯度下降算法是为了解决可导凸函数的问题,而次梯度方法主要是为了解决不可导梯度的问题。但是其算法收敛速度会相对较慢。

二、次梯度的定义

次梯度是指对于函数 f 上的点 x 满足一下条件的 g R n :

f ( y ) f ( x ) + g T ( y x )

即,
(1)若 f 是一个凸函数,若 f 在x处可导,则由一阶泰勒展开式:
f ( y ) f ( x ) + f ( x ) T ( y x )

(2)若 f 在x处不可导,则仍可得到一个下届:
f ( y ) f ( x ) + g T ( y x )

这个 g 就是 f 的子梯度。
注意:虽然次梯度是针对不可导函数而设计的,但是可导函数也仍然可以使用,因此 f 是非凸函数也是可以的。

三、次梯度的计算方法

在点 x 0 的次导数的集合是一个非空闭区间[a, b],其中a和b是单侧极限
a = lim x > x 0 f ( x ) f ( x 0 ) x x 0 a = lim x > x 0 + f ( x ) f ( x 0 ) x x 0
a和b一定存在,且a≤b。所有次导数的集合[a, b]称为函数 f x 0 的次导数。

四、次梯度的举例

f ( x ) = | x | x = 0 的次梯度为[-1, 1]。
a = lim x > 0 | x | 0 x = x x = 1
b = lim x > 0 + | x | 0 x = x x = 1
因此, f ( x ) = | x | x = 0 的次梯度为[-1, 1]。

五、次梯度的性质

  • 数乘不变性。 α 0 , ( α f ) ( x ) = α f ( x )
  • 加法不变性。 f = f 1 + . . . + f m , f ( x ) = f 1 ( x ) + . . . + f m ( x )
  • 放射特性。如果 f 是凸函数,那么 f ( A x + b ) = A T f ( A x + b )

六、次梯度算法

次梯度算法与梯度下降类似,仅仅是使用次梯度代替梯度,即:
x ( k ) = x ( k 1 ) t k g ( k 1 ) , k = 1 , 2 , 3...
其中, g ( k 1 ) f ( x ( k 1 ) ) f ( x ) 在x处的次梯度。
与梯度下降算法不同的地方在于,次梯度算法并不是下降算法,每次对于参数的更新并不能保证代价函数是呈单调递减的趋势。

参考文献:
https://www.52ml.net/20973.html
https://blog.csdn.net/lansatiankongxxc/article/details/46386341
https://www.cnblogs.com/connorzx/p/4797194.html

猜你喜欢

转载自blog.csdn.net/quiet_girl/article/details/79648124
今日推荐