次梯度方法


次梯度方法

次梯度方法(subgradient method)是傳統的梯度下降方法的拓展,用來處理不可導的凸函數。它的優勢是比傳統方法處理問題范圍大,劣勢是算法收斂速度慢。但是,由於它對不可導函數有很好的處理方法,所以學習它還是很有必要的。

次梯度(subgradient

1.定義

所謂次梯度,定義是這樣的:

\[\partial f= \{ [g|f(x)\ge f(x_0)+g^T(x-x_0),\forall x \in domf,f:R^n \to R ] \} \]

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. 擴展

對於一個凸優化問題,

\[\min f_0(z),s.t. f_i(z) \le x,Ax=y \]

對偶問題為

\[\max g(\lambda)-x^T\lambda-y^T v \]

那么,由全局擾動不等式,我們有

\[f(x,y) \ge f(\hat x,\hat y)-{\lambda^ * }^T(x-\hat x)-{v^ * }^T(y-\hat y) \]

其中,假設Slater條件成立,且在\(x=\hat x,y=\hat y\)處滿足強對偶性。

從上式可以看出,\(-(\lambda^ * ,v^ * )\in \partial f(\hat x,\hat y)\)

也就是說\((\lambda^ * ,v^ * )^T\)\((\hat x,\hat y)\)處的一個支持超平面的法線。

次梯度方法

首先,我們想到的方法是推廣一下梯度下降法。

\[x^{(k+1)}=x^{(k)}-\alpha_k g^{(k)} \]

其中,\(g^{(k)} \in \partial f(x^{(k)})\)

然而,\(-g^{(k)}\)可能不再是下降方向。所以常用的方式是一直保留最小的函數值,直到結果收斂。

\[f_{best}^{(k)} = \min \{ ( f_{best}^{(k)},f({x^{(k)}}) )\} \]

注:步長選擇和收斂性分析在這里不再贅述。(回頭有精力再寫)

應用(duality+subgradient method)

用法1

對於凸優化問題

\[\min f_0(z),s.t. f_i(z) \le x \]

對偶問題為

\[\max g(\lambda),s.t. \lambda \ge 0 \]

其中,\(g(\lambda)=\inf \limits_x L(x,\lambda)=f_0(x^ * (\lambda))+\sum \limits_{i=1}^{m} \lambda_i f_i(x^ * (\lambda))\)
假設Slater條件成立,那么我們可以通過解決對偶問題求得原問題的解。

那么,使用次梯度方法時,需要使得

\[\lambda^{(k+1)}=(\lambda^{(k)}-\alpha_k h),h \in \partial (-g)(\lambda^{(k)}) \]

也就是,

\[h=-(f_1(x^ * (\lambda)),\ldots,f_m(x^ * (\lambda))) \in \partial (-g)(\lambda^{(k)}) \]

用法2

對比原來的$ \nabla L(x,\lambda ^ * ) = 0 $
這里經常用的是 $0 \in \nabla L(x,\lambda ^ * ) $


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM