這是關於SVM的第二篇文章,主要解決有約束條件下的優化問題。
關於SVM基本型等基礎講解可參看第一部分,鏈接如下:
木小易:Support Vector Machines(SVMs-P1)?zhuanlan.zhihu.com
目前已知SVM基本型的表達式為:
我們不妨先來討論一下約束條件,它分為等式約束和不等式約束,標準的拉格朗日乘子法其實只能解決等式約束的問題,那麼我們先來通過等式約束認識一下拉式乘子法的強大作用,之後再進一步解決不等式約束的問題。
1.等式約束
先給出等式約束的基本形式:
指尋找可以使 最小的 的值,值得注意的是 在這裡是矢量,即可以表示多個自變數。
我們觀察到上式有 個等式約束,為了簡便,我們假設只有一個等式約束,即
下面我們引入拉格朗日乘子法,
「基本的拉格朗日乘子法就是求函數f(x1,x2,...)在約束條件g(x1,x2,...)=0下的極值的方法。其主要思想是將約束條件函數與原函數聯立,從而求出使原函數取得極值的各個變數的解。」(百度百科)
根據百度百科的定義,不難看出拉格朗日乘子法是通過將約束條件函數與原函數結合起來構造出一個函數,從而整體上來求解優化問題。
那麼等式約束的函數與需要優化的函數之間存在怎樣的關係呢?在滿足約束函數的約束下,原函數何時才能取得最小值呢?答案是兩個函數的梯度平行的時候,原函數可以取得最大或者最小值,這就是拉格朗日發現的奧秘。
如何理解拉格朗日給出的答案呢?
限於篇幅原因,不再提供對梯度進行詳細講解。
以下只給出梯度的3點重要性質:
1.梯度是矢量,每個元素是函數在某點對某個自變數的偏導數值
2.梯度方向指向函數增長最快的方向
3.梯度垂直於函數等高線
那麼為何函數的梯度平行時原函數取到極值點呢?
我們不妨舉個例子直觀的理解這個問題,請參看下圖: