通俗易懂 | 拉格朗日乘子法

在SVM中,將約束問題轉化成非約束問題採用到了拉格朗日乘子法。這個文章就講一下拉格朗日乘子法與KKT約束是怎麼回事。本人不是數學科班出身,可是也只能硬着頭皮講一講了。函數

從零理解

如今咱們要解決這樣一個問題:
\(x^2y=3\)
這個函數距離原點最近的距離是多少。spa

先畫出函數圖像:
3d

而後想求出最短距離:
blog

這裏的思路就是,作一個以原點爲中心的圓形:
數學

不斷擴大圓形的半徑,直到圓與藍色的曲線相切:
class

如今。第一次與\(x^2y=3\)相交的點就是距離原點最近的那個點:
lambda

這個,圓形與曲線相切,且切線既是圓形的切線,也是曲線的相切。
im

這時候,這個切線的垂線其實也就是咱們所說的梯度,也叫作等高線的法線,看下面兩個圖可能會好理解一些:

d3

那麼這個梯度怎麼計算呢?先看圓形\(f(x,y)=x^2+y^2\)的梯度:
英文

再看曲線的梯度計算\(g(x,y)=x^2y\)的梯度:

在相切的時候,二者的梯度方向都在同一條直線上,能夠稱之爲,成比例,這裏用比例係數\(\lambda\)來表示:

因此咱們彙總一下全部的已知信息,獲得下面的方程組:

能夠求解獲得:

這個就是拉格朗日乘子法的直觀理解。

抽象成數學的形式

咱們要解決的問題:
\(\min {x^2+y^2}\)
\(s.t. x^2y=3\)

咱們會將約束問題經過拉格朗日乘子法轉換成非約束問題:
\(\min F(x,y)={x^2+y^2+\lambda(x^2y-3)}\)

【爲何能夠這樣呢?】
若是求極值,偏導數爲0。先對上面的公式進行求偏導數:
\(\frac{\partial F(x,y)}{\partial x}=2x+\lambda 2xy=0\)
\(\frac{\partial F(x,y)}{\partial y}=2y+\lambda x^2=0\)

這兩個等式與這個等價,惟一的不一樣就是\(\lambda\)一個是正數一個是負數:

固然,對於\(x^2y-3=0\)這個條件,咱們也能夠寫成\(\frac{\partial F(x,y,\lambda)}{\partial \lambda}\),因此,能夠獲得這樣的一個方程組:

KKT條件

  • KKT的英文全稱:Karush-Kuhn-Tucker

以前的拉格朗日的約束條件是等值的,如今能夠經過KKT條件推廣到不等式。由於限制條件每每是不大於,小於這樣的不等式,因此KKT纔是拉格朗日化約束問題爲非約束問題的關鍵。

對於不等式問題,就是有兩種狀況:

  • 可行解在g(x)<0;
  • 可行解在g(x)=0。

可行解在g(x)<0,就表示這個約束條件並無起到約束效果,有根沒有事一個效果(下圖中的左圖);可行解g(x)=0,就表示這個約束條件起到做用了,這就表示g(x)與f(x)相切,也就是下圖中右邊的圖。

【g(x)<0的狀況】
這種狀況下,就是沒有限制條件下的狀況,其實就是沒有約束條件的限制,也就是\(\lambda=0\)的狀況,因此咱們的等式就是直接求解:
\(\Delta f(x)=0\)

【g(x)=0的狀況】
若是是g(x)=0的狀況,那也就是約束條件起到做用了,也就意味着\(\lambda>0\)。在這種狀況下,存在着:
\(\Delta f(x) = -\lambda \Delta g(x)\)
而且兩個函數的擴張的方向相反,因此代表兩個g(x)和f(x)的梯度一個是正數,一個是負數。因此這個表示\(\lambda>0\)

因此綜上所述,在這種狀況下,咱們全部的條件綜合起來能夠獲得,其中\(x^\*\)就是最優解:

  • \(\lambda >=0\)
  • \(\lambda g(x^*)=0\)
  • $ g(x^*) <= 0$

這三個就是KKT條件。



相關文章
相關標籤/搜索