1. 程式人生 > >機器學習 | 吳恩達機器學習第七週學習筆記

機器學習 | 吳恩達機器學習第七週學習筆記

課程視訊連結

第七週PPT 下載密碼:tmss

上週主要講解了如何設計機器學習系統和如何改進機器學習系統,包括一些模型選擇的方法,模型效能的評價指標,模型改進的方法等。本週主要講解支援向量機SVM的原理包括優化目標、大間隔以及核函式等SVM核心內容,以及SVM的使用。

 

 

目錄

 

1.優化目標

2.直觀上對大間隔的理解

3.大間隔分類器的數學原理

4.核函式1

5.核函式2

6.使用SVM

7.實驗


1.優化目標

  • 邏輯迴歸演算法回顧

邏輯迴歸假設函式:

z=\Theta ^{T}x,得到假設函式的影象如下:

假設我們現在有一個訓練樣本,接下來看一下邏輯迴歸到底在做什麼:

如果該樣本的標籤y=1,我們希望h_{\Theta }(x)\approx 1,即\Theta ^{T}x>>0 ;

如果該樣本的標籤y=0,我們希望h_{\Theta }(x)\approx 0,即\Theta ^{T}x<<0 ;

 

對於某一個訓練樣本(x,y),給出它的代價函式:

如果標籤y=1(希望\Theta ^{T}x>>0),此時上述代價函式將只有左邊第一項,繪製出此時的影象,如下所示:

其中的曲線代表邏輯迴歸的代價函式,SVM的代價函式對邏輯迴歸代價函式做了一些簡化,由兩條直線段構成,記為cost_{1}(z).

同理,如果標籤y=0(希望\Theta ^{T}x<<0),此時上述代價函式將只有右邊第二項,繪製出此時的影象,如下所示:

其中的曲線代表邏輯迴歸的代價函式,SVM的代價函式對邏輯迴歸代價函式做了一些簡化,由兩條直線段構成,記為cost_{0}(z).

 

邏輯迴歸代價函式:

由兩部分組成,代價和正則化懲罰項。基本形式為A+\lambda B,\lambda引數控制兩部分的權重。

SVM代價函式(優化目標):

與邏輯迴歸稍有不同,去除了常數項1/m,這對最優值的求解沒有影響;形式為CA+B,可以把C想象成1/\lambda,  C引數控制兩部分的權重。

 

與邏輯迴歸不同的是SVM的假設函式h_{\Theta }(x)不會輸出一個概率,而是直接進行分類。

首先通過最小化代價函式得到一組最優的引數,SVM的假設函式如下:

2.直觀上對大間隔的理解

SVM分類器也被叫做大間隔分類器,本小節將用直觀的影象,幫你理解這句話的含義。

  • SVM代價函式

左圖為cost_{1}(z)影象,右圖為cost_{0}(z)影象。為了使代價函式的值最小:

y=1時,我們希望\Theta ^{T}x\geqslant 1(而不僅僅是\Theta ^{T}x\geqslant 0),此時cost_{1}(z)=0。實際上預測時當\Theta ^{T}x\geqslant 0就能正確分類,此時假設函式h_{\Theta }(x)=1,但訓練時SVM有更高的要求,比如\Theta ^{T}x\geqslant 1,不是恰好正確分類,而是在正確分類基礎上還要構建一個安全間距。

y=0時,我們希望\Theta ^{T}x\leq -1(而不僅僅是\Theta ^{T}x\leqslant 0),此時cost_{0}(z)=0。實際上預測時當\Theta ^{T}x\leqslant 0就能正確分類,此時假設函式h_{\Theta }(x)=0,但訓練時SVM有更高的要求,比如\Theta ^{T}x\leq -1,不是恰好正確分類,而且在正確分類基礎上還要構建一個安全間距。

  • SVM決策邊界

假設我們把引數C設定的非常大,比如C=100000,此時為了使代價函式最小,那麼籃框中的第一項應該為0,才能把大引數C的增加效果抵消掉。也就是說此時:

