0
雷鋒網(wǎng)按:本文作者甄冉冉,原文載于作者個人博客,雷鋒網(wǎng)已獲授權(quán)。
感知機(jī)是二分類的線性分類模型,輸入為實例的特征向量,輸出為實例的類別(取+1和-1)。
感知機(jī)目的在求一個可以將實例分開的超平面,為了求它,我們用到基于誤分類的損失函數(shù)和梯度下降的優(yōu)化策略。
比如x表示n維的數(shù)據(jù),y表示數(shù)據(jù)的類別。則感知機(jī)公式可表示為:
f(x) = sign(wx + b)
其中w,b為模型參數(shù),w為權(quán)值,b為偏置。wx表示w,x的內(nèi)積。這里sign是激勵函數(shù):

sign(x)
該感知機(jī)超平面的線性方程為:
w*x + b = 0
它的幾何意義是:

該平面(w1x1 + w2x2 + b= 0)距離在軸上的坐標(biāo)為:
(0 , -b/w2)
(-b/w1 , 0)
(后面的代碼會用到,這里提前說明下。)
這里再說明其他的一點知識并證明下 w為什么是超平面的法向量:

這里再補充點超平面的知識:
超平面分離定理是應(yīng)用凸集到最優(yōu)化理論中的重要結(jié)果,這個結(jié)果在最優(yōu)化理論中有重要的位置。所謂兩個凸集分離,直觀地看是指兩個凸集合沒有交叉和重合的部分,因此可以用一張超平面將兩者隔在兩邊。
回歸正題:
我們將大于0的分為+1類,小于0的分為-1類。有些比如大于0的判斷為-1類或者相反則就產(chǎn)生了損失,剛開始第一反應(yīng)就是用誤分類點的數(shù)目越少作為損失函數(shù),但是這樣的損失函數(shù)的w, b并不是連續(xù)可導(dǎo),無法進(jìn)行優(yōu)化。
于是我們想轉(zhuǎn)到另一種選擇,就是誤分類點到超平面的距離越短越好。距離公式如下:

如果忘記距離公式給你個提示:

而我們知道每一個誤分類點都滿足-yi(wx+b)>0
因為當(dāng)我們數(shù)據(jù)點正確值為+1的時候,你誤分類了,那么你判斷為-1,則算出來(wx0+b)<0,所以滿足-yi(w*x+b)>0
當(dāng)數(shù)據(jù)點是正確值為-1的時候,你誤分類了,那么你判斷為+1,則算出來(wx0+b>0),所以滿足-yi(wx+b)>0
則我們可以將絕對值符號去掉,得到誤分類點的距離為:

因為你知道,所以可以直接將絕對值去掉。那么可以得到總距離為:

不考慮w范數(shù)分之一(考慮和不考慮結(jié)果都一樣,經(jīng)過實驗證明),我們可以得到損失函數(shù)為:

其中M為誤分類點的數(shù)目。
當(dāng)我們已經(jīng)有了一個目標(biāo)是最小化損失函數(shù),如下圖:

我們就可以用常用的梯度下降方法來進(jìn)行更新,對w,b參數(shù)分別進(jìn)行求偏導(dǎo)可得:

那么我們?nèi)我獬跏蓟痺,b之后,碰到誤分類點時,采取的權(quán)值更新為w,b分別為:

整理下整個過程(比如二維平面):
a.選定初值w1,w2,b (相當(dāng)于初始化了一個超平面)
b.在訓(xùn)練集中選取數(shù)據(jù)(xi,yi)(任意抽取數(shù)據(jù)點,判斷是否所有數(shù)據(jù)點判斷完成沒有誤分累點了,如果沒有了,直接結(jié)束算法,如果還有進(jìn)入c)
c.如果yi(w*xi+b)<0(說明是誤分類點,就需要更新參數(shù))
那么進(jìn)行參數(shù)更新!更新方式如下:

其中η為學(xué)習(xí)率在0-1之間。
初始化數(shù)據(jù)


循環(huán)迭代更新






雷鋒網(wǎng)相關(guān)閱讀:
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。