1. 程式人生 > >林軒田--機器學習技法--SVM筆記2--對偶支援向量機(dual+SVM)

林軒田--機器學習技法--SVM筆記2--對偶支援向量機(dual+SVM)

對偶支援向量機

咦?怎麼還有關於支援向量機的內容,我們不是在上一講已經將支援向量機解決了麼?怎麼又引入了對偶這個概念?

1.動機

我們在上一講已經講過,可以使用二次規劃來解決支援向量機的問題。如果現在想要解決非線性的支援向量機的問題,也很簡單,如下圖所示:

這裡寫圖片描述

我們只需要將原來的有關於X的內容通過轉換變為Z,剩下的事情就一樣了。在Z空間裡面,將Q,P,A,C等填充好,然後丟到一個二次規劃的軟體裡去求得一個Z空間的最佳的w和b。所以我們需要解決的是Z空間的二次規劃問題,我們想象一下,但是當我們Z空間的維度(d)很高時(甚至無限維),我們的二次規劃解起來具有一定的挑戰性。

所以說,如果我們想要做高維度特徵的SVM,如何移除掉對於特徵維度的依賴?使高維甚至無限維的特徵的SVM稱為可能?這就是我們考慮對偶支援向量機的動機。

2. 學習的對偶演算法

因為我們的SVM的原始問題是一個受限制的最優化問題,回想之前做regularization時候,我們的regularization也是一個受限制的最優化問題,我們應用拉格朗日乘數法,來得到一個不受限制的正則項表示式。同理,我們也可以在此應用拉格朗日乘數法,將有條件的SVM問題變成沒有條件的SVM問題,緊接著利用拉格朗日對偶性,得到對偶問題,對偶中可以有效地移除對特徵維度的依賴性,所以我們可以用過求解對偶問題來得到原始問題的最優解。如果對拉格朗日乘數法不理解,可以點選如下連結:拉格朗日乘數法,這個視訊講得很不錯的。

2.1 拉格朗日函式

首先構建拉格朗日函式:

這裡寫圖片描述

我們的拉格朗日函式由兩部分組成
* 第一部分:原始的目標函式
* 第二部分:對原始問題的每一個限制條件均乘上一個朗格朗日乘子,然後在求和

現在拉格朗日函式寫出來了,那如何來求解拉格朗日函式來求得我們的最優解呢?(也就是說函式寫出來了,你是通過最大值還是最小值來求最佳解?)

2.1.1 拉格朗日原始問題

通過拉格朗日函式,我們可以求解的SVM問題寫為如下形式。解釋一下下面這個形式所表達的意義

  • 首先選定一個(w,b)
  • 然後找到a使L()的值最大
  • 然後通過w,b,a計算L()的值
  • 選定另一個(w,b)做相同的步驟,得出相應的L()值
  • 選定完所有的(w,b)之後,找出L()值最小的wb,即是最優解

這裡寫圖片描述

為什麼可以寫成這個形式呢?這個問題的最優解和原始問題一致麼?下面我們就來證明這件事情。

演算法的第一步是選出一個(w,b)來,選出的這個(w, b)有兩種可能:

  • 如果選出來的(w, b)是壞的,也就是說我們的(w, b)會違反某些限制條件,也就是說某些1-Yn(W.Zn + b)的項本來是要小於等於0的,現在大於0了,那如果對an(1-Yn(W.Zn + b))求最大值,那最終L()就是無窮大了。
  • 如果選出來的(w, b)是好的,也就是說(w, b)滿足所有的限制條件,也就是所有的1-Yn(W.Zn + b)要小於等於0,那an(1-Yn(W.Zn + b))什麼時候能夠得到最大值呢?那就是an等於0才是最大值。當an等於0時,我們的問題就剩下min 1/2 w * w了(原始的最優化問題)。

