存在即有理---拉格朗日乘子法(Lagrange Multiplier Method)

拉格朗日乘子法是爲了解決有約束的優化(最大最小化)問題。html

網上不少博客論壇將KKT條件與不等式優化的乘子法混淆了,而且有不少對於這個概念混沌的地方。我就寫一篇梳理一遍思路。git

已知一個問題的目標與參數的關係是y=x^2,那麼咱們很容易知道當x=0時,最優的目標y=min \ x^2=0.可是若是咱們給這個優化過程添加一條約束:x-1 \geq 0,也就是x必須知足這一約束的狀況下,求解原函數的最小值。則這個問題就得換種思路解決。咱們在此時咱們便引入了拉格朗日乘子法(Lagrange Multiplier Method),有的地方也叫拉格朗日乘數法github

先來看一個最簡單的例子

單個等式約束條件下的拉格朗日乘子法,這種狀況下最簡單,咱們必定要注意計算過程,不眼高手低,我舉一個完整的例子該你們看:機器學習

\max_{x,y} \; f(x,y)=x^2y \quad
s.t. \quad g(x,y): \ x^2+y^2-3 = 0

單約束問題示意圖

咱們設拉格朗日乘子爲\lambda,則有以下拉格朗日函數:函數

L(x,y,\lambda)=x^2y-\lambda(x^2+y^2-3)

接下來對x,y,\lambda三個變量分別求偏微分:post

\nabla_{x,y,\lambda}L(x,y,\lambda)=\left( \frac{\partial L}{\partial x},\frac{\partial L}{\partial y},\frac{\partial L}{\partial \lambda}  \right)
=(2xy+2 \lambda x,x^2+2 \lambda y,x^2+y^2-3)

令偏微分都爲0,則有:學習

\nabla_{x,y,\lambda}L(x,y,\lambda)=0  \;  \iff \begin{cases} 2xy+2\lambda x =0, \quad (i) \\ 
x^2+2 \lambda y=0, \quad (ii) \\
x^2+y^2-3=0, \quad (iii)
\end{cases}

解出L優化

(\pm \sqrt 2,1,-1);(\pm \sqrt 2,-1;1);(0, \pm \sqrt 3,0)

代入f(x,y)中解得最終f(x,y)幾種可能的值分別爲2,-2,0,則此爲最大最小值的集合,可知\max_{x,y} \; f(x,y) =2,上圖已經徹底解釋了我這一串計算過程。cdn

再看看不等式約束與KKT條件

狀況會稍微複雜一點。對於不等式約束,只要知足必定的條件,依然可使用拉格朗日乘子法解決,這裏的條件即是KKT條件(Karush–Kuhn–Tucker conditions)。KKT條件是以人名命名的,因此沒必要關注其命名的背後含義。我看不少論壇博客上寫的等式約束使用拉格朗日乘子法,不等式約束使用KKT條件法,這是不嚴謹的。KKT條件只是一個條件而已,並非一種方法。等式和不等式約束優化問題所採用的方法都是拉格朗日乘子法。htm

咱們看這樣一個不等式約束的問題:

\min_x \;f(x) \qquad s.t. \; g(x)\leq0

其對應的拉格朗日函數以下所示:

L(x,\lambda)=f(x)+ \lambda g(x)

這時可行解必須落在約束區域之內,下圖給了目標函數的等高線以及約束:

這裏紅色的區域表明的是不等式的區域,藍色表明的原函數的等高線,這裏咱們能夠將其想象成一個碗狀的三維圖形。值得一提的是,咱們這裏暫時只針對凸函數問題,因此咱們能夠看到這個藍色圓心即是最優解。

那麼如今咱們只會有兩種狀況了:一種是原函數的最優解就已經在約束範圍內;另外一種是原函數的最優解在約束範圍邊界上或者以外。咱們來看下面兩圖:

咱們看第一個圖就表明了第一種狀況,藍色圓心在紅色圓內。這樣約束條件沒有起到約束做用,約束以後的最優解仍是原來的最優解。對於第二個圖,咱們看到藍色圓心在紅色區域以外。固然這也包括了恰好在紅色邊界上的狀況。爲何這兩種狀況歸爲一類呢?咱們接着看:咱們必需要知足約束條件,也就是咱們必需要在紅色範圍內找到一個最優解。即便這個最優解並非原函數最優的。因爲原函數是一個凸函數,因此是平滑單個極值。那麼理論上說,咱們在極值往外任意方向上,都是離極值越近,那個值就越優。因此咱們即可知,這個最優值會在約束的邊界上。也就是g(x)=0的時候。這時候就又變成了等式約束了。

以上兩種狀況就是說,要麼可行解落在約束邊界上即得g(x)=0,要麼可行解落在約束區域內部,此時約束不起做用,令 \lambda = 0 消去約束便可,因此不管哪一種狀況都會獲得:

λg(x)=0

而在這種狀況下,咱們的不等式約束是和等式約束同解的。這種狀況,就是咱們所說的KKT條件下。因此咱們總結出此問題的KKT條件:

\begin{cases} 
\nabla_x L(x,\lambda) =0, \quad (I) \\ 
λg(x)=0, \quad (II) \\
g(x) \leq 0, \quad (III)  \\
\lambda \geq0, \quad (IV) \\ 
\end{cases}

