在优化问题中,咱们能够对目标函数为凸函数的优化问题采用梯度降低法求解,可是在实际状况中,目标函数并不必定光滑、或者到处可微,这时就须要用到次梯度降低算法。算法
次梯度(*Subgradient*)
与梯度的概念相似,凸函数的First-order characterization是指若是函数f可微,那么当且仅当
其中,函数
很明显,凸函数的次梯度必定存在,若是函数
左一图为
左二图为
一样,绝对值函数
对于左二函数而言,其在知足
同理,咱们还能够给出次微分(subdifferential)的定义,即:
若是咱们还记得Normal cone是指给定任意集合
,
证实:
orm
由于,对于函数的次梯度会知足
既证。
对于光滑的凸函数而言,咱们能够直接采用梯度降低算法求解函数的极值,可是当函数不到处光滑,到处可微的时候,梯度降低就不适合应用了。所以,咱们须要计算函数的次梯度。对于次梯度而言,其没有要求函数是否光滑,是不是凸函数,限定条件不多,因此适用范围更广。
次梯度具备如下优化条件(subgradient optimality condition):对于任意函数
即,当且仅当0属于函数
证实:
证实很简单,当次梯度
次梯度算法(Subgradient method)与梯度降低算法相似,仅仅用次梯度代替梯度,即:
其中,
与梯度降低算法不一样的地方在于,次梯度算法并非降低算法,每次对于参数的更新并不能保证代价函数是呈单调递减的趋势,所以,通常请款下咱们选择:
另外一点与梯度降低算法不一样的是:次梯度算法没有明确的步长选择方法,相似Exact line search和Backtracking line search的方法,只有步长选择准则,具体以下:
Fixed step sizes
:
Diminishing step sizes
: 选择知足如下条件的
Diminishing step sizes方法主要是保证步长逐渐变小,同时,变化幅度还不会特别快。这里须要注意的是,次梯度算法并不像梯度降低同样,能够在每一次迭代过程当中自适应的计算这次步长(adaptively computed),而是事先设定好的(pre-specified)。
可是,不少人会提出这样一个问题,若是你不能保证次梯度是单调的,如何保证最后能够收敛?
定理:若是
证实:
对于
由于,
对于任意
由于,
若是令
因此,咱们能够获得
同时,由于函数知足Lipschitz continuous with G,因此,
综上所述,咱们能够证实下式成立: