機器學習中的數學 拉格朗日乘子法

2022-09-16 06:24:08 字數 1265 閱讀 4966

拉格朗日乘子法:應用在求有約束條件的函式的極值問題上。

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

(i) 無約束優化問題,可以寫為:

min f(x);  

(ii) 有等式約束的優化問題,可以寫為:

min f(x), 

s.t. h_i(x) = 0; i =1, ..., n 

(iii) 有不等式約束的優化問題,可以寫為:

min f(x), 

s.t. g_i(x) <= 0; i =1, ..., n

h_j(x) = 0; j =1, ..., m

對於第(i)類的優化問題,常常使用的方法就是fermat定理,即使用求取f(x)的導數,然後令其為零,可以求得候選最優值,再在這些候選值中驗證;如果是凸函式,可以保證是最優解。

對於第(ii)類的優化問題,常常使用的方法就是拉格朗日乘子法(lagrange multiplier) ,即把等式約束h_i(x)用乙個係數與f(x)寫為乙個式子,稱為拉格朗日函式,而係數稱為拉格朗日乘子。通過拉格朗日函式對各個變數求導,令其為零,可以求得候選值集合,然後驗證求得最優值。

對於第(iii)類的優化問題,常常使用的方法就是kkt條件。同樣地,我們把所有的等式、不等式約束與f(x)寫為乙個式子,也叫拉格朗日函式,係數也稱拉格朗日乘子,通過一些條件,可以求出最優值的必要條件,這個條件稱為kkt條件。

(a) 拉格朗日乘子法(lagrange multiplier)

對於等式約束,我們可以通過乙個拉格朗日係數a 把等式約束和目標函式組合成為乙個式子l(a, x) = f(x) + a*h(x),

這裡把a和h(x)視為向量形式,a是橫向量,h(x)為列向量,之所以這麼寫,完全是因為csdn很難寫數學公式,只能將就了.....。

然後求取最優值,可以通過對l(a,x)對各個引數求導取零,聯立等式進行求取,這個在高等數學裡面有講,但是沒有講為什麼這麼做就可以,在後面,將簡要介紹其思想。

(b) kkt條件

對於含有不等式約束的優化問題,如何求取最優值呢?常用的方法是kkt條件,同樣地,把所有的不等式約束、等式約束和目標函式全部寫為乙個式子l(a, b, x)= f(x) + a*g(x)+b*h(x),kkt條件是說最優值必須滿足以下條件:

1. l(a, b, x)對x求導為零;

2. h(x) =0;

3. a*g(x) = 0;

求取這三個等式之後就能得到候選最優值。其中第三個式子非常有趣,因為g(x)<=0,如果要滿足這個等式,必須a=0或者g(x)=0. 這是svm的很多重要性質的**,如支援向量的概念。

機器學習6 python實現拉格朗日乘子法

題目如下 等式約束下的拉格朗日乘子法求解過程 題目如上 from scipy.optimize import minimize import numpy as np 目標函式 deffunc args fun lambda x 60 10 x 0 4 x 1 x 0 2 x 1 2 x 0 x 1 ...

機器學習中的數學 三 牛頓法

寫在前面 機器學習中的數學 系列主要列舉了在機器學習中用到的較多的數學知識,包括微積分,線性代數,概率統計,資訊理論以及凸優化等等。本系列重在描述基本概念,並不在應用的方面的做深入的 如果想更深的了解某一方面的知識,請自行查詢研究。牛頓法與梯度下降法相似,也是求解無約束最優化問題的常用方法,也有收斂...

基礎數學知識(一) 拉格朗日乘子法

這幾天一直在看支援向量機,然後就是大量大量的數學公式,一直迷迷糊糊的,然後一直遇到拉格朗日,拉格朗日,原來數學基礎也不好,沒怎麼學過,於是下定決心要把拉格朗日乘子法搞懂,花了幾天,看了一些文章,算是對拉格朗日乘子法有了簡單的了解,下面就和大家簡單的分享分享啦!我們在求解優化問題的時候,可能小夥伴們遇...