對偶專題——Duality and Dual problem (一)
前言
對偶,是我們在最優化裡面經常會遇到的一個名詞,尤其是在機器學習裡面,在優化模型的最後都會使用到一個對偶,比如SVM、最大熵、Fisher 鑑別都會使用到對偶;同時,在很多其他問題,例如線性規劃也存在對偶問題。本人剛剛接觸這東西的時候,感覺很奇妙。妙在對偶問題一般會使得優化問題變得更加容易求解,奇在 為什麼對偶形式是那樣子寫?KKT條件又是什麼鬼···
本專題就來細細的分析,對偶問題的到底是怎麼回事,它其實一點都不神祕。
對偶問題
從一般問題開始說起
考慮下面一個一般的帶約束的最優化問題:
我們要優化的目標函式是
,它可以是任意的可導函式,我們的目標是最小化這個函式。
約束條件有兩類:
個不等式約束,以及
個 等式約束。
假設約束條件下的
的定義域記為
。
本科期間,我們學習到了先通過對目標函式求偏導,然後讓偏導為0,解出使得導數為0的 後,再反代入 ,得到一個可能的極值: ,然後我們再去判斷這個 到底是極大值還是極小值,或者到底是不是極值。
然而,上面這套方法是用於無約束條件的下的方法。現在,我們面臨的如何在一坨等式約束和不等式約束面前去最優化某個函式,也就是需要在 集合去最優化這個函式。
因為帶約束的最優化我們不會做,我們只會做無約束的最優化。因此一個很自然的想法就是:我們能不能把約束條件去掉,使得我們要最優化的函式化歸到無約束?
首先我們構造這麼一個目標函式:
其中
和
的定義為:
這兩個函式是個柵欄函式,在
在
的時候都是0,而在
的時候為正無窮。同樣的
在
的時候為正無窮,而在
的時候為0。
當我們去
最小化
的時候,
是不帶任何約束的,即
。但是此時我們的目標是最小化,如果這個函式存在最小值,那麼這個最小值肯定不會是正無窮的吧。於是在最小化
的過程中,其實
的取值一定會趨向於讓
,以及
,否則
就沒有最小值可言。
於是:
的最優值點
必然會使得
,以及
,這也就使得
,以及
。這就說明了,我們構造的不帶約束的最小化目標函式
,就是等效於最小化原目標函式
.
好了,現在我們已經把帶約束的目標函式轉換成了不帶約束的目標函式。接下來,我們嘗試對這個函式求導,然後把導數為0的 代入求最小值。但是此時,我們會發現: 因為帶了 以及 ,使得 自身是不可導的。
那這些就麻煩了,我們構造了一個不可導的函式 ,它的確不帶約束了,但是不可導就甚是不好。
我們只會做不帶約束的、可導的函式優化,那麼我們現在的想法也自然是想辦法把 變成可導的咯。
我們的方法是這樣的:找一個 的簡單可導下界函式 。注意了我們的目標是 找到 一個函式 ,它得是 的下界,同時對 求導 相對於對原函式