次梯度¶
1 背景¶
- 可导的凸函数,我们通常使用常规的梯度下降法处理,但当目标函数不可导,引入次梯度(Subgradient)用于解决此类目标函数并不总是处处可导的问题
- 次梯度方法的优势是比传统方法能够处理的问题范围更大,不足之处就是算法收敛速度慢。
2 定义¶
2.1 凸函数定义¶
-
凸函数的一阶条件:对于凸函数,如果它可导,则对, 有
-
简单讲就是对于凸函数,其切线总是在函数的下方。
2.2 次梯度¶
-
对给定的, 对, 若满足 则就是在的次梯度
-
无论是凸函数还是非凸函数,只要满足上述条件,就是在的次梯度。
-
次微分:将在处所有次梯度的集合称为在的次微分,记作
-
次梯度不一定唯一,也可能不存在。次梯度是在函数凸的区域上加以定义的,凸函数总有次梯度,非凸函数即使可微也不一定有次梯度。凸函数的次微分总是非空,凹函数的次微分是空集。
2.3 计算¶
-
只考虑目标函数是凸函数情况
-
考虑在的左导数
-
考虑在的右导数
-
因此对的次微分是, 都是次梯度
-
如果可导,则,因此次梯度就是梯度
-
不可导,次梯度才有多个
-
例如
-
公式
-
次梯度是
3 优化条件(optimality condition)¶
-
点是的最优解(无论是否是凸的,凸的就是全局最优,非凸就是局),当且仅当次微分包含0
-
证明:
-
若
-
则
-
若
-
则必定存在, 使得
4 次梯度迭代算法¶
4.1 公式¶
-
类似于梯度下降算法,将梯度更换成了次梯度,重复 其中,即从次微分中随机选择一个次梯度作为梯度
-
可以看出次梯度算法并不总是下降的,为了使更新的参数呈递减的趋势,对第 次的参数更新同步使用如下策略: 即第次更新时
-
若使用次梯度算法得到使, 则另
- 否则,另
4.2 步长选择¶
-
固定步长,
-
衰减步长,例如,必须满足
-
只要选择的步长合适,算法总会收敛,只是算法收敛速度比较慢(TODO 证明:https://blog.csdn.net/qq_32742009/article/details/81704139)
5 例子¶
-
求解lasso问题
-
假设是正交的
-
Lasso公式为
-
求导得
-
另
-
由于 $$ \frac{\partial |\beta|_{1}}{\partial \beta_i}= \left{
\right} $$
-
因此分情况讨论得知
-
若, 有, 因此有
-
若, 有,因此有
-
若, 使用反证
-
若, 则有
- 若,则有
- 因此可以得到,,
-
-
最后,总结情况可知(其中指)