感知機(perceptron)是1957年由Rosenblatt提出,是神經網絡與支持向量機的基礎。感知機是二分類的線性可分類模型,其輸入爲實例的特徵向量,輸出爲實例的類別,取+1和-1兩個值。感知機只能應用到線性可分的數據集當中,對於線性不可分的問題感知機無法解決,其原理其實很簡單:在特徵空間中找到一個超平面將兩類樣本劃分到超平面兩側,實現樣品種類的劃分。
1.感知機模型
假設輸入空間是,輸出空間是,輸入表示實例的特徵向量,對於輸入空間的點,輸出表示實例的類別,感知機模型可以如下形式:
其中w和b爲感知機的參數,w爲權重(weight),b爲偏置(bias),是w與x的內積,sign爲符號函數,如下
其函數形式如下圖所示:
感知機是一種線性分類器,屬於判別模型。感知機有如下的幾何解釋:
線性方程對應於特徵空間的一個超平面S,其中w是超平面的法向量,b是超平面的截距,這個超平面將特徵空間劃分爲兩個部分,位於超平面兩側的點被分爲+1、-1兩類。因此,超平面S稱爲分離超平面,如下圖所示:
2.感知機學習策略
2.1感知機的線性可分性
對於給定數據集T,如果存在超平面S:能夠將數據集的正負實例完全正確地劃分到超平面兩側,即對所有實例存在:,則稱數據集T是線性可分數據集;否則,稱數據集T線性不可分。
2.2感知機學習策略
假設數據集是線性可分的,我們需要找到一個超平面將數據集完美劃分,而超平面受參數w和b控制,因此我們需要找到合適的w和b使超平面完美劃分兩類數據。如何找到這兩個合適的參數呢,這就要用到我們前面說的損失函數,將損失函數作爲評價標準,極小化損失函數。
損失函數的選擇也是一個問題,對於這個問題我們最自然的選擇就是選擇誤分點數作爲損失函數,但是由於這個損失函數對w和b這兩個參數不是可導的,導致後面無法優化w和b兩個參數,因此不選擇使用。針對感知機問題常選用的損失函數是誤分點到超平面的距離。
下面給出輸入空間中一點到超平面的距離:
這裏||w||是w的L2範數(平方和再開方)。
其次上面已經提到了對於所有正確分類的點都有:,那麼對於誤分點自然存在:,因此誤分點到超平面的距離是:
則所有誤分點到超平面的距離和爲:
忽略1/||w||,就得到感知機的損失函數(1/||w||是一個常數,並不影響,可以直接忽略):
可以看出損失函數是對全部誤分點到超平面距離求和,是非負的,當點全部正確分類時,損失函數爲0,誤分類點越少,損失函數越少。
3感知機學習算法
根據上面的推導可以得到感知機學習問題轉化爲求解上述損失函數的最優化問題,最優化的方式是通過隨機梯度下降法,感知機學習算法包括原始形式和對偶形式兩種。
3.1感知機學習算法的原始形式
感知機學習算法的損失函數如下:
損失函數爲所有誤分點到超平面的距離,下面我們採用隨機梯度下降法最優化w和b兩個參數。具體過程如下:
(1)隨機選取初值和;
(2)選取訓練數據中一組數據();
(3)如果,求解損失函數對兩個參數的梯度:和,對w和b進行更新:
(4)轉至(2),直至訓練集中沒有誤分點。 以上便是感知機算法原始形式的實現過程。
3.2感知機學習算法的對偶形式
首先介紹一下對偶:對偶規劃(dual programming)一類線性規劃問題,指由原線性規劃問題按如下對稱規律構成的新線性規劃問題:若原問題(P)爲maxz=CTX,滿足{AX≤b,x≤0 },則對稱的新問題(D)爲minw=yTb,滿足{yTA≥c,y≥0 },這裏y爲m維列向量,新問題(D)稱爲原線性規劃的對偶規劃。
簡單的將對偶形式就是將原始問題不好求解的問題轉化問另一種方便求解的形式。
感知機算法中的對偶形式的基本思想是,將w和b表示爲實例和的線性組合的形式,通過求解其係數而求得w和b。
在上面原始形式中,我們通過梯度下降算法對w和b進行更新:
經過n次更新後,w和b關於(xi,yi)的增量分別爲axiyi和ayi,這裏的,不難看出最後學習到的w和b分別可以表示爲:
下面給出感知機對偶形式的算法過程:
(1)a=0,b=0;
(2)選取訓練集中的數據(xi,yi);
(3)如果存在,則進行跟新:
(4)轉至(2)直至沒有誤分類數據。
對偶形式中的孫連實例僅僅以內積的形式出現,因此爲了方便,可以預先將訓練集中實例間的內積計算出來,並以矩陣形式存儲起來,這個矩陣就是所謂的Gram矩陣:
以上就是對感知機算法的全部內容的講解,這個算是對算法講解的第一篇文章,打字辛苦,希望大家能夠喜歡並支持一下~
下一篇文章將給出感知機的實現程序,有需要的小夥伴可以去取~
每天進步一點點~