0
雷鋒網(wǎng)按:本文作者甄冉冉,原文載于作者個人博客,雷鋒網(wǎng)已獲授權(quán)。
感知機是二分類的線性分類模型,輸入為實例的特征向量,輸出為實例的類別(取+1和-1)。
感知機目的在求一個可以將實例分開的超平面,為了求它,我們用到基于誤分類的損失函數(shù)和梯度下降的優(yōu)化策略。
比如x表示n維的數(shù)據(jù),y表示數(shù)據(jù)的類別。則感知機公式可表示為:
f(x) = sign(wx + b)
其中w,b為模型參數(shù),w為權(quán)值,b為偏置。wx表示w,x的內(nèi)積。這里sign是激勵函數(shù):
sign(x)
該感知機超平面的線性方程為:
w*x + b = 0
它的幾何意義是:
該平面(w1x1 + w2x2 + b= 0)距離在軸上的坐標為:
(0 , -b/w2)
(-b/w1 , 0)
(后面的代碼會用到,這里提前說明下。)
這里再說明其他的一點知識并證明下 w為什么是超平面的法向量:
這里再補充點超平面的知識:
超平面分離定理是應用凸集到最優(yōu)化理論中的重要結(jié)果,這個結(jié)果在最優(yōu)化理論中有重要的位置。所謂兩個凸集分離,直觀地看是指兩個凸集合沒有交叉和重合的部分,因此可以用一張超平面將兩者隔在兩邊。
回歸正題:
我們將大于0的分為+1類,小于0的分為-1類。有些比如大于0的判斷為-1類或者相反則就產(chǎn)生了損失,剛開始第一反應就是用誤分類點的數(shù)目越少作為損失函數(shù),但是這樣的損失函數(shù)的w, b并不是連續(xù)可導,無法進行優(yōu)化。
于是我們想轉(zhuǎn)到另一種選擇,就是誤分類點到超平面的距離越短越好。距離公式如下:
如果忘記距離公式給你個提示:
而我們知道每一個誤分類點都滿足-yi(wx+b)>0
因為當我們數(shù)據(jù)點正確值為+1的時候,你誤分類了,那么你判斷為-1,則算出來(wx0+b)<0,所以滿足-yi(w*x+b)>0
當數(shù)據(jù)點是正確值為-1的時候,你誤分類了,那么你判斷為+1,則算出來(wx0+b>0),所以滿足-yi(wx+b)>0
則我們可以將絕對值符號去掉,得到誤分類點的距離為:
因為你知道,所以可以直接將絕對值去掉。那么可以得到總距離為:
不考慮w范數(shù)分之一(考慮和不考慮結(jié)果都一樣,經(jīng)過實驗證明),我們可以得到損失函數(shù)為:
其中M為誤分類點的數(shù)目。
當我們已經(jīng)有了一個目標是最小化損失函數(shù),如下圖:
我們就可以用常用的梯度下降方法來進行更新,對w,b參數(shù)分別進行求偏導可得:
那么我們?nèi)我獬跏蓟痺,b之后,碰到誤分類點時,采取的權(quán)值更新為w,b分別為:
整理下整個過程(比如二維平面):
a.選定初值w1,w2,b (相當于初始化了一個超平面)
b.在訓練集中選取數(shù)據(jù)(xi,yi)(任意抽取數(shù)據(jù)點,判斷是否所有數(shù)據(jù)點判斷完成沒有誤分累點了,如果沒有了,直接結(jié)束算法,如果還有進入c)
c.如果yi(w*xi+b)<0(說明是誤分類點,就需要更新參數(shù))
那么進行參數(shù)更新!更新方式如下:
其中η為學習率在0-1之間。
初始化數(shù)據(jù)
循環(huán)迭代更新
雷鋒網(wǎng)相關(guān)閱讀:
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。