根據之前所說表示式的意義,最後一步是選出L()值最小的(w, b),由於那些壞的(w, b)的L()值為無窮大,所以那些壞的(w, b)被自動排除了。剩下的就是從好的(w, b)(他們的an均為0)中,選出使L()=1/2 w * w的值最小的(w, b)。所以這不就是我們原始問題做的事情麼?

所以朗格朗日函式的最優解也就是我們原始問題的最優解。

2.1.2 拉格朗日對偶問題

接下來我們繼續對拉格朗日函式做變換,來實現我們‘動機’章節所說的消除對特徵維度的依賴。

如下圖所示,可以很容易得出下圖的結論

這裡寫圖片描述

圖中大於號右側的表示式表示僅僅根據b.w來求表示式的最小值,a為一個任意的固定值。大於號左側的表示式表示先求表示式關於a的最大值,然後再求關於b.w的最小值,所以顯而易見不等式成立。也就是說,對於右側的任何一個固定的a值,都有以上結果。

進一步地,既然任意的a都有以上結果,那現在在右側加一個max的動作的話,那不等式也依然成立咯。

這裡寫圖片描述

上圖中不等式右側的式子又叫做拉格朗日原始問題(注意這裡指的是拉格朗日原始問題,並不是SVM的原始問題,不要混淆)的對偶問題,可以看出對偶問題將原始問題的max/min對調了。

但是從圖中我們可以看出,原始問題和對偶問題是大於等於的關係,那麼拉格朗日對偶問題的最優解也是拉格朗日原始問題的最優解麼?

在最佳化文獻中,我們管 >= 叫做weak duality,弱的對偶關係。但是我們不想要這種關係,我們能不能夠直接將上式從不等式變為等式呢?變為等式後,對偶問題的最佳解就是原始問題的最佳解了。

那麼有沒有什麼理論來保證這個等式成立呢?做在最佳化理論中,如果我們的SVM原始問題(QP問題)滿足以下條件:

  • 目標函式是凸的
  • 是有解的(也就是能找到一條線將資料正確分開)
  • 線性的限制條件(QP本來就有)

那我們的強對偶關係就成立。所以就可以通過解對偶問題來得到原始問題的最優解。我們把對偶問題的推導過程叫做拉格朗日對偶性

2.2 求解拉格朗日對偶問題

現在的拉格朗日對偶問題的形式如下:

這裡寫圖片描述

我們可以看到,在大括號內部,是一個關於wb的無條件的最優化問題。請記住我們的初衷,我們是想移除掉特徵維度的依賴,所以我們接下來的事情就是通過某些關係來將w,b從我們的問題中移除。

2.2.1 KKT condition

對於我們的對偶問題,大括號內部是關於w和b的無條件最優化問題。無條件最優化問題我們會解啊,可以分別對w和b求偏微分等於0,就可以分別得到w和b的表示式。好,現在就來做

首先來對b做偏微分:

這裡寫圖片描述

上式的結果不必多說吧,我們再把上式的結果帶回函式中,會發現b被成功地消除掉了:

這裡寫圖片描述

然後我們在對w做偏微分:

這裡寫圖片描述

可以將w用另一個表示式表示出來,所以可以將該表示式帶回原函式中,將w用anynzn來表示:

這裡寫圖片描述

經過上面的步驟,w和b已經基本消失了,對偶問題中的min也不用做了,剩下的事情就是做關於a的最優化(有條件限制的最優化)。

這裡寫圖片描述

上圖中表示的就是我們匯出來的簡化版的拉格朗日對偶問題。

從我們的推導過程可知,我們的最佳的a,w,b會滿足某些關係,我們把這些關係叫做KKT condition:

這裡寫圖片描述

下面我們來一一解釋KKT條件:

  • 第一條是我們原始的SVM問題要滿足的條件
  • 第二條使我們拉格朗日原始/對偶問題的條件
  • 第三條是我們對拉格朗日對偶問題的w,b引數做偏微分所得出的結論
  • 第四條,我們在2.1.1節中,將SVM的原始問題(受限制)轉換為拉格朗日原始問題(不受限)的過程中,證明該轉換的有效性時,得出的一個結論。