總結:KKT是咱們將不等式約束直接化成等式約束的必要條件,也是這個不等式約束的必要條件。在凸函數優化問題中,升級爲充要條件。通常的,KKT條件很容易知足,咱們論證一下就可使用乘子法解決問題。在拉格朗日對偶中,KKT條件也是十分重要的條件,判斷原問題與對偶問題是否有一致解。這個在《拉格朗日對偶》裏面細說。

上式須要知足的要求是拉格朗日乘子\lambda\geq0,這個問題能夠舉一個形象的例子,假設你去登山,目標是山頂,但有一個障礙擋住了通向山頂的路,因此只能沿着障礙爬到儘量靠近山頂的位置,而後望着山頂嘆嘆氣,這裏山頂即是目標函數的可行解,障礙即是約束函數的邊界,此時的梯度方向必定是指向山頂的,與障礙的梯度同向,下圖描述了這種狀況 :

固然更通常的問題:

\min_{x\in R^n}\ f(x)
s.t. \quad c_{i}(x)\leq0 \ ,\quad i=1,2,...,k
\quad \qquad h_{j}(x)=0 \ ,\quad j=1,2,...,l

咱們有更爲完整的KKT條件:

\begin{cases} 
\nabla_x L(x,\alpha_i,\beta_i) =0, \qquad \qquad \quad (1) \\ 
\alpha_i c_i(x) = 0, \quad i=1,2,...,k \quad(2) \\
h_j(x) = 0, \qquad  j=1,2,...,l \quad  (3)  \\
c_i(x) \leq0, \quad  i=1,2,...,k \qquad(4) \\ 
\alpha_i \geq0, \quad \quad \  i=1,2,...,k \qquad(5) \\ 
\end{cases}

知足 KKT 條件後極小化 Lagrangian 便可獲得在不等式約束條件下的可行解。 KKT 條件看起來不少,其實很好理解:

  1. 拉格朗日取得可行解的必要條件;
  2. 這就是以上分析的一個比較有意思的約束,稱做鬆弛互補條件;
  3. 初始的約束條件;
  4. 初始的約束條件;
  5. 不等式約束的 Lagrange Multiplier需知足的條件。

主要的KKT條件即是 (3) 和 (5) ,只要知足這倆個條件即可直接用拉格朗日乘子法, SVM 中的支持向量即是來自於此,須要注意的是 KKT 條件與對偶問題也有很大的聯繫

拉格朗日乘子法是怎麼想出來的

拉格朗日乘子法的思路是:給予違反約束適當的懲罰,使得無約束的拉格朗日函數的解與原優化函數的解一致。拉格朗日乘子法的策略是將有約束的問題轉化成無約束的優化問題

考慮多個約束條件的原始最優化問題:

\min_{x\in R^n}\ f(x)
s.t. \quad c_{i}(x)\leq0 \ ,\quad i=1,2,...,k
\quad \qquad h_{j}(x)=0 \ ,\quad j=1,2,...,l

咱們對這種多維約束條件,有以下拉格朗日函數:

L(x,\alpha,\beta)=f(x)+ \sum_{i=1}^k \alpha_{i} c_{i}(x)+\sum_{j=1}^l\beta_{j}h_{j}(x)

假設給定某個x,若是x違反原始問題的約束條件,即存在某個i使得c_{i}(w)>0或者存在某個j使得h_{j}(w) \neq0,那麼就有

\max_{\alpha,\beta:\alpha_{i} \geq0} \left[ f(x)+\sum_{i=1}^k \alpha_{i}c_{i}(x)+ \sum_{j=1}^l\beta_{j}h_{j}(x)  \right]=\infty

由於若某個i使約束c_{i}>0,則可令\alpha_{i} \rightarrow+ \infty,若某個j使得約束h_{j}(x) \neq0,則令\beta_{j}使得\beta_{j}h_{j}(x) \rightarrow +\infty,而將其他的\alpha_{i},\beta_{j}均取爲0。這樣使得不知足約束條件的都取成\infty,而相反的,知足約束條件的咱們讓\alpha,\beta置0,使得拉格朗日函數與原函數解相同。

以上陳述詳細的說明了拉格朗日乘子法的思想。

固然,除了拉格朗日乘子法,還有其餘思路去求解這個約束的最優化問題的。能夠,咱們能夠不像拉格朗日同樣給以違反以懲罰,從側面解出,而是順着約束條件去找這個最優值。可是咱們的現實問題很是複雜,有時候連有沒有最有值或者最優值可不可行都沒法得知,這類方法也就不適用了。

因此:

存在即有理。有啥理? 答曰:解決這一類問題的已知最有效方法。


手推對偶中的KKT條件已經移至《拉格朗日對偶》,有興趣的朋友能夠過去看看。

參考文獻:

[1].《統計學習方法》 李航 2012年3月第1版

[2].約束優化方法之拉格朗日乘子法與KKT條件

[3].【直觀詳解】拉格朗日乘法和KKT條件

[4].拉格朗日乘子法和KKT條件

[5].《機器學習》 周志華 2016年1月第1版

相關文章
相關標籤/搜索