版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/quiet_girl/article/details/79648124
写在前面
本篇博客来自其他几篇博客的整合(详见参考文献),主要是提取了一些利于自己理解的小点。
一、为什么需要次梯度方法
次梯度方法是传统梯度下降算法的拓展,传统梯度下降算法是为了解决可导凸函数的问题,而次梯度方法主要是为了解决不可导梯度的问题。但是其算法收敛速度会相对较慢。
二、次梯度的定义
次梯度是指对于函数
上的点
满足一下条件的
:
即,
(1)若 是一个凸函数,若 在x处可导,则由一阶泰勒展开式:
(2)若 在x处不可导,则仍可得到一个下届:
这个 就是 的子梯度。
注意:虽然次梯度是针对不可导函数而设计的,但是可导函数也仍然可以使用,因此 是非凸函数也是可以的。
三、次梯度的计算方法
在点
的次导数的集合是一个非空闭区间[a, b],其中a和b是单侧极限
,
a和b一定存在,且a≤b。所有次导数的集合[a, b]称为函数
在
的次导数。
四、次梯度的举例
在
的次梯度为[-1, 1]。
,
因此,
在
的次梯度为[-1, 1]。
五、次梯度的性质
- 数乘不变性。
- 加法不变性。
- 放射特性。如果 是凸函数,那么
六、次梯度算法
次梯度算法与梯度下降类似,仅仅是使用次梯度代替梯度,即:
其中,
为
在x处的次梯度。
与梯度下降算法不同的地方在于,次梯度算法并不是下降算法,每次对于参数的更新并不能保证代价函数是呈单调递减的趋势。
参考文献:
https://www.52ml.net/20973.html
https://blog.csdn.net/lansatiankongxxc/article/details/46386341
https://www.cnblogs.com/connorzx/p/4797194.html