這些條件有什麼用呢?待會兒可以看到,當我們求出a後,可以用這些條件來求w和b。

2.2.2 求解對偶問題

上一小結中我們得到了簡化版的拉格朗日對偶問題,現在我們來做一點兒小小的變動,使其變成我們習慣的形式。

這裡寫圖片描述

w的表示式我們沒有將其作為條件列出來,因為現在求解的是a的問題,和w的限制條件沒有關係,所以沒將其列出來。

我們的新的問題有N個變數和N+1個條件,而且新問題還是一個凸的二次規劃問題(目標函式為二次,限制條件為一次),所以說我們大費周章地將一個QP問題轉換為另一個QP問題,這是因為點啥呢?哈哈,就是為了消除掉對特徵維度的依賴啊,還有一個目的是為了引出很好用的kernel方法(請看下一篇文章)。

好,既然是新的QP問題,那解法當然和就的QP問題差不多啦,將所有的係數算出來,然後丟給二次規劃軟體就搞定啦。所以解法就不囉嗦了,看下圖:

這裡寫圖片描述

2.2.3 警告

在我們解決QP問題的過程中,會有一個二次係數矩陣Q,這個矩陣的大小是N x N的,從上一小節我們知道,Qmn = ym.yn.Zm.Zn,
當Zm與Zn垂直時,Qmn為0,但是Z向量垂直的情況畢竟是少數,也就是說我們的Q矩陣的元素大多數都不是0,我們管Q叫做密集的。

現在我們來看看,當N = 30000時(有30000個樣本),就算Q是對稱矩陣,只存一半,也需要花 > 3G 的記憶體來儲存這些係數,所以這個Q矩陣很大。所看看起來沒有原始的SVM的二次規劃問題那麼好解,原始SVM的QP問題的Q矩陣比較特殊,裡面包含一個單位矩陣,只有對角線才有值,所以會佔用比較少的記憶體。

所以我們通常在解決SVM問題的時候,不會使用一個通用的QP軟體,而是會使用特殊的專為SVM設計的二次規劃軟體。也就是這種軟體不會要求將Q矩陣先算出來,而是用到的時候再去算。

2.2.4 求解b,w

假設我們通過二次規劃軟體將a解出來了,那麼現在怎麼得出b,w呢?

我們之前說過,KKT condition可以幫我們求解w和b。

這裡寫圖片描述

  • 求解w : 求解w就很簡單了,直接使用KKT條件的第三項
  • 求解b : 求解b也不難,利用KKT條件的最後一項。我們知道,當an不等於0時,1-yn(wzn + b)肯定等於0。現在我們知道了所有的a,所以就找一個an不等於0的點,將其代入,求得b即可。

2.2.5 a的稀疏性

根據KKT條件,我們可以輕易得出,a的解具有稀疏性(向量內的大多元素為0)。當yn(wzn+b)不等於1時,也就是該點位於我們的邊界外時,這是我們的這些資料點的大多數的分佈,根據KKT條件中的complementary slackness條件,我們得知,an為0,也就是大多數資料點的an為0,這也就說明了an的稀疏性。

3. 對偶演算法的總結

從解w和b的過程中,我們知道。當an > 0時,1-yn(wzn + b)肯定等於0(KKT條件最後一項),也就是說yn(wzn + b) = 1,也就是說該(zn,yn)點的函式間隔等於1,所以說,該點處於邊界上。也就是說所有an>0的點均位於邊界上,對我們的邊界起到一個支撐作用。我們這些位於邊界上的點叫做支撐向量。其他非支撐向量的點,也就是an = 0的點對我們的邊界的構建沒有貢獻,從w和b的表示式可以看出,an等於0的點不會貢獻任何力量。

