1. 程式人生 > >機器學習最優化方法[3]--約束優化

機器學習最優化方法[3]--約束優化

文章目錄


考慮一個優化問題: min x f ( x ) \min_{x}f(x)
, 我們一般對 x x 求導,導數為0的點即為極值點。當遇到導數不好求出的時候,我們一般用梯度下降法或者牛頓法等迭代的方法。這些都是沒有約束的最優化解法,當我們對自變數有一定約束的時候應該如何求解是本文要討論的問題。

1、等式約束

求解如下有等式約束的最小化問題: min

x f ( x ) \min_xf(x) s
. t . h ( x ) = 0 s.t. \quad h(x)=0

在這裡插入圖片描述
假設 x x 是二維空間向量,那麼 y = f ( x ) y=f(x) 是三維空間中的一個曲面。如圖所示,藍色曲線為等高線,紅色部分是約束 h ( x ) = 0 h(x)=0 。滿足 f ( x ) f(x) 最小的 x x 的值必須在紅色曲線上,所以 x x 要麼是等高線與 h ( x ) = 0 h(x)=0 的交點,要麼是切點。但是交點是不可能的,因為如果是交點,則一定還有另一條等高線與之相交併等到更接近最小值的 x x , 因此最接近最小值的 x x 一定是兩條曲線的切點,即在這個點兩條曲線有相同的切線,因此法向量方向相同,可以得出:
f ( x ) = λ h ( x ) , λ 0 \nabla f(x)=\lambda \nabla h(x), \lambda \geq0
我們也可以寫為:
f ( x ) + α h ( x ) = 0 \nabla f(x)+\alpha \nabla h(x)=0
加上我們的約束條件: h ( x ) = 0 h(x)=0 , 我們只需要解如下方程組即可得到 x x 的解:
{ f ( x ) + α h ( x ) = 0 h ( x ) = 0 \begin{cases} \nabla f(x)+\alpha \nabla h(x)=0\\ h(x)=0\\ \end{cases}
再回到原問題,我們可以建構函式:
L ( x , α ) = f ( x ) + α h ( x ) L(x,\alpha)=f(x)+\alpha h(x)
分別對 x x α \alpha 求偏導數,並令偏導數為0:
{ x L ( x , α ) = 0 α L ( x , α ) = 0 { f ( x ) + α h ( x ) = 0 h ( x ) = 0 \begin{cases} \nabla_x L(x,\alpha)=0\\ \nabla_{\alpha} L(x,\alpha)=0\\ \end{cases} \Rightarrow \begin{cases} \nabla f(x)+\alpha \nabla h(x)=0\\ h(x)=0\\ \end{cases}
跟我們前面推導的方程組完全相同,該方法就是拉格朗日乘子法, L ( x , α ) L(x,\alpha) 被稱為拉格朗日函式。
當存在多個等式約束的時候,記為 h i ( x ) = 0 , i = 0 , 1 , . . . , m h_i(x)=0, i=0,1,..., m ,同樣的我們構造拉格朗日函式:
L ( x , α ) = f ( x ) + i = 0 m α i h i ( x ) L(x,\alpha)=f(x)+\sum_{i=0}^{m}\alpha_i h_i(x)
然後分別對 x x α i , i = 0 , 1 , . . . , m \alpha_i, i=0,1,...,m 求偏導數,令偏導數為0求解方程組即可。

2、不等式約束

加上不等式約束之後,我們的問題變為: min x f ( x ) \min_xf(x) s . t . g ( x ) 0 s.t. \quad g(x)\leq0
當然任何大於 0 \geq 0 的約束我們都可以轉化為 0 \leq 0 的約束,這裡我們統一用 g ( x ) 0 g(x)\leq0 作為不等式約束。
對於不等式約束, x x 的可行解有兩種情況:
(1) f ( x ) f(x) 本身的極值點落在約束範圍之內,如下圖,此時約束不起任何作用,我們直接用梯度下降法求解 f ( x ) f(x) 的極值即可。
在這裡插入圖片描述
(2) f ( x ) f(x) 本身的極值點在約束範圍之外,如下圖所示,此時在此約束條件下的極值點一定落在約束邊界 g ( x ) = 0 g(x)=0 上,而此時的極值點等同於等式約束下的極值點,可以用拉格朗日乘子法求出。

在這裡插入圖片描述

現在我們討論在等式約束和不等式約束同時存在的情況,最優化問題變為:
min x f ( x ) \min_xf(x) s . t . h i ( x ) = 0 , i = 0 , 1 , . . . , m s.t. \quad h_i(x)=0, i=0,1,...,m g j ( x ) 0 , i = 0 , 1 , .