次梯度法相关概念

参考:
https://blog.csdn.net/bitcarmanlee/article/details/51896348
https://en.wikipedia.org/wiki/Subgradient_method
https://en.wikipedia.org/wiki/Subderivative#The_subgradient
https://zhuanlan.zhihu.com/p/36784881 有次梯度的例子
https://www.cnblogs.com/connorzx/p/4797194.html

基础概念

次导数

如果函数f(x)在某点不可导,那么在该点函数f(x)就不存在导数,但在该点会存在次导数。
次导数,即通过该不可导点(x0,f(x0))的一条直线的斜率,该直线要在函数图像之下或者和函数图像重合,不能超过函数图像或与函数图像相交。即可以用下图来表示:
这里写图片描述
图中蓝色线段表示函数图像f(x),红色线代表函数f(x)在x0处的次导数,而图中的函数并不是处处可微。
严格地说,凸函数f:I→R在点x0的次导数,是实数c使得:
这里写图片描述

对于I内所有的x,我们可以证明,在点x0的次导数的集合是一个非空闭区间[a, b],其中a和b是单侧极限。
这里写图片描述
它们一定存在并满足a≤b。
所有次导数的集合[a,b]称为函数f在x0处的次微分

次微分

直观地说,所有上图中红色直线的斜率的集合被称为f(x)在x0处的次微分,也就是说函数在某点的次微分是该点次导数的集合。特别的,当函数在x0点可导时,次微分只有一个点组成,这个点就是函数在x0处的导数。
举个例子:
考虑凸函数f(x)=|x| ,由于函数在f(x)不可导,在x0=0点的次微分是区间[−1, 1]。当x0<0时,次微分是单元素集合{-1},而x0 >0 ,次微分则是单元素集合{1}。
值得注意的是,次梯度和次微分只是对凸函数定义的。

梯度

这里写图片描述
学了好久的梯度居然忘了梯度的具体定义,这里贴上。也就是说,梯度中每一个元素都是多元函数对某个变量求的偏导数。

次梯度

需要说明的是上面的概念是对一元函数的而言的,当然次导数和次微分也可以推广到多元函数。
结合上面梯度的定义来看,次导数是次梯度的一种特殊情况,即函数f只是一元函数。在忽略变量个数时,可以认为次导数和次梯度是一个概念。
一维次梯度称为次导数,通过求函数在某点的每一分量的次导数(对应可导中求对每个变量求偏导)可以求出函数在该点的次梯度。在一元函数中,某点所有次导数的集合被称为次微分,而在多元函数中,所有次梯度的集合被称为次微分。函数f在某不可微点的子梯度不唯一,特别的,当f可微的时候,子梯度和梯度等价。【不知道这样理解是否正确】
次梯度的定义为:
这里写图片描述
值得注意的是,上面次梯度定义式中的y是针对函数f中所有的点。这里次梯度g就是一个向量,而不是像次导数的定义式中c只是一个实数

次梯度法

次梯度法(subgradient method)是传统梯度下降方法的拓展,用来处理不可微(non-differentiable )的凸函数。它的优势是比传统方法处理问题范围大,但劣势是算法收敛速度慢。而传统的梯度下降方法只能处理可导函数。
经典的子梯度迭代为:
这里写图片描述
这里写图片描述
值得注意的是,不同于用于可微函数的梯度下降算法,其梯度的反方向一定是下降的,次梯度法的反方向并不一定朝函数值减小的方向,也有可能朝函数值增大的方向。即负次梯度方向不一定是下降方向。所以常用的方式是一直保留最小的函数值,直到结果收敛。这里写图片描述
如下,用一张图片表示次梯度在函数图像上的位置及其在某点利用某次梯度逼近该函数在该点的方程的形式。x1点可导,x2点不可导。
这里写图片描述
这里多说一句,其实无论是梯度法还是次梯度法,本质上我们都在使用一阶泰勒展开式的原理去逼近在某点的原函数。正如泰勒展开式的思想所述,将目标函数在某点附近展开为泰勒(Taylor)多项式来逼近原函数。

例子

摘抄了下面的2个例子,加深一下自己的理解。
这里使用L1范数求出x=0点时的次微分。
这里写图片描述
对于L1范数,可以换一种写法这里写图片描述,再根据次微分就是区间的积就可以算得上面的结果。

具体的问题

这个问题中目标函数只是一维的,所以次梯度的形式就比较简单。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/Chaolei3/article/details/81228275
今日推荐