\[\left\
&\min_ \frac||\omega||^2\\
s.t.& \quad y_i(\omega^tx + b) \ge 1, &i=1,2,3\ldots,m\\
\end\right.\]
機器學習 | 深入svm原理及模型推導(一)
我個人感覺和實際的機器學習以及工程結合不是非常緊密,目前主要在svm模型的原理推導上用到,所以我們可以只需要把svm用到的公式原理理解就可以了。
qp問題其實有專門的qp計算包可以求它的極值,我也曾經用過,但這並不是唯一的解法,並且這種解法有乙個很大的缺點在於沒辦法套用核函式。所以我們一般不使用qp規劃的方法來求解。
我們觀察一下原式,很自然的會有一種感覺,就是那些不等式很煩人。我們希望消除掉這些不等式,也有辦法,就是通過使用拉格朗日乘子法來將有約束的優化目標轉化成無約束的優化函式。
我們來看下拉格朗日乘子法的使用過程,給定乙個不等式約束問題:
\[\left\
&\min_ f(x)\\ s.t.& g_i(x) \le 0, i=1, 2, \cdots, k\\
&h_j(x) = 0, j=1, 2, \cdots, m\\ & \end\right.\]
對於這個看起來很複雜的方程組,我們引入乙個廣義朗格朗日函式,將它改寫成這樣:
\[l(x, \alpha, \beta)=f(x) + \sum_^k \alpha_ig_i(x)+\sum_^m \beta_jh_j(x), \quad \alpha_i \ge 0
\]這個式子相比於上面的方程組看起來要簡單一些,但是它有什麼用呢?我們簡單分析一下,會發現\(l \le f(x)\)。因為\(\alpha_i \ge 0\),並且\(g_i(x) \le 0\)。所以兩者相加,\(l \le f(x)\),當\(\alpha_i = 0\)時l可以取到最大值,這時\(l = f(x)\)。所以我們要求的是\(\max l(x, \alpha, \beta)\)。
又由於我們要求的目標是\(f(x)\)的極小值,我們最終的目標是\(\min_ \max_ l(x, \alpha, \beta)\)。
接下來我們就要討論著名的對偶問題了,所謂的對偶問題,實質上是將乙個帶有兩個不等式的方程的不等式進行調換順序。把\(\min \max l\)轉變成\(\max \min l\),但問題是不等號的位置顯然是有講究的,不可以隨意調換順序,所以我們需要證明這樣調換成立的。
為了方便起見,我們把原問題寫成\(\theta_p(x)=\min_x \max_l(x, \alpha, \beta)\),我們再定義乙個關於\(\alpha\)和\(\beta\)有關的方程:\(\theta_d(\alpha, \beta) = \min_l(x, \alpha, \beta)\)。這個方程等式的右邊是拉格朗日函式的最小化,因為x確定了之後,方程的結果就只和\(\alpha\)以及\(\beta\)相關,所以它是乙個關於\(\alpha\)和\(\beta\)的函式。
我們對這個函式求極大值:
\[\max_ \theta_d(\alpha, \beta) = \max_ \min_ l(x, \alpha, \beta)
\]不知道這個式子看起來是不是覺得有些眼熟,因為它和我們剛才推導得出來的原問題非常相似,只是不等號的位置不同。我們為什麼要列出這兩個式子呢?當然不是為了好玩的,主要是為了想要得到這樣一條不等式:
\[\theta_d(\alpha, \beta) = \max_ \min_x l(x, \alpha, \beta) \le \min_x \max_ l(x, \alpha, \beta) = \theta_p(x)
\]我們用拉格朗日方程做過度,就可以很容易證明這個式子:
\[\min_x l(x, \alpha, \beta) \le l(x, \alpha, \beta) \le \max_ l(x, \alpha, \beta)
\]我們想要用對偶問題代替原問題,就需要上面這個不等號取等。對於拉格朗日方程取等的條件,數學家們已經有了嚴謹的證明,只需要滿足karush-kuhn-tucker條件(簡稱ktt條件)。ktt的條件推導也是乙個挺複雜的過程,我們不做深入研究, 只需要知道它的存在就可以了。
ktt條件有這麼幾條,看起來多其實並不複雜。
\[\nabla_xl(x^*,\alpha^*, \beta^*)=0
\]\[\nabla_\alpha l(x^*,\alpha^*, \beta^*)=0
\]\[\nabla_\beta l(x^*,\alpha^*, \beta^*)=0
\]\[\alpha_i^*g_i(x*)=0, i = 1, 2, 3\ldots m
\]\[g_i(x*)=0, i = 1, 2, 3\ldots m
\]\[\alpha_i\geq0, i = 1, 2, 3\ldots m
\]\[h_i(x*)=0, j = 1, 2, 3\ldots l
\]我們對照ktt條件,求解\(\theta_p(x)\)的極小值,這個就是高中數學的部分了。我們首先對原式進行化簡:
\[\begin
l(x, \omega, b) &= \frac||\omega||^2 + \sum_^m\alpha_i(1 - y_i(\omega^t x_i + b))\\
&= \frac||\omega||^2 + \sum_^m (\alpha_i - \alpha_i y_i \omega^tx_i - \alpha_i y_ib) \\
&= \frac||\omega||^2 + \sum_^m \alpha_i - \sum_^m \alpha_i y_i\omega^tx_i - \sum^m \alpha_i y_ib
\end
\]再對\(\omega\)和\(b\)進行求導:
\[\frac = \frac * 2 * \omega + 0 - \sum_^m \alpha_i y_i x_i - 0 = 0 \rightarrow \omega = \sum_^m \alpha_i y_ix_i
\]\[\frac = 0 + 0 - 0 - \sum^m\alpha_i y_i = 0 \rightarrow \sum_^m\alpha_i y_i = 0
\]我們通過求導得出了\(\omega\)和\(\alpha\)之間的關係,也就是說只要我們確定了\(\alpha\)也就確定了\(\omega\),另外我們可以神奇地發現上面的式子當中已經沒有了b,說明b已經被我們消去了。我們把上面求導得到的取極值時的\(\omega\)和\(b\)代入原式,消去\(\omega\)和\(b\),可以得到:
\[\begin
\min_ l(x, \omega, b) &= \frac\omega^t\omega + \sum_^m \alpha_i - \sum_^m \alpha_iy_i\omega^tx_i - \sum_^m \alpha_iy_i b \\
&= -\frac\omega^t\sum_^m \alpha_iy_i x_i + \sum_^m \alpha_i - b\sum_^m \alpha_iy_i \\
& = -\frac\omega^t\sum_^m \alpha_iy_i x_i + \sum_^m \alpha_i \\
& = \sum_^m \alpha_i - \frac\sum_^m\sum_^m \alpha_i \alpha_j y_i y_j x_i^t x_j
\end
\]我們觀察一下是這個式子,會發現x和y都是固定的值由樣本確定,唯一的變數就只有\(\alpha\)了。我們要求的是上式的極大值,唯一的變數是\(\alpha\),求出了\(\alpha\)就可以推導得到對應的\(\omega\)和b。
機器學習,詳解SVM軟間隔與對偶問題
那針對這樣的問題我們應該怎麼解決呢?在上文當中我們說了,在實際的場景當中,資料不可能是百分百線性可分的,即使真的能硬生生地找到這樣的乙個分隔平面區分開樣本,那麼也很有可能陷入過擬合當中,也是不值得追求的。因此,我們需要對分類器的標準稍稍放鬆,允許部分樣本出錯。但是這就帶來了乙個問題,在硬間隔的場景當...
支援向量機(一) 深入理解函式間隔與幾何間隔
實踐發現,在所給的例子中,兩種方法線性劃分兩類事物時得到的線性分類器的效果差不多。那具體的差別在哪呢?svm更關心的是靠近中間分割線的點,讓他們盡可能地遠離中間線,而不是在所有點上達到最優,因為那樣的話,要使得一部分點靠近中間線來換取另外一部分點更加遠離中間線。因此支援向量機和和邏輯斯蒂回歸的不同點...
linux軟鏈結與硬鏈結深入理解
ln鏈結分為軟鏈結和硬鏈結,軟鏈結效果等同於windows快捷方式 硬鏈結相當於檔案的copy,與原始檔保持一致 inode index num一致,實質是指向inode block,不額外占用磁碟空間 硬鏈結知識總結 1.具有相同的inode節點號的多個檔案是互為硬鏈結檔案。2.刪除硬鏈結檔案或者...