內容主要來源於 大數據文摘
1 高數教材中拉格朗日乘子法的泛化
1.1 高數教材中的拉格朗日乘子法
我們大學時講了這個計算條件極值的方法,運用拉格朗日乘數法(乘子法)
第一行就是目標函數,第二行是約束函數。我們就是想在h(x)=0一系列函數的約束下,求f(x)的最小值。我們可以用(1)式中的方法求解
這當然是個很簡單的事件了。但是這是絕對是個特例。你看啊,上面的約束條件都是等式,但事實上很多情況都是不等式。這就是我們的拉格朗日乘數法(乘子法)的擴展KKT問題。
1.2 KKT(Karush–Kuhn–Tucker conditions)問題
在1.1中,約束機制的泛化了的就是KKT。KKT的名字讓人的意思不明所以,其實就是一般約束優化問題極值點一階必要條件:
如果
因爲可以利用正負號更改最大最小,大於等於號,所以上式基本可以表達所有情況。
但一定要注意大於號的方向。
那麼這就是變成解
爲什麼”極值點’一階‘必要條件”?在第三個式子解出的
2 凸函數
我按照點集的觀點重新審視下點線面。初中時,遇到一種四邊形的說法“凸四邊形”,“凹四邊形”。老師講凸四邊形就是“四個角都凸出來的,如平行四邊形梯形等;凹四邊形就是有角凹進去了的四邊形,如下圖”。
這麼說的確很容易理解,但不是數學語言。詳細描述這個問題很複雜,可以先從點集入手。
2.1 仿射,凸集
基礎:過兩點
如果一個集合
如果一個集合
下圖中左邊是凸的,右邊不是凸的
2.2 凸函數
- 凸集合交集是凸集
- 凸函數的定義是根據凸集來的:
f(x)是凸函數,則有
f(λx1+(1−λ)x2)⩾λf(x1)+(1−λ)f(x2)
f稱爲I上的凸函數,當且僅當其上境圖(在函數圖像上方的點集)爲一個凸集 - 凸函數與我們以前接觸的函數不一樣。因爲是翻譯問題,數學上的因爲形狀凹下去,所以將Convex翻譯爲凹函數,但Convex Set又叫凸集合來定義的。這裏有必要把老版本翻譯的凹函數凸過來。
2.3凸函數的性質
- 一元二階可微的函數在區間上是凸的,當且僅當它的二階導數是非負的;這可以用來判斷某個函數是不是凸函數。如果它的二階導數是正數,那麼函數就是嚴格凸的,但反過來不成立。根據上節課的經驗,當一元變爲多元時,可以判斷Hassion矩陣是否正定。
- 保凸運算(這個很重要)
- f是凸函數,自變量的線性組合,f(Ax+b)也是凸函數
f1,⋯,fm 爲凸函數,w1,⋯,wm≥0 ,則∑mi=1wifi 也是凸函數f1,⋯,fm 爲凸函數,逐點最大f(x)=sup{f1(x),⋯,fm(x)} 也是凸函數。這條性質跟實際應用時可以給正則化一個解釋。加了正這則化的凸函數也是凸函數,所以正則化對原函數的解題方法無影響。- g,h爲凸函數,擴展的h非遞減(這條性質很重要)。則f(x)=h(g(x))也是凸函數。
- 對於凸函數f的
α 水平子集Sα={x|f(x)≤a} 是凸集。水平子集是凸集的函數不一定是凸函數。這樣的函數稱爲擬凸函數。
2.2 凸優化問題
還是回到上面我們的條件極值問題,我們這裏加上幾個條件,讓它變成的功能強大的函數:
但我們做了額外要求:
1. 目標函數是凸函數我們的目標函數f(x)是凸函數
2. 不等式約束函數也是凸函數,這裏要注意不等號的方向。有些數不等號方向不同,這裏一定要注意。這條要求的實質條件是圍成的可行域交集是個凸集。由於具有不同的形式,在後面推導KKT的過程會有不同。
3. 等式約束(這裏的
這就是在一個凸集上極小化一個凸的目標函數問題。
凸優化問題的局部最優等於全局最優
我們費盡心思搞的凸優化形式,目的就是就求目標函數在可行域上的的極值。這裏是可行域,因爲還會有正無窮或負無窮(但我們視爲可行域是空的,如求y=x的極值)。
凸優化裏面,KKT不僅僅是必要條件,而是充分必要條件
具體原因還得詳細解釋下KKT的由來。
3 KKT(Karush–Kuhn–Tucker conditions)問題的解釋——對偶問題
3.1 普通的條件極值問題
首先我們不管什麼凸函數不凸函數。還是熟悉的條件極值問題。
注意:目標函數*“最小化問題”*與h函數的*“不等號方向”*是配對的;
上面的同樣的式子爲了普遍性,故意不轉化成這種情況。
然後我們用拉格朗日法合併目標函數與約束:
這下我們知道
當
我們還知道了
這樣區間內x的最優解
3.2 對偶問題
那麼任意一個相似條件極值(我沒說凹凸性)都可以求它的對偶問題,且這個對偶問題是個凸優化問題:
設整理這裏最優值爲
但是當“強對偶”現象情況發生時,等號成立。
什麼時候“強對偶”現象發生?
答:原問題是個凸優化問題。。。
在經過一些不重要的證明(我懶不想寫)我們得到凸優化求全局極值的充分必要條件就是KKT。。。。