01-subgradients_notes

Subgradients 次梯度
S. Boyd and L. Vandenberghe
Notes for EE364b, Stanford University, Winter 2006-07
April 13, 2008

1 定义
我们称一个矢量gRn是函数f:RnRxdomf处的次梯度,如果对于所有的zdomf满足:

f(z)f(x)+gT(zx)(1)

如果f是凸函数,并且可微,那么该函数在x处的梯度是一个此梯度。但是当函数f不可微时,也可能存在次梯度,如图1.同样的例子表明函数f在点x存在不止一个次梯度。
可以通过几个不同的方式来解释次梯度。如果仿射函数(关于z)
f(x)+gT(zx)
是函数f的全局下界(underestimator),那么矢量g是函数f的一个次梯度。从几何上讲,如果(g,-1)在(x,f(x))处支持撑epi,那么g是函数f在x处的次梯度,如图2所示。
如果函数f在x处,至少存在一个次微分,那么我们称函数f在x处可次微的(subdifferentiable)。函数f在点x处的次梯度的集合成为函数f在x处的次微分(subdifferential),用f(x)表示。如果函数f在其定义域内的每一点都次微分,那么我们称函数是可次微分的。

例子:绝对值。考虑f(z)=|z|。对于所有的x<0,次微分是唯一的:f(x)]={1}.类似的,对于x>0,我们有f(x)={1}.在x=0处,次微分定义为,对于所有的z,满足不等式:

|z|gz

我们通过上面的不等式,求解g的取值范围。当z>0时,zgzg1.当z<0时,zgz1g。因此,for all z,1g1。因此: f(0)=[1,1],如图3.

2 基本属性

即使f不是凸函数,其次梯度f(x)总是闭凸集。这是因为,其是无限个半空间构成的集合的交集:

f(x)=zdomf{g|f(z)f(x)+gT(zx)}

图1:在x1处,凸函数f是可微的,并且g1(即函数f在x1处的偏导数)是在x1处的唯一次梯度。在点x2处,函数不可微,并且在该点处,函数f有很多次梯度:图中演示了g2,g3两个次梯度。

图2:当且仅当(g,-1)定义了上镜图f在(x,f(x))处的一个支撑超平面,那么矢量gRn是函数f在x处的一个次梯度。

图3:绝对值函数(左),它的次微分f(x)是关于x的函数(右)。

2.1 次梯度的存在性

如果f是凸函数,并且xint domf,那么函数的次微分f(x)存在,并且有界。
为了证明f(x)ϕ,我们在上镜图凸集的边界点(x,f(x))上应用超平面理论,得到如下的结论:
存在aRnbR,不全为0,满足:

[ab]T([zt][xf(x)])=aT(zx)+b(tf(x))0

对于all (z,t)epif .
这意味着b0,并且对于所有的z满足:
aT(zx)+b(f(z)f(x))0

如果b0,除以b,我们得到:
f(z)f(x)(a/b)T(zx)

这表明,a/bf(x)。现在我们证明b0,也就是说超平面不能是垂直的。证明方法为,先假定成立,然后推出矛盾。如果b=0,我们可以得到,对于所有的zdomfaT(zx)0,然而这是不可能的,因为xdomf
上面的讨论表明,如果一个凸函数的上镜图epif在(x,f(x))处,至少存在一个非垂直的支撑超平面,那么该函数在x处,存在一个次梯度。例如,如果函数连续,则满足该情况。存在一些病态的凸函数,它们在一些点处不存在次梯度,但是在后续的文章中,我们假定所有的凸函数是可次微分的(在 dom f中的每一点)

2.2 可微函数的次梯度

如果f是凸函数,并且在x处可微,那么f(x)={f(x)},也就是说梯度是它唯一的次梯度。相反地,如果f是凸函数,并且f(x)={g},那么函数f在x处可微,并且g=f(x)

2.3 非可微函数的最小值

一个点x*,当且仅当凸函数f在该点处可次微分,并且0f(x)时,该点是函数f的最小值点。
也就是说,g=0是函数f在x*处的一个次梯度。我们可以直接通过:对于xdomff(x)f(x)推断得到。
如果函数f在点x*处是可微的,条件0f(x)降为 f(x)=0

次梯度的微分

本节,我们描述构造凸函数次梯度的规则。我们将区分两种不同等级的细节。在次梯度的“弱”微分中,即使存在更多的次梯度,目标也只是产生一个次梯度。这在实际应用中已经足够了,因为次梯度,定位(localization),切平面方法仅需要任意点一个次梯度。
另外一个更加困难的任务是将次梯度f(x)的完备集描述为关于x的函数,我们称这个为次梯度的“强”微分。其在理论性的研究中很重要,例如,当描述精确的最优条件时。

3.1 非负缩放

对于α0,(αf)(x)=αf(x)

和and 积分

假定f=f1+...+fm,其中f1,...,fm是凸函数,那么我们有:

f(x)=f1(x)+...+fm(x)

这个属性(性质)可以扩展到无限和,积分和期望(如果存在的话)

3.3 定义域上的仿射转换

Affine transformations of domain
假定函数f是凸函数,令h(x)=f(Ax+b),那么h(x)=ATf(Ax+b)

3.4逐点最大

假定f是一组凸函数f1,...,fm的的逐点最大:

f(x)=maxi=1,...,mfi(x)

其中函数fi是可次微分的。我们首先展示如何构造函数f在x处的一个次梯度。
令k表示任意的索引,其满足fk(x)=f(x),也就是说我们波动的选择k,使得fk(x)=f(x),并且,我们令gfk(x),那么gf(x),换句话说,为了找到这些函数中最大值的梯度,我们选择其中一个在该点处达到最大值的函数,并且选择该函数在该点处的任意一个次梯度,满足:
f(z)fk(z)fk(x)+gT(zx)=f(x)+gT(zx)

理解:第一个不等式f(z)fk(z)是很显然的,因为f(x)是所有函数的最大值,第二项和第三项对应的不等式,由凸函数的性质得到。最后一个等式,因为我们的前提条件是选择的k满足fk(x)=f(x)

更一般地,我们有:

f(x)=Co{fi(x)|fi(x)=f(x)}

理解:对于任意的x,我们找到某个k,满足fk(x)=f(x),然后求解fk(x)作为f(x)

f(x)=Co{{fi(x)|fi(x)=f(x)}}

也就说这些函数的最大值的次梯度是在x点处,”活跃”的函数的并集的凸包。

例子:可微分函数的最大值。假定f(x)=maxi=1,...,mfi(x),其中fi是凸函数并且可微,那么我有:

f(x)=Co{fi(x)|fi(x)=f(x)}

在一个点,只有一个函数fk是“活跃”的,那么f是可微的,并且梯度为fk(x)。如果在一个点,多个函数是“活跃“,那么f(x)是一个多面体。

例子:l1norm。表示为:

f(x)=||x||1=|x1|+...+|xn|

是一个关于x的不可微的凸函数。目的是找到该函数的次梯度,我们注意到f可以表示为2n个线性函数的最大值:
||x||1=max{sTx|si{1,1}}

我们可以应用最大值梯度的规则。第一步确定“活跃”函数sTx,也就是说,找到一个s{1,+1}n,满足sTx=||x||1。如果xi>0,我们选择si=+1,如果xi<0,我们选择si=1。如果xi=0,不止一函数是“活跃”的,此时,si=+1,si=1都是有效的。函数sTx是可微的,并且有唯一的次梯度s。因此,我们可以取:
gi=+111 or+1xi>0xi<0xi=0

所有次梯度的凸包形成次微分,其可以表示为下面的形式:
f(x)={g|||g||1,gTx=||x||1}

3.5上确界

接下来,我们考虑扩展到无限个函数的上确界,也就是说,我们考虑:

f(x)=supαAfα(x)

其中函数falpha可次微分的。我们在这里仅考虑弱属性。
假定可以达到f(x)定义中的上确界。令βA是满足fβ=f(x)的索引,我们令gfβ(x),那么gf(x).如果定义中的上确界不能达到,函数f在x处可能可次微分也可能不可以次微分,这取决于索引集A。
然而,如果我们假定A是紧凑的(采用某个度量),并且函数αfα(x)对于每个x是上半连续的。那么:
f(x)=Co{fα(x)|fα(x)=f(x)}

例子:对称矩阵的最大特征值。令f(x)=λmax(A(x)),其中A(x)=A0+x1A1+...+xnAn,并且AiAm,我们可以将f表示为凸函数的逐点上确界:
f(x)=λmax(A(x))=sup||y||2=1yTA(x)y

这里,索引集A是A={yRn| ||y||2=1}
固定y,每一个函数fy(x)=yTA(x)y是x的仿射函数,可以通过下面的展开形式很容易看出:
yTA(x)y=yTA0y+x1yTA1y+...+xnyTAny

因此函数fy(x)是可微的,并且梯度为:fy(x)=(yTA1y,...,yTAny).
活跃函数yTA(x)y是对应最大特征值的特征矢量y的活跃函数。因此,为了找到次梯度,我们即使特征值λmax对应的特征向量,并且规范化为1,并且取:
g=(yTA1y,yTA2y,...,yTAny)

在这个例子中的索引集是{y| ||y||=1}是一个紧凑的集,因此:
f(x)=Co{fy|A(x)y=λmax(A(x))y,||y||=1}

3.6 关于一些变量的最小化

Minimization over some variable
次梯度的微分规则应用于下面的函数形式:

f(x)=infxF(x,y)

