次梯度方法
次梯度方法(subgradient method)是傳統的梯度下降方法的拓展,用來處理不可導的凸函數。它的優勢是比傳統方法處理問題范圍大,劣勢是算法收斂速度慢。但是,由於它對不可導函數有很好的處理方法,所以學習它還是很有必要的。
次梯度(subgradient)
1.定義
所謂次梯度,定義是這樣的:
ps.花括號不知道為什么打不出來,,用中括號代替吧。
用圖片表示,即為

也就是,在\(x_0\)處所有的支撐超平面的超平面的法向量\(g^T\)的轉置\(g\)構成的集合。即\(g \in \partial f\)。
一維次梯度稱為次導數,通過求函數在點的每一分量的次導數可以求出函數在該點的次梯度。
可以證明,在點\(x_0\)的次導數的集合是一個非空閉區間\([a,b]\),其中a和b是單側極限,\(a = \lim \limits_{x \to x_0^-} {{f(x) - f(x_0)} \over {x - x_0}},b = \lim \limits_{x \to x_0^+} {{f(x) - f(x_0)} \over {x - x_0}}\) ,它們一定存在,且滿足\(a≤b\)。所有次導數的集合\([a,b]\)稱為函數\(f\)在\(x_0\)的次導數。
舉例:\(y=|x|\)在\(x=0\)的次梯度為\([-1,1]\)
注: 如果\(f\)可導,那么它的次梯度等於它的梯度。如果不可導,在最優點處,\(0 \in \partial f\)
2. 性質
- 數乘不變性。\(\forall \alpha \ge 0,\partial (\alpha f)(x)=\alpha \partial f(x)\)
- 加法不變性。\(f=f_1+\ldots+f_m,\partial f(x)=\partial f_1(x)+\ldots+\partial f_m(x)\)
- 仿射特性。如果\(f\)是凸函數,那么\(\partial f(Ax+b)=A^T \partial f(Ax+b)\)
3. 擴展
對於一個凸優化問題,
對偶問題為
那么,由全局擾動不等式,我們有
其中,假設Slater條件成立,且在\(x=\hat x,y=\hat y\)處滿足強對偶性。
從上式可以看出,\(-(\lambda^ * ,v^ * )\in \partial f(\hat x,\hat y)\)
也就是說\((\lambda^ * ,v^ * )^T\)是\((\hat x,\hat y)\)處的一個支持超平面的法線。
次梯度方法
首先,我們想到的方法是推廣一下梯度下降法。
其中,\(g^{(k)} \in \partial f(x^{(k)})\)
然而,\(-g^{(k)}\)可能不再是下降方向。所以常用的方式是一直保留最小的函數值,直到結果收斂。
注:步長選擇和收斂性分析在這里不再贅述。(回頭有精力再寫)
應用(duality+subgradient method)
用法1
對於凸優化問題
對偶問題為
其中,\(g(\lambda)=\inf \limits_x L(x,\lambda)=f_0(x^ * (\lambda))+\sum \limits_{i=1}^{m} \lambda_i f_i(x^ * (\lambda))\)
假設Slater條件成立,那么我們可以通過解決對偶問題求得原問題的解。
那么,使用次梯度方法時,需要使得
也就是,
用法2
對比原來的$ \nabla L(x,\lambda ^ * ) = 0 $
這里經常用的是 $0 \in \nabla L(x,\lambda ^ * ) $
