感知機演算法原理及推導
感知機(Perceptron)是二分類問題的線性分類模型,其輸入為例項的特徵向量,輸出為例項的類別,取+1和-1二值。
感知機於輸入空間(特徵空間)中將例項劃分為正負兩類的分離超平面,屬於判別模型。感知機於1957年由Rosenblatt提出,是神經網路和支援向量機的基礎。
在這裡,不用《統計學習方法》書中的變量表示方式,我們用表示資料集,一共個樣本,個維度,用表示資料集中的第個樣本,用表示標記(類別)向量,代表第個樣本的標記。
我們將要學習的目標函式是:
稱為感知機。其中,和為感知機模型引數,為權值向量,叫作偏置(bias),表示和的內積。是符號函式,即:
所以,在這裡,根據上式可知時為分類的邊界(超平面
對於資料集,如果能夠將資料集的正負樣例完全正確地劃分到超平面的兩側,即對於所有的例項有,對於所有的例項有,則稱這個資料集為線性可分的資料集,否則資料集線性不可分。
假設資料集是線性可分的,感知機的學習目標是求得一個能夠將訓練集正負樣例能夠完全分開的超平面。找出這樣的超平面,其實就是要確定感知機的模型引數和。所以我們首先要定義損失函式,再將其最小化。
感知機的損失函式是針對誤分類的點,最小化誤分類的點到超平面的距離,不斷進行調整。
對於輸入空間的任一一個樣例,所要計算的距離就是這個點到的距離。
根據點到直線的距離公式:
代入其中,可以得到:
進一步,進行簡化約等,可以得到如下式子:
其中,
對於誤分類的樣例來說,成立。所以誤分類的點到超平面的距離為:
假如對於所有的誤分類點集合為,那麼所有的誤分類點到超平面的總距離為:
不考慮,就得到了感知機的損失函式:
顯然,損失函式是非負的,如果沒有誤分類的點,損失函式的值為0。並且,誤分類點越少,誤分類點離超平面越近,損失函式越小。所以對於完全線性可分的資料集,當損失函式為0時,即達到了完全正確分類。
這個損失函式可以用梯度下降法來解,對於和的梯度用偏導可以直接求出來,具體過程不再贅述。
感知機學習策略
給定一個線性可分的資料集
T={(x1,y1),(x2,y2),...(xN,yN)} 其中xi∈X=Rn,yi∈Y={為了確定感知機模型的引數w和b,需要確定一個學習策略,即定義一個損失函式並將損失函式極小化。感知機採用的損失函式為誤分類點到超平面的總距離。首先寫出輸入空間Rn中任一點x0到分離超平面的距離 1∥w∥|w⋅x0+b| 這裡∥w∥ 是w的L2範數。
其次對於誤分類的資料(xi,yi)來說, −yi(w⋅xi+b)>0 因為當w⋅xi+b>0,yi=−1,而當w⋅xi+b<0,yi=+1。因此誤分類點xi到超平面的距離是 −1∥w∥yi(w⋅xi+b) 這樣假設誤分類點的集合為M,那麼所有誤分類點到超平面的總距離為 −1∥w∥∑xi∈Myi(w⋅xi+b) 不考慮1∥w∥,就得到感知機學習的損失函式 L(w,b)=−∑xi∈Myi(w⋅xi+b) 顯然,損失函式L(w,b)是非負的。如果沒有誤分類點,損失函式值為0,而且,誤分類點越少,誤分類點離超平面越近,損失函式的值越小。
感知機學習的策略是在假設空間中選取使損失函式最小的模型引數w,b。
感知機學習演算法
感知機學習演算法是誤分類驅動的,具體採用隨機梯度下降法。首先,任意選取一個超平面w0,b0,然後用梯度下降法不斷地極小化損失函式。極小化過程中不是一次使M中所有誤分類點的梯度下降,而是一次隨機選取一個誤分類點使其梯度下降。損失函式L(w,b)的梯度為
∇wL(w,b)=−∑xi∈Myixi ∇bL(w,b)=−∑xi∈Myi 隨機選取一個誤分類點(xi,yi),對w,b進行更新: w←w+ηyixi b←b+ηyi 式中η(0<η≤1)是步長,在統計學習中又稱為學習率。綜上所述,得到如下演算法(感知機學習演算法的原始形式)
輸入:訓練集T={(x1,y1),(x2,y2),...(xN,yN)},其中xi∈X=Rn,yi∈Y={+1,−1},i=1,2,3,...N
;學習率η(0<η≤