當訓練樣本標籤y^{(i)}=1時,滿足\Theta ^{T}x^{(i)}\geqslant 1,才能使第一項為0;

同理,當訓練樣本標籤y^{(i)}=0時,滿足\Theta ^{T}x^{(i)}\leq -1,才能使第一項為0。

在這種情況下,我們通過選擇一個很大的引數C,使得上述優化問題以及約束條件變成如下形式:

當最小化這個關於引數\Theta的代價函式時,可以得到一個非常有趣的決策邊界:

上圖是一個線性可分的資料集,其中洋紅色、綠色和黑色的決策邊界都能把正負樣本分開;實際上利用SVM,會得到黑色的決策邊界,從直觀上來看,黑色決策邊界比其他2者更穩健,魯棒性更好。它不僅能正確分類,而且還可以以一個最大的安全間距進行分類,即它距離正負樣本的最小距離最大。

我們把決策邊界距離正負樣本的最小距離稱為間距,SVM可以得到間距最大的決策邊界,因此SVM也被稱作大間距分類器。

當引數C非常大時,我們可以對大間距分類器有一個直觀的理解,如上圖的黑色決策邊界所示,但是此時很容易受到異常點的影響:

當C非常大時,由於上圖左下角異常點的存在,決策邊界會從黑色直線變成洋紅色直線,這是我們不希望看到的。一般我們會把C設定的沒那麼大,此時他可以忽略異常點的影響,即使是線性不可分的情況,也可以得到上圖中黑色的大間距決策邊界。

可以把引數C想象成1/\lambda,當C非常大時,相當於\lambda非常小,此時容易出現高方差或過擬合的情況。

本小節,只是對大間距分類器有一個直觀的理解,下一小節將具體探討大間距分類器的數學原理。

3.大間隔分類器的數學原理

  • 向量內積回顧

現有u,v兩個列向量:

u^{T}v表示向量u,v的內積,從代數角度來看,u^{T}v=u_{1}v_{1}+u_{2}v_{2}

接下來我們從幾何角度看u^{T}v

將向量u,v視覺化,橫縱軸數值代表他們在各自座標軸上的分量。

||u||代表向量u的範數,即u的長度,||u||=\sqrt{u_{1}^{2}+u_{2}^{2}};

上圖中的p代表向量v在向量u上的投影長度,這個長度可正可負,取決於向量u,v的夾角。當夾角小於90時,p為正;當夾角大於90時,p為負。下圖為夾角大於90的情況:

此時u^{T}v=p\cdot ||u||,並且與之前代數角度獲得的內積值是一樣的。

  • SVM決策邊界

當引數C非常大時,我們可以對大間隔分類器有一個直觀的理解。此時的優化問題,變成如下形式:

對上述優化問題做一些簡化,假設\Theta _{0}=0,並且n=2,即只有兩個特徵,那麼該優化問題可以寫成如下形式:

對於\Theta ^{T}x^{(i)},根據之前向量內積的性質,可以表示成如下形式:

我們最終可以得到如下的優化問題:

其中p^{(i)}是樣本x^{(i)}在引數\Theta上的投影,依舊使用之前的簡化,\Theta _{0}=0,n=2.

首先我們來解釋一下SVM為什麼不會產生小間距(決策邊界到正負樣本間的最小距離)的決策邊界(下圖綠色直線):

上圖中,❌代表正樣本,藍圈代表負樣本;x^{(1)},x^{(2)}分別代表其中的某個正負樣本;綠色的直線是某一個決策邊界(由於\Theta _{0}=0,它會過原點),利用線性代數的知識,我們知道引數向量\Theta的方向與決策邊界是正交的;p^{(1)},p^{(2)}分別是正負樣本x^{(1)},x^{(2)}\Theta上的投影。

y^{(1)}=1時,由約束條件可知,p^{(1)}\cdot ||\Theta ||\geqslant 1,由上圖可知投影p^{(1)}(>0)非常小,這就要求||\Theta ||非常大,而這與優化目標最小化

||\Theta ||相悖;

