在前文梯度下降法(一)从导数到梯度下降法的基本逻辑中指出,当函数梯度不存在时候,梯度下降法失效,而次梯度法则是凸优化中解决此类状况的一种有效方法。

一、基本定义

为了介绍次梯度的概念,首先需要引入次导数、次微分等概念。这些概念源于导数、微分,但又有显著的区别。

1. 次导数

下图中的一元函数均为凸函数,但在其拐点处不可导。观察拐点A、B处的直线,按照其与原始函数的位置关系,可分为如下两大类:
1)与原始函数相交,在不同自变量区间内,直线与原始函数的上下关系不确定
2)与原始函数在某点相交,但除了接触的若干点外,均在原始函数的下方

对于上述的第二类直线的导数,我们可以为原始函数在该点处的次导数次梯度法
用更加符号化的语言描述:对于一元函数y=f(x)y=f(x),在其上的点(x0,y0)(x_0,y_0)处,若存在某个常数cc,使得在对于整个定义域内的xx,均满足f(x)f(x0)c(xx0)f(x)-f(x_0)\ge c(x-x_0),则值cc就是函数f(x)f(x)在点x0x_0处的一个次导数。

从几何直观上看(如上图):次导数方向的直线均在原始函数的下方。次导数方向的直线可视为原始函数的一个下界函数。

显然,对于一个一元凸函数,其在某点处的次导数往往存在多个(无穷个),这些次导数的集合即为次微分。特殊的,若该点可微,则次导数唯一,即为导数。

以函数f=xf=|x|(0,0)(0,0)点处的次导数为例:
此时函数的左导数为:limxx0f(x)f(x0)xx0=1\lim\limits_{x\rightarrow -x_0}\frac{f(x)-f(x_0)}{x-x_0}=-1
函数的右导数为:limx+x0f(x)f(x0)xx0=1\lim\limits_{x\rightarrow +x_0}\frac{f(x)-f(x_0)}{x-x_0}=1
因此其次导数的取值范围为[1,1][-1,1],这种计算方式可推广到其它函数。

2. 次梯度

将一元凸函数中的次梯度在多元凸函数中进行推广,则得到次梯度的数学概念:对于多元凸函数y=f(x)y=f(\boldsymbol x),在其上的点(x0,y0)(\boldsymbol x_0,\boldsymbol y_0)处,若存在某个向量g\boldsymbol g,使得在对于整个定义域内的x\boldsymbol x,均满足f(x)f(x0)gT(xx0)f(\boldsymbol x)-f(\boldsymbol x_0)\ge \boldsymbol g^T(\boldsymbol x-\boldsymbol x_0),则向量g\boldsymbol g就是函数f(x)f(\boldsymbol x)在点x0\boldsymbol x_0处的一个次梯度。

从几何直观上,次梯度向量构成的超平面始终在原始函数的下方。次梯度向量构成的超平面可视为原始函数的一个下界函数。

对于多元凸函数,其在任意点处的次梯度是始终存在的。特殊的,当函数在该点处可微时,次梯度即为梯度f(x0)\nabla f(\boldsymbol x_0)

3. 次微分

次微分可视作次梯度的集合:f(x0)={gf(x)f(x0)gT(xx0)}\partial f(\boldsymbol x_0)=\{\boldsymbol g|f(\boldsymbol x)-f(\boldsymbol x_0)\ge \boldsymbol g^T(\boldsymbol x-\boldsymbol x_0)\}

次微分有如下的重要性质和运算方法:
1)若凸函数f(x)f(\boldsymbol x)x\boldsymbol x^*处取得最小值,则向量0\boldsymbol 0必为x\boldsymbol x^*处的次梯度,即0f(x)\boldsymbol 0 \in \partial f(\boldsymbol x^*)
证明:因为函数f(x)f(\boldsymbol x)x\boldsymbol x^*处取得最小值,所以f(x)f(x0)0f(\boldsymbol x)-f(\boldsymbol x_0)\ge0,若取g=0\boldsymbol g=\boldsymbol 0,则满足次微分的定义,因此该结论成立。

2)(αf)=α(f)\partial(\alpha f)=\alpha\partial( f)
3) (f+g)=α(f)+α(g)\partial(f+g)=\alpha\partial(f)+\alpha\partial(g)
4) f(Ax+b)=ATf(x)\partial f(\boldsymbol {Ax+b})=\boldsymbol A^T \partial f(\boldsymbol x)

二、次梯度优化算法

2.1 基本迭代公式

将梯度下降法中的梯度下降方向换为次梯度方向,即可得到次梯度迭代方法:x:=xλg(x),gf(x)\boldsymbol x:=\boldsymbol x-\lambda \boldsymbol g(\boldsymbol x), \boldsymbol g\in \partial f(\boldsymbol x)式中λ\lambda为步长。

值的注意的是:若随意选g\boldsymbol g,则沿着次梯度方向前进一小步有可能使得结果变得更差(如第一部分图中的b所示),所以次梯度优化并不一定是一个下降的方法。

在实际操作中,每步迭代的最终解应当是在所有迭代方案出现过的最优解,即:f(xbestk)=ming(f(x)λg(x))f(\boldsymbol x^k_{best})=\min_{\boldsymbol g}(f(\boldsymbol x)-\lambda g(\boldsymbol x))

2.2 收敛性

如上所述,既然次梯度优化不能保证其每步一定是下降的方法,那利用其求解最优化问题有无保证?

这里不加详细推导的直接给出结论:
在函数ff满足Lipschitz 条件下,可以证明次梯度优化是可以收敛到最优解处的。Lipschitz 条件如下:f(x)f(y)Gxy2|f(x)-f(y)|\le G||x-y||_2如果所需的精度为ϵ\epsilon,其收敛速度为O(1/ϵ2)O(1/\epsilon^2)。这说明,次梯度优化的速度很慢。

2.3 步长选择

和梯度下降法一样,其步长选择的常见策略有两种:
(1)固定步长
(2)选择不断减小的步长,但是步长也不能减少的很快,常用的一种方式是使得步长满足:k=1tk2<,k=1tk=\sum_{k=1}^\infin t_k^2<\infin, \qquad\sum_{k=1}^\infin t_k=\infin

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-24
  • 2021-09-07
  • 2021-07-10
  • 2021-08-30
  • 2021-08-08
  • 2021-09-10
猜你喜欢
  • 2022-12-23
  • 2021-04-10
  • 2021-09-11
  • 2021-12-27
  • 2022-12-23
  • 2021-09-05
  • 2022-12-23
相关资源
相似解决方案