SubGradient

  • 格式:pdf
  • 大小:813.19 KB
  • 文档页数:5

次梯度(SubGradient)
吴有光写于2014年2月20日,仅用于学术交流,请勿用于商业用途。

摘要:详细解释次导数和次梯度法
关键字:次导数,次微分,次导数法,凸函数
Abstract: A brief introduction of subgradient
Keywords: Subderivative, Subdifferential, Subgradient method, Convex Function
引言之引言:优化问题中寻找极值点时常有一句话“往负梯度方向走”,那当梯度不存在的时候,该如何走?答案是“往次梯度反方向走”。

一、引言
网上关于次梯度的资料很少,很多做数据分析、信号处理的同学并没有系统的学过凸优化,这里做一个简单介绍,希望能够对大家有用。

打开百度,大概能搜到的次梯度介绍是这一段(限于本文写作之时)
这个定义非常的抽象,我们唯一能够得到的信息就是次梯度大概是这样定义的。

设为在出的次梯度,则需满足
(1)
或者有另外的写法为
能够明显感觉的是:次梯度好像是一个小于等于梯度的东西。

这是国内从教材到课件都喜欢故弄玄虚、生搬硬套的结果。

下面我希望能有用稍微简单但又详细的过程来介绍一下次梯度这个奇怪的东西。

二、次导数与次微分
先回忆一下导数的定义。

设函数,要定义它的导数,可以这么来做:在任意一点,有
这里和分别表示从的左边和右边来逼近它。

我们知道,如果,即左右极限存在且相等,则称为在处
的导数,即
但函数往往并不是那么的“好”。

如下图的函数,其在处是没有导数的。

函数如图1中的蓝线所示。

此函数在处,左右极限不相
等。

图1 次导数示意图
回顾一下函数导数的意义,导数值表示函数在某点的切线斜率。

由于函数
的凸性,其实在处我们可以做很多条切线,如图中红色线为其中的一条。

根据前述的计算,我们知道这些切线的斜率满足。

上面定义的切线好像跟我们以前的定义既相似又不同(相同点:与原函数都只有一个点重合;不同点:在某点,有很多条切线),但很有用,所以称之为次导数。

另外,我们将斜率的两个边界值也包含进来,认为次导数为中
的任意一个值。

我们重新整理如定义1所述。

定义1(次导数)对于凸函数在点的次导数定义为
(2)
次导数是针对凸函数中的不可导点定义,那么对于可导点呢?可导点的次导数当然就是导数本身啦。

推论1(次导数)函数在可导点的导数即为次导数。

次导数显然取值是一个区间,于是将此区间定义为次微分。

定义2(次微分)所有次导数的集合称为函数在处的次微分,
记为。

同样道理,对于可导点,次微分就不是一个区间,而只是一个值了。

推论2(次微分)函数在可导点的次微分为单元素集合。

三、次导数和次微分的性质
说明1:次导数是考虑了不可导点的广义导数,在可导点的次导数退化为导数。

说明2:次导数只针对凸函数,非凸函数则式(2)无法满足。

根据前面的分析,可以总结次导数和次微分的性质如下[2]:
1)函数在处可导,当且仅当次微分只由一个点组成,这个点
就是函数在的导数。

2)点是凸函数的最小值点,当且仅当次微分中包含零。

也就是说,在上
面的图中,我们可以作一条水平的“次切线”。

这个性质是“可导函数在极小值的导数是零”的事实的推广。

3)次微分为凸的紧集,一般为单元素集合或者闭区间。

四、次梯度及其性质
次梯度是次导数在高维函数上的推广,虽然只是简单的增加维数,但情况变得稍微复杂。

当学习了次导数和次微分之后,我们再回头来看文章一开始那个对次梯度的
定义(见式(1)),好像理解了一点。

下面做更为详细的介绍。

定义3(次梯度)如果是一个实变量凸函数,定义域为上的
凸集,如果对于所有内的,都有:
(3)
则该空间内的向量称为函数在点的次梯度。

定义4(次微分)所有次梯度的集合称为次微分,用表示。

结合前面一维变量的情况,对于次梯度的理解应该很简单,这里不再啰嗦。

性质1次微分非空,且为凸紧集。

可以类比一维变量情况来理解,一维时,因为为凸函数,所以定义域
为凸集(连续区间),即不会出现中间断裂。

又因为函数为凸,所以必有左极限小于等于右极限,因而次微分必然为一个连续闭区间,这就是最简单的凸紧集的例子。

详细证明这里不再给出。

性质2对于有
上式中第一个等式左边表示函数沿方向的方向导数,第二个等式右边
表示方向导数等于方向与次微分内积最大值。

性质3若,且均为凸函数,则下述
次微分关系成立
这条性质说明凸函数的线性组合之次微分为原各凸函数次微分之组合。

性质4若,其中为矩阵,则
五、次梯度法
优化中的次梯度法将会解决梯度法中遇到不可导点的问题。

在如何找极值点问题时,做法是:在可导点,就按梯度反方向走,在不可导点,就按次梯度的反方向走。

总结一句话:总是按次梯度的反方向走。

次梯度法的迭代算法必然为
因为在不可导点的次梯度有多个值,所以极值的计算为
上面迭代中的步长可以取定值,也可以根据当前步骤的参数动态调整,这与一
般梯度法差别不大,这里不再叙述。

最最后说一句:次梯度迭代法由于收敛非常之慢,实际计算中很少用它。

参考文献
[1] Subderivative, Online available: /wiki/Subderivative.
[2]次导数, Online available: /wiki/%E6%AC%A1%E5%AF%BC%E6%95%B0
[3] Subgradient_method, Online available: /wiki/Subgradient_method
[4]次梯度法, Online available: /wiki/%E6%AC%A1%E6%A2%AF%E5%BA%A6%E6%B3%95。