同理,當y^{(2)}=0時,由約束條件可知,p^{(2)}\cdot ||\Theta ||\leq -1,由上圖可知投影p^{(2)}(<0)非常小,這就要求||\Theta ||非常大,而這與優化目標最小化||\Theta ||也相悖;

因此,綜上,SVM不會產生如上圖綠線所示的小間距決策邊界。

至於SVM為什麼會產生大間距的決策邊界(下圖綠色直線),也是一個道理:

y^{(1)}=1時,由約束條件可知,p^{(1)}\cdot ||\Theta ||\geqslant 1,由上圖可知投影p^{(1)}(>0)比較大,與之前相比,此時要求||\Theta ||可以小一些,這與優化目標最小化||\Theta ||相同;

同理,當y^{(2)}=0時,由約束條件可知,p^{(2)}\cdot ||\Theta ||\leq -1,由上圖可知投影p^{(2)}(<0)比較大,此時要求||\Theta ||可以小一些,這與優化目標最小化||\Theta ||也相同;

因此,綜上,SVM會產生如上圖綠線所示的大間距決策邊界。

之前的討論一直做了簡化,即\Theta _{0}=0,當\Theta _{0}\neq 0時,決策邊界將是一條不通過原點的直線,產生大間距決策邊界的分類效果是一樣的。

4.核函式1

通過核函式改造SVM演算法,得到新的特徵變數,來構造複雜的非線性分類器:

考慮下圖的資料集:

很顯然該資料集是線性不可分的,如果想得到如上圖所示的決策邊界,僅用原始的兩個輸入特徵是不夠的。在這種情況下,可以增加新的多項式特徵,比如:

我們用符號f_{i}為新的特徵編號:

現在問題在於,多項式的組合有很多,是否存在一種最好的特徵選擇。之前學習邏輯迴歸時,對於這種情況,一般選擇若干個不同的組合方式,得到不同的假設函式,通過在驗證集上進行模型選擇,從而選擇最好的那一個。而在SVM中我們可以通過核函式對原始輸入特徵進行對映,得到一組更好的新特徵。

  • Kernel

