1. 程式人生 > >機器學習之感知機

機器學習之感知機

今天,我將和大家一起學習機器學習中的感知機演算法。

感知機(perceptron)是二類分類的線性分類模型,其輸入為例項的特徵向量,輸出為例項的類別,取+1和-1二值。感知機對應於輸入空間(特徵空間)中將例項劃分為正負兩類的分離超平面。因此,感知機學習旨在求出將訓練資料進行線性劃分的分離超平面。為此,匯入基於誤分類的損失函式,利用梯度下降法對損失函式進行極小化,求得感知機模型,從而實現利用得到的感知機模型對新的輸入例項進行分類。

感知機演算法由Rosenblatt提出,是神經網路與支援向量機的基礎。下表列出了感知機與支援向量機的一些異同:

下面,我們正式進入感知機演算法的學習。我們將從三個方面來學習感知機,分別是:

1、感知機模型

2、感知機的學習策略

3、感知機學習演算法

首先,我們來學習感知機的模型。

如下圖所示,感知機分為學習和分類兩個過程。在學習過程中,對於訓練資料集

,我們通過學習系統得到感知機模型;在分類過程中,對於新的輸入例項,我們利用分類系統,通過感知機模型,得到新的輸入例項的類別

感知機模型就是如下這個函式:

其中,w和b為感知機模型引數,叫作權值(weight)或權值向量(weight vector),叫作偏置(bias),表示w和x的內積。是符號函式,即

感知機對應於特徵空間中的一個超平面S,其中w是超平面的法向量,b是超平面的截距。這個超平面將特徵空間劃分為兩個部分。位於兩部分的點(特徵向量)分別被分為正、負兩類。因此,超平面S稱為分離超平面(separating hyperplane),如下圖所示:

接下來,我們學習感知機的學習策略

由上面可知,感知機學習的目標是求得一個能夠將訓練資料集正例項點和負例項點完全正確分開的分離超平面。為了找出這樣的超平面,即確定感知機模型引數w,b,需要確定一個學習策略,即定義(經驗)損失函式並將損失函式極小化。

損失函式的選擇有:

①誤分類點的總數(這樣的損失函式不是引數w,b的連續可導函式,不易優化)

②誤分類點到超平面S的總距離(這是感知機所採用的)

感知機的損失函式使用第二種,即誤分類點到超平面S的總距離

因此,感知機學習的策略是在假設空間中選取使損失函式最小的模型引數w,b,即可得感知機模型。

最後,我們學習感知機學習的演算法

感知機學習演算法採用隨機梯度下降法(stochastic gradientdescent),對感知機的損失函式進行求導,即可得損失函式的梯度,

感知機演算法具體可描述為:

我們用動態圖來看一下具體的過程:

圖中圓圈代表負類,叉叉代表正類,我們選取初值0後,可得感知機模型0,在訓練集中選取資料 ,如果 ,則用梯度下降法對w和b進行更新,即,直至訓練集中沒有誤分類點。

在感知機演算法的求解過程中,可能會出現過擬合現象,即求得的感知機模型對訓練資料有很好的分類能力,感知機模型過於複雜,但對未知測試資料的分類能力並不好。比如下圖中的感知機模型就過於複雜,導致了過擬合現象。

我們來看一下模型複雜度與預測誤差的關係。隨著模型複雜度的增加,訓練誤差持續降低;測試誤差先降低,降到一個最低點之後,又開始上升。為了使得到的感知機模型最好,應使得測試誤差最小,即圖中紅線位置。

為了避免過擬合現象的發生,我們可以採用交叉驗證方法。交叉驗證是指重複地使用資料;把給定的資料進行切分,將切分的資料集組合成為訓練集與測試集,在此基礎上反覆地進行訓練、測試以及模型選擇。交叉驗證法有以下三種類型:

① 簡單交叉驗證

首先隨機地將已給資料分為兩部分,一部分作為訓練集,另一部分作為測試集(例如,70%的資料為訓練集,30%的資料為測試集);然後用訓練集在各種條件下(例如,不同的引數個數)訓練模型,從而得到不同的模型;在測試集上評價各個模型的測試誤差,選出測試誤差最小的模型。

② S折交叉驗證

首先隨機地將已給資料切分為S個互不相交的大小相同的子集;然後利用S-1個子集的資料訓練模型,利用餘下的子集測試模型;將這一過程對可能的S種選擇重複進行;最後選出S次評測中平均測試誤差最小的模型。

③ 留一交叉驗證

S折交叉驗證的特殊情形是S=N,N是給定資料集的容量。

好了,以上就是今天的全部內容。