【机器学习】次梯度(subgradient)方法
次梯度方法(subgradient method)是傳統的梯度下降方法的拓展,用來處理不可導的凸函數。它的優勢是比傳統方法處理問題范圍大,劣勢是算法收斂速度慢。但是,由于它對不可導函數有很好的處理方法,所以學習它還是很有必要的。
次導數
設f:I→R是一個實變量凸函數,定義在實數軸上的開區間內。這種函數不一定是處處可導的,例如最經典的例子就是,在處不可導。但是,從下圖的可以看出,對于定義域內的任何,我們總可以作出一條直線,它通過點,并且要么接觸f的圖像,要么在它的下方。這條直線的斜率稱為函數的次導數。
次導數與次微分(subdifferential)計算方式
凸函數f:I→R在點x0的次導數,是實數c使得:?
原導數計算公式為:
對該定義略作解釋:
按照上面次導數對定義方式,次導數c應滿足條件:
對于函數而言,只有在處不可導,即我們考慮在處的次導數:
很容易就可以得出:
接下來給出正宗的計算定義:
對于所有I內的x。我們可以證明,在點x0的次導數的集合是一個非空閉區間[a, b],其中a和b是單側極限?
它們一定存在,且滿足a ≤ b。?
所有次導數的集合稱為函數f在的次微分。
例如:考慮凸函數。在原點的次微分是區間[?1, 1]。時,次微分是單元素集合{-1},而,則是單元素集合{1}。
次導數與次微分的一些性質
次梯度(subgradient)
到這里,我們總算是搞清楚次導數和次微分是什么東西了。
將次導數和次微分的概念推廣到多元函數,就可以得到次梯度了。如果f:U→ R是一個實變量凸函數,定義在歐幾里得空間內的凸集,則該空間內的向量v稱為函數在點的次梯度,如果對于所有U內的x,都有:?
所有次梯度的集合稱為次微分,記為。次微分總是非空的凸緊集。
此記法與前面的次導數記法極為相似。我們用更為常見的記法來定義次梯度:
次梯度(Subgradient)與梯度的概念類似,凸函數的First-order characterization(一階特征描述)是指如果函數f可微,那么當且僅當為凸集,且對于,使得,則函數為凸函數。這里所說的次梯度是指在函數上的點滿足以下條件的:
其中,函數不一定要是凸函數,非凸函數也可以,即對于凸函數或者非凸函數而言,滿足上述條件的均為函數在該點的次梯度。但是,凸函數總是存在次梯度(可以利用epigraph和支撐平面理論證明),而非凸函數則不一定存在次梯度,即使可微。這里主要包含兩層意思:1.用次梯度對原函數做出的泰勒一階展開估計總是比真實值要小;2.次梯度可能不唯一。
很明顯,凸函數的次梯度一定存在,如果函數在點處可微,那么,為函數在該點的梯度,且唯一;如果不可微,則次梯度不一定唯一。但是對于非凸函數,次梯度則不一定存在,也不一定唯一。例如,凸函數范數為凸函數,但不滿足處處可微的條件,因此,函數的次梯度不一定唯一,如下圖:
左一圖為,函數在時,次梯度唯一,且;當時,次梯度為中的任意一個元素;
左二圖為,函數在時,次梯度唯一,且;當時,次梯度為中的任意一個元素;
同樣,絕對值函數和最大值函數在不可微點處次梯度也不一定唯一,如下圖:
對于最大值函數而言,其在滿足的點處,次梯度為任意一條直線在向量和之間。
同理,我們還可以給出在高維情形下次微分(subdifferential)的定義,即:
-
次微分是閉合且為凸集;
-
如果函數在點處可微,那么次微分等于梯度;
-
凸函數的次微分不為空,但非凸函數則不一定。
次梯度的性質
-
Scalingf(數乘不變性):;
-
Addition(加法不變性):;
-
Affine composition(仿射特性):如果,那么;
-
Finite pointwise maximum(有限最大值):如果,那么,意味著函數的次微分等于所有能取得最大值的函數在點處的微分,具體實例可參考之前提到的最大值函數部分。
為什么要計算次梯度?
在開頭已經粗略的闡述了次梯度方法的使用情景,在這里在詳細的復述一遍。
對于光滑的凸函數而言,我們可以直接采用梯度下降算法求解函數的極值,但是當函數不處處光滑、處處可微的時候,梯度下降就不適合應用了。因此,我們需要計算函數的次梯度。對于次梯度而言,其沒有要求函數是否光滑,是否是凸函數,限定條件很少,所以適用范圍更廣。
次梯度具有以下優化條件(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,如果固定步長為,那么次梯度算法滿足:
?
lipschitz條件:
對于在實數集的子集的函數??,若存在常數,使得??,則稱??符合利普希茨條件,對于??最小的常數?稱為??的利普希茨常數。若??,??稱為收縮映射。
在高維情形下:
證明:
對于,,其中。因此,我們可以展開下式為:
因為,,且由凸函數一階性質可得,上式不等式可以寫為:
對于任意,求和上式可以獲得:
因為,,所以:
如果令為迭代次內的最優解,那么,其中,,因此:
?
所以,我們可以得到
同時,因為函數滿足Lipschitz continuous with G,所以,,即函數的次梯度。
綜上所述,我們可以證明下式成立:
其中為初值與最優點之間的二范數距離。
當,既證上述定理成立。
此時,如果我們想要獲得-最優解,則令,令等式的每一部分等于,則。
因此,次梯度的收斂速度為,跟梯度下降算法收斂速度相比,要慢許多。
下面是次梯度法的一般方法:
次梯度方法性質:
對于不同步長的序列的收斂結果
不妨設是次迭代中的最優結果。
1).步長和不可消時(Non-summable diminishing step size):
并且這種情況能夠收斂到最優解:
2).Constant step size:?
,收斂到次優解:
3).Constant step length:?
,能夠收斂到次優解
4).Polyak’s rule:
,若是最優值可知則可以用這種方法。
次梯度算法實例
A. Regularized Logistic Regression
對于邏輯回歸的代價函數可記為:
明顯,上式是光滑且凸的,而regularized problem則是指優化目標函數為:
如果,則成為嶺回歸(ridge problem),如果則稱為Lasso回歸。對于嶺回歸,我們仍然可以采用梯度下降算法求解目標函數,因為函數處處可導光滑,而Lasso問題則無法用梯度下降算法求解,因為函數不是處處光滑,具體可參考上面給出的Norm-1的定義,所以,對于Lasso問題需要選用次梯度算法求解。
下圖是對于同樣數據集下分別對邏輯回歸選用嶺懲罰和Lasso懲罰求解最優解的實驗結果圖(n=1000,p=20n=1000,p=20):
B. 隨機次梯度算法
上面講到的次梯度算法梯度更新定義為:
隨機次梯度算法(Stochastic Subgradient Method)與次梯度算法(Subgradient Method)相比,每次更新次梯度是根據某一個樣本計算獲得,而不是通過所有樣本更新次梯度,其定義為:
其中,是第次迭代隨機選取的樣本。從該方法的定義,我們也可引出隨機梯度下降算法(Stochastic Gradient Descent)的定義,即當函數可微連續時,。
所以,根據梯度更新的方式不同,次梯度算法和梯度下降算法一般被稱為“batch method”。從計算量來講,次隨機更新近似等于一次batch更新,二者差別在于,當變化不大時,差別可以近似等于0。
對于隨機更新次梯度,一般隨機的方式有兩種:
- Cyclic rule:選擇;
- Randomized rule:均勻隨機從選取一點作為。
與所有優化算法一樣,隨機次梯度算法能否收斂?
答案是肯定的,這里就不在做證明,有興趣的同學可以參考boyd教授的論文,這里僅給出收斂結果,如下:
對于Cyclic rule,隨機次梯度算法的收斂速度為;對于Randomized rule,隨機次梯度算法的收斂速度為。
下圖給出梯度下降和隨機梯度下降算法在同一數據下迭代結果:
隨機梯度下降一般有兩個特性:
?
參考文章:
凸優化-次梯度算法
優化中的subgradient方法
次導數 次梯度 小結
次梯度(Subgradient)
次梯度
總結
以上是生活随笔為你收集整理的【机器学习】次梯度(subgradient)方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】Lasso回归(L1正则,M
- 下一篇: 【机器学习】坐标下降法(Coordina