給定一個訓練樣本的輸入變數x(有兩個原始輸入特徵x_{1},x_{2},我們接下來會通過一些標記基於原始輸入特徵計算出一些新的特徵。其中標記數=新的特徵數,假設有三個標記l^{(1)},l^{(2)},l^{(3)}(至於標記具體如何選,下節課再講解),此時會產生三個新特徵f_{1},f_{2},f_{3}.

其中每一個新特徵,都是原始輸入特徵向量與標記向量的相似度計算值,每一個標記向量都會產生一個新特徵。我們把這個相似度函式稱為核函式,而上圖中採用的是高斯核函式。

  • 核函式和相似度

接下來我們看一下核函式到底做了什麼:

核函式實際上在衡量樣本的原始輸入特徵向量x和表標記向量l的距離。當2者非常接近時,返回的相似度值接近於1,產生的新特徵也接近於1;當2者差距非常大時,返回的相似度值接近於0,產生的新特徵也接近於0;

繪製核函式影象:

影象z軸代表相似度值,即f1.最高點在地面的投影座標即為標記l^{(1)}的位置(3,5)。當特徵向量x在(3,5)時,此時2者相似度最大為1,當x向周圍移動時,相似度會減小。

接下來,觀察一下\sigma值對核函式的影響:

\sigma比較小時,影象中突起的部分會比較窄,當xl^{(1)}外移動時,相似度下降的會比較快;

\sigma比較大時,影象中突起的部分會比較寬,當xl^{(1)}外移動時,相似度下降的會比較慢。

  • 假設函式

通過核函式我們對原始特徵向量x進行對映,得到新的特徵向量ff的維度等於標記向量的數量。上例中我們使用了3個標記向量,所以會得到三個新特徵,此時的假設函式如下:

假設對於新的假設函式已經通過訓練得到了一組最優的引數取值:\Theta _{0}=-0.5,\Theta _{1}=1,\Theta _{2}=1,\Theta _{3}=0.接下來對新的樣本進行預測:

對於第一個新樣本,上圖洋紅色的標記,它距離標記l^{(1)}比較近,離l^{(2)}l^{(3)}比較遠,此時:

它會被預測為正類。

對於第二個新樣本,上圖藍色的標記,它距離標記l^{(1)}l^{(2)}l^{(3)}都比較遠,此時:

它會被預測為負類。

最後你會發現,對於一個新樣本只要接近標記l^{(1)}l^{(2)}就會被預測為正類,否則為負類。那麼,此時訓練得到的決策邊界可能如下圖所示:

5.核函式2

  • 如何選擇標記l

實際上,對於一個機器學習問題,每個樣本的輸入特徵變數x都對應一個標記向量l,二者是一樣的;如果有m個訓練樣本,將會有m個標記向量。

對於每一個樣本來說,得到的新的特徵變數的不同維度,實際上在描述該樣本與樣本集中其他樣本的距離。

  • SVM with Kernels

對於一個訓練集,首先選擇標記點:

對於一個樣本的輸入特徵x,對其做如下對映,得到新的輸入特徵f:

對於一個訓練樣本(x^{(i)},y^{(i)}),對其輸入特徵x^{(i)}做上述對映,得到新的輸入特徵f^{(i)}:

這樣原始輸入特徵就從n+1維,對映成了m+1維(其中的+1指偏置項,恆等於1)。

  • SVM with Kernels的假設函式和代價函式

首先對原始輸入特徵x通過核函式對映為新特徵f,然後用新的代價函式進行訓練,得到最優的引數後,再帶入新的假設函式進行預測。

使用核心後的假設函式還稍有些不同,對於後一項可以表示為:

\sum \Theta_{j}^{2}=\Theta ^{T}\Theta=||\Theta ||^{2} (此時忽略\Theta _{0}),但是\Theta的維度是m,即等於訓練樣本的數量,當訓練樣本非常多時,計算成本是很高的,所以此時的代價函式的後一項實際上為:\Theta ^{T}M\Theta,來提高執行效率,矩陣M的選擇和使用的核函式有關。

當使用SVM時,不必擔心代價函式如何編寫程式碼,也不建議自己編寫程式碼,直接呼叫別人已經寫好的程式包,裡面已經包含了許多優化技巧。

  • SVM引數

6.使用SVM

呼叫成熟的優化演算法來求解SVM的引數,不要自己寫程式碼:

當使用上述軟體包時,需要考慮兩個問題:

一種做法是不使用核函式,n比較大,m比較小的情況:

也可以使用核函式(高斯核函式),適用於n比較小,m比較大時:

如何選擇由具體情況決定,後面會詳細討論。

 

高斯核函式也可以直接呼叫軟體包,下圖中輸入是兩個向量,輸出為一個實數:

在使用高斯核函式之前,一定要對原始輸入特徵進行縮放:

否則,如上圖所示,特徵不同分量的取值範圍差異很大的話,不同特徵分量對計算新特徵的影響程度是不同的。

  • 核函式的選擇

並不是所有的核函式都可以用在SVM上,只有滿足莫塞爾定理的核函式才可以。除了之前提到的高斯核函式和線性核函式之外,還有如下的核函式也滿足莫塞爾定理:

不過這些核函式都不太常用,其中多項式核函式的形式可以有多種,它有constant和degree兩個引數,效果不是很好。

  • 使用SVM進行多分類

許多SVM的軟體包都實現了多分類的函式,可以直接呼叫。

除此之外,也可以採取之前講解的利用邏輯迴歸實現多分類的方案:對於一個多分類,等價於做多次2分類,每次把其中的一個類別作為正類,其餘類別為負類,最終預測時,看新樣本屬於哪個正類的假設函式值最大,就屬於哪個類別。

  • 邏輯迴歸 vs. SVMs

邏輯迴歸和不帶核函式的SVM很相似:

SVM雖然效果可能不如神經網路,但是訓練速度很快,有很多成熟的軟體包,神經網路訓練很慢;而且SVM是一個凸優化問題,一定可以得到全域性最優解,神經網路可能得到區域性最優解(對於NN來說,是一個不大不小的問題)

7.實驗

第七週實驗