1. 次梯度
在优化问题中,我们可以对目标函数为凸函数的优化问题采用梯度下降法求解,但是在实际情况中,目标函数并不一定光滑、或者处处可微,这时就需要用到次梯度下降算法。
次梯度(*Subgradient*)与梯度的概念类似,凸函数的First-order characterization是指如果函数f可微,那么当且仅当dom(f)为凸集,且对于∀x,y∈dom(f),使得f(y)≥f(x)+∇f(x)T(y−x),则函数f为凸函数。这里所说的次梯度是指在函数f上的点x满足以下条件的g∈Rn:
f(y)≥f(x)+gT(y−x)
其中,函数f不一定要是凸函数,非凸函数也可以,即对于凸函数或者非凸函数而言,满足上述条件的g均为函数在该点的次梯度。但是,凸函数总是存在次梯度(可以利用epigraph和支撑平面理论证明),而非凸函数则不一定存在次梯度,即使f可微。该定义说明,用次梯度对原函数做出的一阶展开估计总是比真实值要小。
很明显,**凸函数的次梯度一定存在,如果函数f在点x处可微,那么g=∇f(x),为函数在该点的梯度,且唯一;如果不可微,则次梯度不一定唯一。但是对于非凸函数,次梯度则不一定存在,也不一定唯一。**例如,凸函数∥x∥p范数为凸函数,但不满足处处可微的条件,因此,函数的次梯度不一定唯一,如下图:
左一图为∥x∥2,函数在x=0时,次梯度唯一,且g=x/∥x∥2;当x=0时,次梯度为{z:∥z∥2≤1}中的任意一个元素;
左二图为∥x∥1,函数在x=0时,次梯度唯一,且g=sign(x);当x=0时,次梯度为[−1,1]中的任意一个元素;
同样,绝对值函数f(x)=∣x∣和最大值函数f(x)=max{f1(x),f2(x)}在不可微点处次梯度也不一定唯一,如下图:
对于左二函数而言,其在满足f1(x)=f2(x)的点处,次梯度为任意一条直线在向量∇f1(x)和∇f2(x)之间。
同理,我们还可以给出次微分(subdifferential)的定义,即:
∂f(x)={g∈Rn:gisasubgradientoffatx}
如果我们还记得Normal cone是指给定任意集合C和点x∈C,NC(x)={g:gTx≥gTy},那么我们可以看出,对于集合C的边界上点的Normal cone就是函数IC(x)在该点的次微分。其中,
IC(x)=I{x∈C}={0∞if x∈Cif x∈/C
证明:
因为,对于函数的次梯度会满足IC(y)≥IC(x)+gT(y−x),因此,
既证。
2. 次梯度的性质
-
Scalingf:∂(af)=a⋅∂f;
-
Addition:∂(f1+f2)=∂f1+∂f2;
-
Affine composition:如果g(x)=f(Ax+b),那么∂g(x)=AT∂f(Ax+b);
-
Finite pointwise maximum:如果f(x)=i=1,…,mmaxfi(x),那么∂f(x)=conv(i:fi(x)=f(x)⋃∂fi(x)),意味着函数f(x)的次微分等于所有能取得最大值的函数fi(x)在点x处的微分,具体实例可参考之前提到的最大值函数部分。
3. 为什么要计算次梯度?
对于光滑的凸函数而言,我们可以直接采用梯度下降算法求解函数的极值,但是当函数不处处光滑,处处可微的时候,梯度下降就不适合应用了。因此,我们需要计算函数的次梯度。对于次梯度而言,其没有要求函数是否光滑,是否是凸函数,限定条件很少,所以适用范围更广。
次梯度具有以下优化条件(subgradient optimality condition):对于任意函数f(无论是凸还是非凸),函数在点x处取得最值等价于:
f(x∗)=xminf(x)⇔0∈∂f(x∗)
即,当且仅当0属于函数f在点x∗处次梯度集合的元素时,x∗为最优解。
证明:
证明很简单,当次梯度g=0时,对于所有y∈dom(f),存在f(y)≥f(x∗)+0T(y−x∗)=f(x∗),所以,x∗为最优解,即证。
4. 次梯度算法
次梯度算法(Subgradient method)与梯度下降算法类似,仅仅用次梯度代替梯度,即:
x(k)=x(k−1)−tk⋅g(k−1),k=1,2,3,…
其中,g(k−1)∈∂f(x(k−1)),为f(x)在点x处的次梯度。
与梯度下降算法不同的地方在于,次梯度算法并不是下降算法,每次对于参数的更新并不能保证代价函数是呈单调递减的趋势,因此,一般请款下我们选择:
f(xbest(k))=i=0,…,kminf(x(i))
另一点与梯度下降算法不同的是:次梯度算法没有明确的步长选择方法,类似Exact line search和Backtracking line search的方法,只有步长选择准则,具体如下:
-
Fixed step sizes: tk=t,allk=1,2,3,…;
-
Diminishing step sizes: 选择满足以下条件的tk:
k=1∑∞tk2<∞,k=1∑∞tk=∞
Diminishing step sizes方法主要是保证步长逐渐变小,同时,变化幅度还不会特别快。这里需要注意的是,次梯度算法并不像梯度下降一样,可以在每一次迭代过程中自适应的计算此次步长(adaptively computed),而是事先设定好的(pre-specified)。
但是,很多人会提出这样一个问题,如果你不能保证次梯度是单调的,如何保证最后可以收敛?
定理:如果f为凸函数,且满足Lipschitz continuous with G,如果固定步长为t,那么次梯度算法满足:
k→∞limf(xbest(k))≤f∗+2G2t
证明:
对于∀k,x(k+1)=x(k)−tg(k),其中g∈∂f(x)。因此,我们可以展开下式为:
∥x(k+1)−x∗∥22=∥x(k)−tg(k)−x∗∥22=∥x(k)−x∗∥22−2tg(k)(x(k)−x∗)+t2∥g(k)∥22
因为,f(x∗)=f∗,且由凸函数一阶性质可得f(x∗)≥f(x(k))+g(k)T(x∗−x(k)),上式不等式可以写为:
∥x(k+1)−x∗∥22≤∥x(k)−x∗∥22−2t(f(x(k))−f∗)+t2∥g(k)∥22
对于任意k=1,2,…,K,求和上式可以获得:
k=1∑K(∥x(k+1)−x∗∥22−∥x(k)−x∗∥22)=∥x(k+1)−x∗∥22−∥x(1)−x∗∥22≤−2t∑(f(x(i))−f∗)+∑t2∥g(i)∥22
因为,∥x(k+1)−x∗∥22≥0,所以:
2ti=1∑k(f(x(i))−f∗)≤∥x(1)−x∗∥22+i=1∑kt2∥g(i)∥22
如果令f(xbestk)为迭代k次内的最优解,那么f(xbest(k))≤f(x(i)),其中,i=1,2,…,k,因此:
2tk(f(xbest(k))−f∗)=2ti=1∑k(f(xbest(k))−f∗)≤2ti=1∑k(f(x(i))−f∗)≤∥x(1)−x∗∥22+i=1∑kt2∥g(i)∥22
所以,我们可以得到
f(xbest(k))−f∗≤2tk∥x(1)−x∗∥22+∑i=1kt2∥g(i)∥22
同时,因为函数满足Lipschitz continuous with G,所以,∣f(x)−f(y)∣≤∥x−y∥2,即函数的次梯度∥g∥2≤G。
综上所述,我们可以证明下式成立:
f(xbest(k))−f∗≤2tk∥x(1)−x∗∥22+t2kG2=2tkR2+2G2t
当k→∞,既证上述定理成立。
此时,如果我们想要获得ϵ-最优解,则令
2tkR2+2G2t=ϵ
令等式的每一部分等于2ϵ,则
k=tR2⋅ϵ1=ϵ2R2G2
因此,次梯度的收敛速度为O(ϵ21),跟梯度下降算法收敛速度O(ϵ1)相比,要慢许多。
5. 次梯度算法实例
A. Regularized Logistic Regression
对于逻辑回归的代价函数可记为:
f(β)=i=1∑n(−yixiTβ+log(1+exp(xiTβ)))
明显,上式是光滑且凸的,而regularized problem则是指优化目标函数为:
β∈Rpminf(β)+λ⋅P(β)
如果P(β)=∥β∥22,则成为岭回归(ridge problem),如果P(β)=∥β∥1则称为Lasso。对于岭回归,我们仍然可以采用梯度下降算法求解目标函数,因为函数处处可导光滑,而Lasso问题则无法用梯度下降算法求解,因为函数不是处处光滑,具体可参考上面给出的Norm-1的定义,所以,对于Lasso问题需要选用次梯度算法求解。
下图是对于同样数据集下分别对逻辑回归选用岭惩罚和Lasso惩罚求解最优解的实验结果图(n=1000,p=20):
B. 随机次梯度算法
第4部分降到的次梯度算法梯度更新定义为:
x(k)=x(k−1)−tk⋅i=1∑mgi(k−1),k=1,2,3,…
随机次梯度算法(Stochastic Subgradient Method)与次梯度算法(Subgradient Method)相比,每次更新次梯度是根据某一个样本计算获得,而不是通过所有样本更新次梯度,其定义为:
x(k)=x(k−1)−tk⋅gik(k−1)
其中,ik∈{1,…,m}是第t次迭代随机选取的样本i。从该方法的定义,我们也可引出随机梯度下降算法(Stochastic Gradient Descent)的定义,即当函数f可微连续时,gi(k−1)=∇fi(x(k−1))。
所以,根据梯度更新的方式不同,次梯度算法和梯度下降算法一般被称为”batch method”。从计算量来讲,m次随机更新近似等于一次batch更新,二者差别在于∑i=1m[∇fi(x(k+i−1))−∇fi(x(k))],当x变化不大时,差别可以近似等于0。
对于随机更新次梯度,一般随机的方式有两种:
-
Cyclic rule:选择ik=1,2,…,m,1,2,…,m,…;
-
Randomized rule:均匀随{1,…,m}机从选取一点作为ik。
与所有优化算法一样,随机次梯度算法能否收敛?
答案是肯定的,这里就不在做证明,有兴趣的同学可以参考boyd教授的论文,这里仅给出收敛结果,如下:
k→∞limf(xbest(k))≤f∗+25m2G2t
对于Cyclic rule,随机次梯度算法的收敛速度为O(m3G2/ϵ2);对于Randomized rule,随机次梯度算法的收敛速度为O(m2G2/ϵ2)。
下图给出梯度下降和随机梯度下降算法在同一数据下迭代结果: