《統計學習方法》筆記--感知機

感知機概述

感知機是二類分類的線性模型,輸入爲實例的特徵向量,輸出爲實例的類別,取+1和-1兩個值。感知機本質對應於輸入空間的一個超平面,通過將正負兩類通過一個超平面劃分開來,屬於判別式模型。

感知機模型

假設輸入空間(特徵空間)是 χRn\chi \subseteqq R^n 輸出空間是 y={+1,1}y=\{+1,-1\} 。輸入xχx\in \chi表示實例的特徵向量,對應於輸入空間的點;輸出$ y \in Y$表示實例的類別。由輸入空間到輸出空間的如下函數 f(x)=sign(wx+b) f(x)=sign(w \cdot x +b) 稱爲感知機。其中 wwbb稱爲感知機模型參數, wRnw\in R^n 叫做權值或者權重向量,bRb\in R 叫做偏置,wxw\cdot x 表示wwxx的內積,signsign是符號函數,即sign(x)={+1,x01, x<0sign(x)=\left\{\begin{array}{cc}+1, & x \geqslant0 \\-1, & \ x<0\end{array}\right.

感知機學習策略

數據集的要求

運用感知機模型首先要求數據集是線性可分的,即通俗的說就是對於給定的數據集,存在這樣一個超平面,能夠將數據集的正實例點(y=+1)和負實例點(y=-1)完全正確的劃分到超平面的兩側,這樣就稱爲數據集是線性可分的。

形式化定義:

給定一個數據集,T={(x1,y1),(x2,y2)...(xN,yN)}T=\{(x_1,y_1),(x_2,y_2)...(x_N,y_N)\} 其中 xiχ=Rn,yiγ={+1,1},i=1,2,...N,x_i \in \chi=R^n,y_i \in \gamma=\{ +1,-1\},i=1,2,...N,如果存在某個超平面S,對所有yi=+1y_i=+1的實例iiwxi+b>0w \cdot x_i+b>0,對所有yi=1y_i=-1的實例iiwxi+b<0w \cdot x_i+b<0。則稱數據集T爲線性可分數據集,否則爲線性不可分。

學習策略(損失函數最小化策略)

感知機sign(wx+b)sign(w\cdot x+b)學習的損失函數定義爲:L(w,b)=xiMyi(wx+b)L(w,b)=-\sum_{x_i \in M}y_i(w\cdot x+b)其中MM爲誤分類點的集合。

這個損失函數的基本思想就是通過衡量誤分類點距離超平面的總距離來計算,實際上計算了感知機器學習的經驗風險函數。直觀來看,如果沒有誤分類點,損失函數就是0,而且誤分類點越少,離超平面越近。損失函數值就越少。

注:任意一點到超平面的距離公式爲1wwx+b\frac{1}{||w||}|w\cdot x+b|這裏w||w||wwL2L_2範數。在構造感知機學習損失函數時不考慮1w\frac{1}{||w||}

感知機學習算法

感知機學習算法有一個直觀的理解,當一個實例被誤分類時其位於分離超平面錯誤的一側,我們通過調整wbw,b的值使得超平面向該誤分類點的一側移動,以減少該誤分類點與超平面的距離,直到超平面越過該點,使其被正確分類。

原始形式

輸入:訓練數據集T={(x1,y1),(x2,y2)...(xN,yN)};T=\{(x_1,y_1),(x_2,y_2)...(x_N,y_N)\};其中 xiχ=Rn,yiγ={+1,1},i=1,2,...Nx_i \in \chi=R^n,y_i \in \gamma=\{ +1,-1\},i=1,2,...N;學習率η(0<η1)\eta(0<\eta\leqslant1)

輸出:w,b;w,b;感知機模型f(x)=sign(wx+b)f(x)=sign(w\cdot x+b)

(1)選取初始值w0,b0w_0,b_0
(2)在訓練集中選取數據(xi,yi)(x_i,y_i)
(3)如果yi(wxi+b)0y_i(w\cdot x_i+b)\leqslant0,ww+ηyixiw\gets w+\eta y_ix_i bb+ηyi b\gets b+\eta y_i
(4)轉至(2),直至訓練集中沒有誤分類點

對偶形式

輸入:線性可分數據集T={(x1,y1),(x2,y2)...(xN,yN)};T=\{(x_1,y_1),(x_2,y_2)...(x_N,y_N)\};其中 xiχ=Rn,yiγ={+1,1},i=1,2,...Nx_i \in \chi=R^n,y_i \in \gamma=\{ +1,-1\},i=1,2,...N;學習率η(0<η1)\eta(0<\eta\leqslant1)

輸出:α,b;\alpha,b;感知機模型f(x)=sign(j=iNαjyjxjx+b)f(x)=sign(\sum_{j=i}^{N}\alpha_jy_jx_j\cdot x+b),其中α=(α1,α2,...αN)T\alpha = (\alpha_1,\alpha_2,...\alpha_N)^T

(1)α0,b0\alpha\gets0,b\gets0
(2)在訓練數據集中選取數據(xi,yi)(x_i,y_i)
(3)如果yi(j=1Nαjyjxjxi+b)0y_i(\sum_{j=1}^{N}\alpha_jy_jx_j\cdot x_i+b)\leqslant0,αiαi+η \alpha_i\gets\alpha_i+\eta bb+ηyi b\gets b+\eta y_i
(4)轉至(2)直至沒有誤分類數據

聯繫與區別

在最開始看到兩種形式的感知機學習算法時有點不明白爲什麼會在原始形式上發展出對偶形式,因爲雖然對偶形式的算法可以通過提前計算一些變量來獲得一定的加速,但是本質上還是要迭代更新權重來進行訓練。

後來明白這是由於從不同的角度去解決問題而給出的算法,對偶通俗理解即從不同角度去解答相似問題,但問題的解是相通的,甚至是一樣的。另外感知機的對偶算法在特徵維度很高時提升性能的效果很明顯,由於可以提前計算出xjyjx_j\cdot y_j這樣每次在判斷誤分類時可以直接查找表中數據,不用重新計算兩者內積。例如對於特徵向量維度爲N的數據集,可以把每次的NNN\cdot N運算降低到NN
詳細可以閱讀知乎回答如何理解感知機學習算法的對偶形式?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章