1. 程式人生 > >深入理解SVM,軟間隔與對偶問題

深入理解SVM,軟間隔與對偶問題

今天是**機器學習專題**的第33篇文章,我們繼續來聊聊SVM模型。 在上一篇文章當中我們推到了SVM模型線上性可分的問題中的公式推導,我們最後得到的結論是一個帶有不等式的二次項: $$\left\{\begin{align*} &\min_{\omega , b} \frac{1}{2}||\omega||^2\\ s.t.& \quad y_i(\omega^Tx + b) \ge 1, &i=1,2,3\ldots,m\\ \end{align*}\right.$$ 想要了解具體推導過程的同學,可以參考我的上一篇文章: [機器學習 | 深入SVM原理及模型推導(一)](https://mp.weixin.qq.com/s?__biz=MzUyMTM5OTM2NA==&mid=2247486804&idx=1&sn=35a6222875e8bc45d028924f83397222&chksm=f9daf07fcead79693cb5034b324fe741bd195dc6bae57c2202fd6f50a874e2d4f71e6d3bdf96&scene=21#wechat_redirect) 其實上一篇的文章當中遺留了一個問題,就是我們希望得到$||\omega||$最小,為什麼不直接求$||\omega||$最小,而非要求$||\omega||^2$最小呢?原因就在它的解法上,因為我們要將它轉化成一個**凸二次規劃問題**(Quadratic Programming)。QP問題也是計算科學當中一個很重要的領域,也是比較困難的領域,因為需要對計算機以及數學都有很深的造詣。 我個人感覺和實際的機器學習以及工程結合不是非常緊密,目前主要在SVM模型的原理推導上用到,所以我們可以只需要把SVM用到的公式原理理解就可以了。 ## 求解過程 QP問題其實有專門的QP計算包可以求它的極值,我也曾經用過,但這並不是唯一的解法,並且這種解法有一個很大的缺點在於**沒辦法套用核函式**。所以我們一般不使用QP規劃的方法來求解。 我們觀察一下原式,很自然的會有一種感覺,就是那些不等式很煩人。我們希望消除掉這些不等式,也有辦法,就是通過使用**拉格朗日乘子法**來將有約束的優化目標轉化成無約束的優化函式。 我們來看下拉格朗日乘子法的使用過程,給定一個不等式約束問題: $$\left\{\begin{align*} &\min_{x} f(x)\\ s.t.& g_i(x) \le 0, i=1, 2, \cdots, k\\ &h_j(x) = 0, j=1, 2, \cdots, m\\ & \end{align*}\right.$$ 對於這個看起來很複雜的方程組,我們引入一個廣義朗格朗日函式,將它改寫成這樣: $$L(x, \alpha, \beta)=f(x) + \sum_{i=1}^k \alpha_ig_i(x)+\sum_{j=1}^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_{x} \max_{\alpha_i \ge 0} L(x, \alpha, \beta)$。 ## 對偶問題 接下來我們就要討論著名的**對偶問題**了,所謂的對偶問題,實質上是將一個帶有兩個不等式的方程的不等式進行調換順序。把$\min \max L$轉變成$\max \min L$,但問題是不等號的位置顯然是有講究的,不可以隨意調換順序,所以我們需要證明這樣調換成立的。 為了方便起見,我們把原問題寫成$\theta_P(x)=\min_x \max_{\alpha, \beta}L(x, \alpha, \beta)$,我們再定義一個關於$\alpha$和$\beta$有關的方程:$\theta_D(\alpha, \beta) = \min_{x}L(x, \alpha, \beta)$。這個方程等式的右邊是拉格朗日函式的最小化,因為x確定了之後,方程的結果就只和$\alpha$以及$\beta$相關,所以它是一個關於$\alpha$和$\beta$的函式。 我們對這個函式求極大值: $$\max_{\alpha_i \ge 0} \theta_D(\alpha, \beta) = \max_{\alpha_i \ge 0} \min_{x} L(x, \alpha, \beta)$$ 不知道這個式子看起來是不是覺得有些眼熟,因為它和我們剛才推導得出來的原問題非常相似,**只是不等號的位置不同**。我們為什麼要列出這兩個式子呢?當然不是為了好玩的,主要是為了想要得到這樣一條不等式: $$\theta_D(\alpha, \beta) = \max_{\alpha_i \ge 0} \min_x L(x, \alpha, \beta) \le \min_x \max_{\alpha_i \ge 0} L(x, \alpha, \beta) = \theta_P(x)$$ 我們用拉格朗日方程做過度,就可以很容易證明這個式子: $$\min_x L(x, \alpha, \beta) \le L(x, \alpha, \beta) \le \max_{\alpha_i \ge 0} 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{aligned} L(x, \omega, b) &= \frac{1}{2}||\omega||^2 + \sum_{i=1}^m\alpha_i(1 - y_i(\omega^T x_i + b))\\ &= \frac{1}{2}||\omega||^2 + \sum_{i=1}^m (\alpha_i - \alpha_i y_i \omega^Tx_i - \alpha_i y_ib) \\ &= \frac{1}{2}||\omega||^2 + \sum_{i=1}^m \alpha_i - \sum_{i=1}^m \alpha_i y_i\omega^Tx_i - \sum{i=1}^m \alpha_i y_ib \end{aligned} $$ 再對$\omega$和$b$進行求導: $$\frac{\partial L}{\partial \omega} = \frac{1}{2} * 2 * \omega + 0 - \sum_{i=1}^m \alpha_i y_i x_i - 0 = 0 \rightarrow \omega = \sum_{i=1}^m \alpha_i y_ix_i $$ $$\frac{\partial L}{\partial b} = 0 + 0 - 0 - \sum{i=1}^m\alpha_i y_i = 0 \rightarrow \sum_{i=1}^m\alpha_i y_i = 0$$ 我們通過求導得出了$\omega$和$\alpha$之間的關係,也就是說只要我們確定了$\alpha$也就確定了$\omega$,另外我們可以神奇地發現上面的式子當中已經沒有了b,說明b已經被我們消去了。我們把上面求導得到的取極值時的$\omega$和$b$代入原式,消去$\omega$和$b$,可以得到: $$ \begin{aligned} \min_{\omega, b} L(x, \omega, b) &= \frac{1}{2}\omega^T\omega + \sum_{i=1}^m \alpha_i - \sum_{i=1}^m \alpha_iy_i\omega^Tx_i - \sum_{i=1}^m \alpha_iy_i b \\ &= -\frac{1}{2}\omega^T\sum_{i=1}^m \alpha_iy_i x_i + \sum_{i=1}^m \alpha_i - b\sum_{i=1}^m \alpha_iy_i \\ & = -\frac{1}{2}\omega^T\sum_{i=1}^m \alpha_iy_i x_i + \sum_{i=1}^m \alpha_i \\ & = \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m \alpha_i \alpha_j y_i y_j x_i^T x_j \end{aligned} $$ 我們觀察一下是這個式子,會發現**x和y都是固定的值**由樣本確定,唯一的變數就只有$\alpha$了。我們要求的是上式的極大值,唯一的變數是$\alpha$,求出了$\alpha$就可以推導得到對應的$\omega$和b。 那麼這個$\alpha$怎麼求呢?相關的內容我們放到下一篇文章。 今天的文章到這裡就結束了,如果喜歡本文的話,請來一波**素質三連**,給我一點支援吧(**關注、轉發、點贊**)。 [原文連結,求個關注](https://mp.weixin.qq.com/s?__biz=MzUyMTM5OTM2NA==&mid=2247486966&idx=1&sn=7e896674ad9cda8ab2ef93267e2ee359&chksm=f9daf0ddcead79cb907350a29e2bc944570639dda822850343041e85b61f2c7b2c5b3492558e&token=218120179&lang=zh_CN#rd) ![](https://img2020.cnblogs.com/blog/1906483/202009/1906483-20200903101922702-4493934