如何搞定機器學習中的拉格朗日?看看這個乘子法與KKT條件大招

2020-11-22 電子產品世界

  一 前置知識

本文引用地址:http://www.eepw.com.cn/article/201709/363864.htm

  拉格朗日乘子法是一種尋找多元函數在一組約束下的極值方法,通過引入拉格朗日乘子,可將有m個變量和n個約束條件的最優化問題轉化為具有m+n個變量的無約束優化問題。在介紹拉格朗日乘子法之前,先簡要的介紹一些前置知識,然後就拉格朗日乘子法談一下自己的理解。

  1.梯度

  梯度是一個與方向導數有關的概念,它是一個向量。在二元函數的情形,設函數f(x,y)在平面區域D內具有一階連續偏導,則對於每一點P(x0,y0)∈D,都可以定義出一個向量:fx(x0,y0)i+fy(x0,y0)j ,稱該向量為函數f(x,y)在點P(x0,y0)

  的梯度。並記作grad f(x0,y0) 或者∇f(x0,y0),即 grad f(x0,y0) = ∇f(x0,y0) = fx(x0,y0)i+fy(x0,y0)j=(fx(x0,y0),fy(x0,y0)) 。

  再來看看梯度和方向導數的關係:如果函數f(x,y)在P(x0,y0)點可微,el = (cosα,cosβ)是與方向L同向的單位向量,則∂f/∂L|(x0,y0) = fx(x0,y0)cosα+fy(x0,y0)cosβ = grad f(x0,y0).el = |grad f(x0,y0)|.cosθ ,其中θ表示的梯度與el 的夾角。由此可知,當θ = 0時,el 與梯度的方向相同時,此時方向導數最大,函數f(x,y)增長最快;當θ = π時,el 與梯度的方向相反時,此時方向導數最小且為負,函數f(x,y)減小最快。

  2.等高線(等值線)

  通常來說,二元函數 z = f(x,y)在幾何上表示一個曲面,這個曲面被平面 z = c(c為常數)所截得的曲線L的方程為:

  這是一條空間曲線,這條曲線L在xOy平面上的投影是一條平面曲線L*,它在xOy平面直角坐標系中的方程為:f(x,y) = c .對於曲線L*上的一切點,已給函數的函數值都是c,所以我們稱平面曲線L*為函數z = f(x,y)的等值線(等高線)。再來看看等高線的一些性質:

  若fx,fy不同時為零,則等高線 f(x,y) = c上任一點P(x0,y0)處的一個單位法向量為:

  這表明函數f(x,y)在一點(x0,y0)的梯度∇f(x0,y0)的方向就是等高線f(x,y) = c在這點的法向量的方向,而梯度的模|∇f(x0,y0)|就是沿這個法線方向的方向導數∂f/∂n,於是有:

  二 拉格朗日乘子法

  1.等式約束

  首先看一下什麼是拉格朗日乘子法,已知一個問題:

  要求f(x,y)在g(x,y)=c的前提下的最小值,我們可以構造一個函數L(λ,x,y) = f(x,y) + λ(g(x,y) - c),其中λ(λ不等於0)稱為拉格朗日乘子,而函數L(λ,x)稱為拉格朗日函數。通過拉格朗日函數對各個變量求導,令其為零,可以求得候選值集合,然後驗證求得最優值。這就是拉格朗日乘子法。那麼拉格朗日乘子法為什麼是合理的?下面分別從幾何和代數兩方面解釋下自己對其的一些見解:

  (1)從幾何的角度

  先來看一幅圖:

  圖中的虛線表示f(x,y)的等高線,如果滿足g(x,y)=c這個約束,必然是等高線與g(x,y)=c這條曲線的交點;假設g(x)與等高線相交,交點就是同時滿足等式約束條件和目標函數的可行域的值,但並不是最優值,因為相交意味著肯定還存在其它的等高線在該條等高線的內部或者外部,使得新的等高線與目標函數的交點的值更大或者更小,只有到等高線與目標函數的曲線相切的時候,才可能取得最優值。假設該切點為P(x0,y0),則f(x,y)在p點的梯度必然垂直於其在該點處的等值線(前面已經說過),即梯度與該點出的法向量平行,又由於p點是曲線g(x,y)=c的切點,可以看做g(x,y)=c在p點處的梯度平行於它在該點的等值線的法向量,故f(x)在p點的梯度與g(x,y)=c在p點的梯度共線(因為他們在p點處的法向量是共線的),即(fx(x0,y0),fy(x0,y0)) = λ*(gx(x0,y0),gy(x0,y0))。所以最優值必須滿足:∇f(x,y) = λ* ∇(g(x)-c),λ是常數且不等於0,表示左右兩邊平行。這個等式就是L(λ,x)對參數分別求偏導的結果,即: 

  也就是說滿足∇f(x,y) = λ* ∇(g(x)-c)的點必然是式子min L(λ,x) = f(x,y) + λ(g(x,y) - c)的解,所以min L(λ,x) = f(x,y) + λ(g(x,y) - c)這個式子與原問題是等價的(可以先簡單的認為g(x,y) - c = 0造成的)。

  (2)從代數的角度

  先來看一下z = f(x,y)在條件g(x,y) = c下取得極值的必要條件。

  如果z=f(x,y)在(x0.y0)處取得所求的極值,那麼有 g(x0,y0) = c,假定在(x0,y0)的某一領域內f(x,y)與g(x,y) = c均有一階段連續偏導(對於凸函數很顯然是成立的)並且gy(x0,y0)≠0.由隱函數的存在定理可知方程g(x,y)=c能夠確定一個連續且具有連續偏導的函數y = μ(x),將其帶入z= f(x,y)中可以得到一個變量x的函數:z = f[x,μ(x)].

  於是z=f(x,y)在x=x0處取得極值,相當於z = f[x,μ(x)]在x=x0處取得極值,又由一元可導函數取得極值的必要條件可知:

  而又由y = μ(x)用隱函數求導公式,有

  將以上兩式結合可得,

  上式與g(x0,y0)=c 就是函數z=f(x,y)在g(x,y)=c的條件下取得極值的必要條件。如果令:

  上述的必要條件就變為

  同從幾何角度推出的結論一致。

  綜上所述,對於問題

  (x可以為一個矢量,也可以為一個標量)

  等價於求

  對於拉格朗日乘子法求出的候選值,需要注意驗證;如果目標函數f(x)是凸函數的話則可以保證得到的解一定是最優解。

  三 KKT條件

  1.關於不等式約束

  上述問題中講述的都是約束條件為等式的情況,對於約束條件為不等式的情況,通常引入KKT條件(在不等式約束下,函數求極值的必要條件)來解決,具體如下:

  對於問題

  我們也引入拉格朗日函數

  其中μj≥0。

  再看一個關於x的函數:

  而實際上F(x)可以看做是f(x)的另一種表達形式;由於hi(x)=0,所以拉格朗日函數中的第二項為0;又由於gj(x) ≤ 0且μj ≥ 0,所以μjgj(X) ≤ 0,所以只有μjgj(X) = 0時L取到最大值;因此F(x)在滿足約束條件時就是f(x)。由此,目標函數可以表述為如下的形式: 

  我們稱這個式子為原問題。並定義原問題的最優值為P*。

  然後再看關於λ和μ的一個式子:

  考慮該式子的極大化:

  我們稱這個式子為原問題的對偶問題。並定義對偶問題的最優值為d*。

  (關於拉格朗日的對偶性,可參考李航《統計學習方法》中的附錄部分,或者參考博客:http://blog.pluskid.org/?p=702)

  關於對偶性問題,通常分為弱對偶性和強對偶性:

  (1)考慮到原問題和對偶問題的最優值P*和d*,如果d* ≤ P*,則稱「弱對偶性」成立。

  (2)如果d* = P*,則稱「強對偶性」成立。

  通常情況下,強對偶性並不成立;但是當原問題和對偶問題滿足以下條件時,則滿足強對偶性。

  (1)f(x)和gj(x)是凸函數。

  (2)hi(x)是仿射函數。

  (3)不等式約束gj(x)是嚴格可行的,即存在x,對所有j有gj(x) < 0 。

  以上三個條件也稱為Slater條件。如果滿足Slater條件,即原問題和對偶問題滿足強對偶性,則x*和λ*、μ*分別為原問題和對偶問題的最優解的充要條件是x0和λ0、μ0滿足下面的條件:

  以上五個條件就是所謂的Karush-Kuhn-Tucher(KKT)條件。下面是關於這幾個條件的簡單闡述:

  對於第一個條件,由於原問題和對偶問題滿足強對偶性,所以

  即關於x的函數:

  在x*處取到了極值,由費馬引理可知,該函數在x*處的偏導數為0,即:

  也就是條件(1)。該式子說明f(x)在極值點x*處的梯度是各個hi(x*)和gj(x*)的線性組合。

  對於第二個條件,時在定義拉格朗日函數時的約束條件。

  對於第三個條件,在定義F(x)時就已經體現了,由於:

  因為μjgj(x)≤0,要使得L最大,只有μjgj(x) = 0時滿足。所以產生了第三個條件。

  對於第四、五個條件,是原問題的自帶的約束條件。

  當原問題和對偶問題不滿足強對偶性時,KKT條件是使一組解成為最優解的必要條件,即在不等式約束下,函數求極值的必要條件。可以把KKT條件看成是拉格朗日乘子法的泛化。

相關焦點

  • 深入理解拉格朗日乘子法和KKT條件
    (Lagrange Multiplier) 和KKT條件是非常重要的兩個求取方法,對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值;如果含有不等式約束,可以應用KKT條件去求取。KKT條件是拉格朗日乘子法的泛化。之前學習的時候,只知道直接應用兩個方法,但是卻不知道為什麼拉格朗日乘子法(Lagrange Multiplier) 和KKT條件能夠起作用,為什麼要這樣去求取最優值呢?本文將首先把什麼是拉格朗日乘子法(Lagrange Multiplier) 和KKT條件敘述一下;然後開始分別談談為什麼要這樣求最優值。一.
  • 支持向量機(三):圖解KKT條件和拉格朗日乘子法
    前言支持向量機求解最優化參數的過程中需要用到拉格朗日乘子法和KKT條件,本文用清晰易懂的圖解法說明拉格朗日乘子法和
  • 拉格朗日乘子法與KTT條件
    帶約束的優化過程應用非常普遍,拉格朗日乘子法以及其推廣KTT條件是凸函數求解極值時中常用的方法。
  • 【直觀詳解】拉格朗日乘法和KKT條件
    【閱讀時間】8min - 10mun【內容簡介】直觀的解讀了什麼是拉格朗日乘子法,以及如何求解拉格朗日方程,並且給出幾個直觀的例子,針對不等式約束解讀了KKT條件的必要條件和充分條件拉格朗日乘法(Lagrange multiplier)是一種在最優化的問題中尋找多元函數在其變量受到一個或多個條件的相等約束時的求局部極值的方法。
  • 拉格朗日乘子法
    為了解決上一篇中SVM的優化問題,我們需要用到一些數學方法。這一篇先來介紹拉格朗日乘子法。 問題由來 在對函數優化時,如果沒有限制條件,一般直接對其求導,然後令導數為0,即可求解出極值點。但在更多的情況下,是有一些約束條件的。
  • 通俗易懂 | SVM之拉格朗日乘子法
    在SVM中,將約束問題轉化成非約束問題採用到了拉格朗日乘子法。這個文章就講一下拉格朗日乘子法與KKT約束是怎麼回事。本人不是數學科班出身,但是也只能硬著頭皮講一講了。所以我們匯總一下所有的已知信息,得到下面的方程組:可以求解得到:這個就是拉格朗日乘子法的直觀理解
  • 拉格朗日乘數法介紹
    拉格朗日乘數法的基本思想  作為一種優化算法,拉格朗日乘子法主要用於解決約束優化問題,它的基本思想就是通過引入拉格朗日乘子來將含有n個變量和k個約束條件的約束優化問題轉化為含有(n+k)個變量的無約束優化問題。拉格朗日乘子背後的數學意義是其為約束方程梯度線性組合中每個向量的係數。
  • 直觀理解KKT條件
    本文不對數學公式進行詳細推導,而是從直觀上對KKT條件進行理解。當然KKT條件與拉格朗日乘子是相關聯的,看完本文後,可以參閱相關資料。無約束優化問題的極值(函數的最大值/最小值)通常發生在斜率為零的點上。
  • 資料| 機器學習中的數學
    以下書籍介紹來自豆瓣內容簡介 · · · · · ·《機器學習中的數學》是一本系統介紹機器學習中涉及的數學知識的入門圖書,本書從機器學習中的數學入門開始,以展示數學的友好性為原則,講述了機器學習中的一些常見的數學知識
  • 拉格朗日點和拉格朗日乘子法
    拉格朗日點指受兩大物體引力作用下,能使小物體穩定的點。一個小物體在兩個大物體的引力作用下在空間中的一點,在該點處,小物體相對於兩大物體基本保持靜止。在每個由兩大天體構成的系統中,按推論有5個拉格朗日點,但只有兩個是穩定的,即小物體在該點處即使受外界引力的攝擾,仍然有保持在原來位置處的傾向,每個穩定點同兩大物體所在的點構成一個等邊三角。
  • 如何快速入門機器學習?(下)
    首先,打比賽是我們從理論通往實踐的重要一步,比賽的數據相對工作後的數據來說會幹淨很多,在從理論過渡到實際工作的過程中有很大的幫助。其次,「沒有免費的午餐」,即沒有算法能完美的解決所有的問題。通過打比賽,我們可以加深對算法的理解,熟悉算法的擅長領域。最後,打比賽的時候,我們還會學到機器學習中一個非常重要的領域——特徵工程。
  • 不等式專題之二元條件最值中的拉格朗日乘數法
    在均值不等式專題中有一類求最值的題目,題目給出了關於x,y的一個二元等式,讓求一個關於x,y式子的最值,此類問題的解法在高中階段一般有兩種做法,一種是利用等式關係,將目標式子轉化為求一元最值,另一種是根據所求式子,並對其變形,結合條件最後轉化為關於x,y的基本等式,第一種方法很直接
  • 拉格朗日乘數法
    拉格朗日乘數法 在數學最優問題中,拉格朗日乘數法(以數學家約瑟夫·路易斯·拉格朗日命名)是一種尋找變量受一個或多個條件所限制的多元函數的極值的方法。這種方法將一個有n 個變量與k 個約束條件的最優化問題轉換為一個有n + k個變量的方程組的極值問題,其變量不受任何約束。
  • 求最優化方法:拉格朗日乘數法 圖解高等數學-下 15
    11.8 Lagrange 乘子如果是求定義域內約束在某個區域內函數的極值, 可以用本次講述的 Lagrange乘子法.約束最大值和最小值觀察下面函數 f(x,y)=49-x^2y^2 受約束 g(x,y)=x+3y-10=0 的圖形.
  • 一挑三 FJ vs KKT
    KKT是3個人的姓的首字母, 分別是Karush, Kuhn和Tucker, 最早是有Kuhn和Tucker在1951年總結發表的, 但是後來人們發現Karush在1939年碩士論文中就發現了這個必要條件(necessary conditions)。 碩士就能做出這樣的成就也是非常不容易!
  • 變分法——歐拉-拉格朗日方程
    簡單的說,泛函的定義域是函數集,值域是數集,也就是說,泛函是從函數空間到數域的一個映射泛函種類很多,我們這裡討論一個經典泛函:我們來看看當如果這個泛函在Y(x)=y(x)處取極值時,需要滿足什麼條件先來描述一下基礎條件:然後通過鏈式法則表示出ds/dα:
  • 拉格朗日插值定理的理論基礎
    常用的方法有:上圖表中的均值、中位數、眾數、固定值什麼的都比較好理解,看上去比較高大上的一個是回歸方法,另一個就是插值法。回歸方法,我們後面另外起文討論。插值法裡面常用的就是拉格朗日插值、牛頓插值兩類,我們重點看看拉格朗日插值法。拉格朗日插值,是一種多項式插值,那多項式插值定理怎麼一回事呢?
  • 機器學習的本質:理解泛化的新觀點
    事實上,我們知道這樣的想像不具備任何預測能力,如果天空中出現第四顆星,我們一定就不能確定它是否在該在的位置上。 過擬合的反面, 就是泛化, 應該說,它就是學習的本質。 否則, 整個機器學習就是一門擬合而已, 深度學習就是比較複雜的擬合。學習的最高境界,是在紛繁的現象裡總結出簡單的定理,比如看到大量物體運動的軌跡,總結出牛頓定律: F=ma .