(注意:an > 0的點一定位於邊界上,但是位於邊界上的點並不一定是an > 0的。所以我們僅僅把an > 0的點叫做支撐向量)

所以,我們計算w和b的時候僅僅需要支撐向量的點就行了

這裡寫圖片描述

3.1 兩種形式的hard-margin SVM

到現在我們已經學習兩種形式的hard-margin SVM(hard-margin表示保證資料不違反邊界),分別是原始的SVM問題和對偶的SVM問題:

這裡寫圖片描述

我們從原始問題的d空間切換到了新問題的N空間,原始問題比較適合解決d較小的情況,對偶問題適合解決N較小的情況

兩個問題解決完成之後,都可以得到一個最佳的w,b,通過這個w,b就能得到我們的hypothesis:

這裡寫圖片描述

相關推薦

--機器學習技法--SVM筆記2--對偶支援向量dual+SVM

對偶支援向量機 咦?怎麼還有關於支援向量機的內容,我們不是在上一講已經將支援向量機解決了麼?怎麼又引入了對偶這個概念? 1.動機 我們在上一講已經講過,可以使用二次規劃來解決支援向量機的問題。如果現在想要解決非線性的支援向量機的問題,也很簡單,如下圖所

--機器學習技法--SVM筆記5--核邏輯迴歸(Kernel+Logistic+Regression)

核邏輯迴歸 這一章節主要敘述的內容是如何使用SVM來做像logistics regression那樣的soft binary classification(輸出正類的概率值),如何在此基礎上加上核方法。 1. 把SVM看成一種regularization

臺灣大學機器學習技法課程學習筆記1 -- Linear Support Vector Machine

關於臺灣大學林軒田老師的《機器學習基石》課程,我們已經總結了16節課的筆記。這裡附上基石第一節課的部落格地址: 本系列同樣分成16節課,將會介紹《機器學習基石》的進階版《機器學習技法》,更深入地探討機器學習一些高階演算法和技巧。 Large-Marg

臺灣大學機器學習技法課程學習筆記8 -- Adaptive Boosting

上節課我們主要開始介紹Aggregation Models,目的是將不同的hypothesis得到的gtgt集合起來,利用集體智慧得到更好的預測模型G。首先我們介紹了Blending,blending是將已存在的所有gtgt結合起來,可以是uniformly

臺灣大學機器學習技法課程學習筆記10 -- Random Forest

上節課我們主要介紹了Decision Tree模型。Decision Tree演算法的核心是通過遞迴的方式,將資料集不斷進行切割,得到子分支,最終形成數的結構。C&RT演算法是決策樹比較簡單和常用的一種演算法,其切割的標準是根據純度來進行,每次切割都

臺大·機器學習技法記要

6/1/2016 7:42:34 PM 第一講 線性SVM 廣義的SVM,其實就是二次規劃問題 把SVM問題對應到二次規劃的係數 這就是線性SVM,如果想變成非

機器學習實戰】第6章 支援向量Support Vector Machine / SVM

第6章 支援向量機 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>

機器學習公開課筆記(7):支援向量

支援向量機(Support Vector Machine, SVM) 考慮logistic迴歸,對於$y=1$的資料,我們希望其$h_\theta(x) \approx 1$,相應的$\theta^Tx \gg 0$; 對於$y=0$的資料,我們希望$h_\theta(x) \approx 0$,相應的$\

臺大機器學習課程筆記4----訓練 VS. 測試

引言 上一篇講到了在有限的hypotheses下,學習錯誤的發生率,即E_in與E_out不同的概率邊界,本篇將會探討在infinite hypotheses情況下的概率邊界。 線的有效數字(Effective Number of Lines) 我們先將學習劃分為兩個核心的問題

臺大機器學習課程筆記3----機器學習的可行性

引例 先引入一個矛盾問題: 圖3.1 圖案學習問題 這是一道推理題,根據第一行和第二行圖形的規律分別輸出-1和+1,然後通過上述規則學習推理出第三行圖形的輸出。每個人通過學習所獲得的答案是會不一致的,例如通過對稱的規律可以得到第三行的圖形f=+1,而如果通過圖案