其中F(x,y)是可微分的,并且是关于x和y的联合凸函数,在这里我们也仅讨论弱属性。
假定,针对某个x^,在上面的f(x^)定义中关于y的下确界,在y=y^处达到,也就是说,f(x^)=F(x^,y^)并且对于所有的x,F(x,y^)F(x^,y^)。那么存在一个g满足(g,0)F(x^,y^),并且,这样的任何一个g是函数f在x^处的一个次梯度。
强属性(strong property)。令x2满足f(x1)=infx2F(x1,x2),那么f(x1)={g1|(g1,0)F(x1,x2)}(并且,得到次微分独立于x2的选择。

3.7 一个凸优化问题的最优值函数

Optimal value function of a convex optimization problem
假定f:Rm×Rp定义为标准形式的凸优化问题的最优值,zRn是优化变量:

minimizef0(z)

subject tofi(z)xi,i=1,...,m(2)

Az=y

换句话说,f(x,y)=infzF(x,y,z),其中:
F(x,yz)={+fi(z)xi,i=1,...,m,Az=yotherwise

其中函数F是关于x,y,z上的联合凸函数。f的次梯度与下面的公式(2)的对偶问题有关。
假定,我们对函数f在(x^,y^)处的次微分感兴趣,我们可以将公式(2)的对偶问题表示为:
maximize g(λ)xTλgTv

subject to λ0

其中:
g(λ)=infz(f0(z)+i=1mλifi(z)+vTAz)

假定问题(2)和(3)在x=x^ and y=y^处满足强对偶,并且在λ,v处,达到对偶最优值(例如,因为Slater条件满足)。从全局不等式我们知道:
f(x,y)f(x^,y^)λT(xx^)vT(yy^)

换句话说,对偶最优解提供了一个次梯度:
(λ,v)f(x^,y^)

转载于:https://www.cnblogs.com/raby/p/5886692.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Unity3D导出apk失败:Failed to re-package resources

前几天把系统重装了一下&#xff0c;重新安装Unity3D和Android Studio之后发现过去的文件都不能导出了。 错误信息主要包括&#xff1a; CommandInvokationFailure: Failed to re-package resources. See the Console for details.E:\Android\sdk\build-tools\24.0.0\aapt.exe …

代码块的总结

class Mid extends Root{ static { System.out.println("Mid的静态初始化块"); } { System.out.println("Mid的普通初始化块"); } public Mid() { super(); System.out.println("Mid的无参构造器…

改进MySQL Order By Rand()的低效率

Author&#xff1a;flymorn Source&#xff1a;飘易Categories&#xff1a;PHP编程 PostTime&#xff1a;2011-1-14 15:35:07正 文&#xff1a;最近由于需要研究了一下MYSQL的随机抽取实现方法。举个例子&#xff0c;要从tablename表中随机提取一条记录&#xff0c;大家一般的写…

匿名子类对象

匿名对象的意义&#xff1a;一般只使用一次&#xff0c;图方便&#xff0c;不需要重新写一个类。 匿名类通常都是的形式结构通常都是&#xff1a; abstract class A ... 创建匿名类&#xff1a; A a1 new A(){ 重写所有抽象类的方法 } package AbstractTest2; public cla…

内部类访问局部变量的时候,为什么变量必须加上final修饰

这里的局部变量就是在类方法中的变量&#xff0c;能访问方法中变量的类当然也是局部内部类了。我们都知道&#xff0c;局部变量在所处的函数执行完之后就释放了&#xff0c;但是内部类对象如果还有引用指向的话它是还存在的。例如下面的代码&#xff1a; class Outer{ …

创建接口匿名实现类的对象的四种方法

package InterfactTest; public class InterfaceTest { public static void main(String[] args) { // TODO Auto-generated method stub Computer com new Computer(); com.transferData(new Print()); //创建了非匿名实现类的匿名对象 …

Thinkphp 数据库配置参数

mysql配置 DB_USER > array(DB_TYPE > mysql,DB_HOST > 127.0.0.1,DB_NAME > blog,DB_USER > root,DB_PWD > ,DB_PORT > 3306,DB_PREFIX > ,DB_CHARSET> utf8, // 字符集), Oracle配置&#xff08;模式&#xff09; DB_DATA > array(DB_TYPE >…

代理模式简单模板

package ProxyTest;//接口的应用:代理模式public class NetWorkTest {public static void main(String[] args) {Server se new Server();new ProxyServer(se).browse();} }interface NetWork{void browse(); }//被代理类 class Server implements NetWork{Overridepublic voi…

写出gradle风格的groovy代码

写出gradle风格的groovy代码 我们先来看一段gradle中的代码&#xff1a; buildscript {repositories {jcenter()}dependencies {classpath com.android.tools.build:gradle:2.1.2} }allprojects {repositories {jcenter()} }task clean(type: Delete) {delete rootProject.buil…

这个社会根本不存在值得我们去仰视的人和事

想改变世界&#xff0c;从整理床铺开始。如果你每天早上整理床铺&#xff0c;你就完成了一天中的第一个任务&#xff0c;这会给你小小的自豪感&#xff0c;并激励你去完成另一个任务&#xff0c;一个接一个的任务。一天下来&#xff0c;每个已经完成的小任务会积累成很多大任务…