1. 程式人生 > >深入理解機器學習中拉格朗日乘子和KKT條件

深入理解機器學習中拉格朗日乘子和KKT條件

1.引言

本篇部落格主要總結了拉格朗日乘子和KTT條件在機器學習中求解最優值的原理,博主儘量舉點小例子幫助大家一起共同學習。

2.拉格朗日和KKT作用

我們在求解問題時,經常會遇到一些在約束條件下求解函式的。
在有等式約束條件下,我們選用拉格朗日乘子;
在有不等式約束條件下,選用KKT方法求解最優解。
因此我們可以將KKT條件看成是拉格朗日乘子的泛化。

3.求解最優問題的集中形式

通常我們需要求解的最優化問題有如下幾類:

  • 無約束條件下求最優值
    minf(x,y)
  • 在等式條件下求解最優值
    minf(x,y)
    s.t...g(x,y)=c
  • 在不等式條件下求解最優值
    m
    inf(x,y)

    s.tg(x)<=0,h(x)<=0

4.求解不同最優問題方法

4.1無約束條件下的最優值求解

無約束條件下的函式f(x,y)求解最大或者最小值,一般求該函式對各個引數的偏導數,令偏導數為0,求解得到的x0,y0即為在該條件下可以使函式f(x,y)最優。

αf(x,y)/αx=0
αf(x,y)/αy=0
這樣求解的首先需要保證函式f(x,y)為凸函式。

4.2 等式條件下的最優值求解(拉格朗日乘子)

假設我們需要求解的函式為f(x,y)的最優值,同時需要滿足條件 g(x,y)=c,因此問題就轉化為,在 g(x,y)=c條件下,求解函式f(x,y)

的最優值。函式f(x,y)=d在x,y平面上面具有一些等高線,如下圖所示
這裡寫圖片描述
g(x,y)=c是一條紅色的曲線,那麼我們在什麼樣的情況下可以求出他的最優值呢,我們發現函式g(x,y)=c會與f(x,y)=d相交,那麼交點是不是最優值呢,我們以前知識學過,兩個函式的交點說明,是兩個函式共同的可行解。那最優點怎樣求取呢,我們可以更改d的大小,我們得到一系列的等高線。紅色曲線與函式f(x,y)=d的交點就是最優解。
而拉格朗日乘子就是解決這樣問題的,通過引入一個λ約束條件g(x,y)=c組合得到一個新的函式,這個新函式與目標函式f(x,y),得到最終需要優化函式。

L(x,y,λ)=f(
x,y)+λ[g(x,y)c]

接下來就是求解函式L(x,y,λ)對各個引數的偏導數,並令各個偏導數為0,聯立可以求出三個引數x,y,λ,代入原式,可以求解最優解。
αL(x,y,λ)/αx=0
αL(x,y,λ)/αy=0
αL(x,y,λ)/αλ=0

接下來舉一個小例子
f(x,y)=x2y,g(x,y)=x2+y21
則可以得到

L(x,y,λ)=f(x,y)+λg(x,y)=x2y+λ(x2+y21)
對各個引數求解偏導數得到
2xy+2λx=0
x2+2λy=0
x2+y21=0

4.3不等式條件下求解最優解(KKT條件)

對KTT條件的講解主要採用作者(xianlingmao),對作者表示感謝
對於含有不等式約束的優化問題,如何求取最優值呢?常用的方法是KKT條件,同樣地,把所有的不等式約束、等式約束和目標函式全部寫為一個式子L(a,b,x)=f(x)+ag(x)+bh(x),KKT條件是說最優值必須滿足以下條件:

  • L(a, b, x)對x求導為零;
  • h(x) =0;
  • a*g(x) = 0;

求取這三個等式之後就能得到候選最優值。其中第三個式子非常有趣,因為g(x)<=0,如果要滿足這個等式,必須