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

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

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

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

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

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

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

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

其中M為誤分類點的數目。
當我們已經有了一個目標是最小化損失函數,如下圖:

我們就可以用常用的梯度下降方法來進行更新,對w,b參數分別進行求偏導可得:

那么我們任意初始化w,b之后,碰到誤分類點時,采取的權值更新為w,b分別為:

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

其中η為學習率在0-1之間。
初始化數據


循環迭代更新






雷鋒網相關閱讀:
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。