臺大機器學習課程筆記2----機器學習的分類

1. 根據輸出集合 二分類 根據輸出空間,二分類的輸出結果只有兩種,即y={-1,1},具體的應用包括: *信用卡申請問題:Client Data=>Accept or Deny 郵件分類問題:Email Text=>Rubbish or Not 病人生病問

臺大機器學習課程筆記----機器學習初探及PLA演算法

機器學習初探 1、什麼是機器學習 學習指的是一個人在觀察事物的過程中所提煉出的技能,相比於學習,機器學習指的就是讓計算機在一堆資料中通過觀察獲得某些經驗(即數學模型),從而提升某些方面(例如推薦系統的精度)的效能(可測量的)。 2、機器學習使用的條件 需要有規則可以學習 有事先準

臺灣大學機器學習基石課程學習筆記8 -- Noise and Error

上一節課,我們主要介紹了VC Dimension的概念。如果Hypotheses set的VC Dimension是有限的,且有足夠多N的資料,同時能夠找到一個hypothesis使它的Ein≈0Ein≈0,那麼就能說明機器學習是可行的。本節課主要講了資料集

臺灣大學機器學習基石課程學習筆記1 -- The Learning Problem

最近在看NTU林軒田的《機器學習基石》課程,個人感覺講的非常好。整個基石課程分成四個部分: When Can Machine Learn? Why Can Machine Learn? How Can Machine Learn? How Can M

臺灣大學機器學習基石課程學習筆記6 -- Theory of Generalization

上一節課,我們主要探討了當M的數值大小對機器學習的影響。如果M很大,那麼就不能保證機器學習有很好的泛化能力,所以問題轉換為驗證M有限,即最好是按照多項式成長。然後通過引入了成長函式mH(N)mH(N)和dichotomy以及break point的概念,提出

機器學習基石入門

上一節中我們主要講到機器學習的應用場景,而這一節主要向大家介紹我們身邊機器學習的例子,讓大家對機器學習有更多的直觀瞭解。 機器學習如今已滲透在我們的日行中,這很讓人驚訝,你每天都能夠接觸到它。 對於人們來說“衣食住行”是每天的基礎要求。 當你肚子餓想

機器學習基石入門

上一節我們主要向大家介紹我們身邊機器學習的例子,這一節我們將探討機器學習由什麼元素組成(機器學習的模型結構)。 首先我們先看個信用卡的例子。 假設我們想用機器學習來判斷“是否同意貸款給這個客戶?”,我們會將使用者的資訊資料輸給模型(比如年齡,性別,職業,工

-機器學習基石-作業3-python原始碼

大家好,以下是林軒田機器學習基石--作業3的Python的參考程式碼,自己碼的。Python方面沒有工程經驗,如有錯誤或者更好的程式碼優化方法,麻煩大家留言提醒一下下,大家互相交流學習,謝謝。 13-15題主要考察在分類問題上的線性迴歸和特徵轉換,所使用的樣

機器學習基石Machine Learning Foundation

第一課 機器學習問題 什麼是機器學習? 什麼是“學習”?學習就是人類通過觀察、積累經驗,掌握某項技能或能力。就好像我們從小學習識別字母、認識漢字,就是學習的過程。而機器學習(Machine Learning),顧名思義,就是讓機器(計算機)也能向人類一樣,通過觀察大量

機器學習》 周志華學習筆記第六章 支援向量課後習題python 實現

一、 1.間隔與支援向量 2.對偶問題 3.核函式 xi與xj在特徵空間的內積等於他們在原始yangben空間中通過函式k(.,.)計算的結果。 核矩陣K總是半正定的。 4.軟間隔與正則化 軟間隔允許某些samples不滿足約束  鬆弛變數 5.支援