統計學習方法——感知機模型

劉炫320發表於2017-03-05

0. 寫在前面

在這一節,我們將要正式介紹第一個機器學習方法,感知機。在機器學習課程中,我們在神經網路的課程中,第一次接觸到了感知機。不過那時候,我們更多的是關注,感知機如何進行訓練,包括隨機梯度下降法和批梯度下降。但是對於其數學原理和正確性沒有具體的深究,只是對於其表現形式和具體執行步驟有了一定的瞭解。在這一節中,我們將對感知機的相關問題進行討論。

1. 感知機的定義

對於我們要討論的感知機,首先要明確什麼是感知機。感知機是二分類的線性分類模型,其輸入為例項的特徵向量,輸出為實力的類別,取+1和-1兩個值。
感知機對應於輸入空間中將例項劃分為正負兩類的分離超平面,屬於判別模型。其策略就是使損失函式最小化來進行求解,而具體演算法通常使用的是梯度下降法。這樣統計學習方法的三個要素模型、策略、演算法都大概清楚了。
那麼感知機的具體表現形式是什麼呢?具體見下:

f(x)=sign(wx+b)
f(x)=sign(w·x+b)

就是這麼簡單的一個函式,構成了神經網路和支援向量機的基本單元。不過其中x是向量表示的是輸入空間,w是引數向量,表示的是輸入空間中每一維度的權重,b是標量,表示的是偏置,w·x是內積。
其實感知機模型是由缺陷的,首先它的前提是整個訓練空間是線性可分的,也就是說會找到一個超平面,可以把正負樣本分開。另一方面,它是線性的,因此對於非線性模型它就沒有辦法去學習。不過線性可分的約束條件也可以讓它勝任很多問題了。

2.損失函式的選取

在經過基本的概念學習後,進入到了感知機學習策略的討論。在這一部分,討論的集中點在於損失函式的選取問題。到底是選取誤分類點數目作為衡量標準,還是選取誤分類點樣本到超平面S的總距離作為衡量標準,有一定的爭議。
這裡之所以存在爭議,有可能基於以下幾個認知上的不同。首先,這個損失函式是一個動態變化的過程,它的存在並不是為了衡量最終模型的好壞,而是指導整個模型的演化方向。換言之,損失函式一定要是連續可導,這樣就可以指導每次迭代的方向。另一個,由於感知機模型預設為訓練樣本線性可分,那麼經過有限次的迭代後,一定可以找到一個超平面,可以把正負樣本分開。這點我們在接下來的部分會講到。
對於感知機的損失函式,最終選取的是誤分類點樣本到超平面S的總距離作為其衡量標準。而點到面的距離公式我們高中就學過了:

d=1||w|||wx0+b|
d=\frac{1}{||w||}|w·x_0+b|

其中||w||說玄乎點是w的L2
L_2
正規化,說直白點,就是內積平方和開根號。
這樣,再配合我們的樣本標記yi
y_i
的+1、-1,就能夠寫出所有誤差的距離總和:
1||w||xiMyi(wxi+b)
-\frac{1}{||w||}\displaystyle\sum_{x_i∈M}y_i(w·x_i+b)

如果不考慮係數,則損失函式為:
L(w,b)=xiMyi(wxi+b)
L(w,b)=-\displaystyle\sum_{x_i∈M}y_i(w·x_i+b)

由於最終一定會得到一個誤分類點為0的超平面,那麼損失函式值最終會變為0,

3. 感知機學習演算法的原始形式

既然損失函式都確定下來了,那麼我們就知道我們的目標最終是使得損失函式極小化,這裡我們稱為梯度下降法。之所以稱為梯度下降,這就關係到我們在高數裡學到的一個名詞,梯度。在標量場中某一點的梯度指向標量場增長最快的方向,而梯度的長度是這個最大的變化率。在單變數的實值函式中,梯度和導數是一樣的,但是線上性函式中,則為線的斜率。這個在機器學習的課程中已經講過,就不在細說,樣例裡使用的隨機梯度下降法。
具體做法是取損失函式L(w,b)的梯度為:

wL(w,b)=xiMyixi
\triangledown_wL(w,b)=-\displaystyle\sum_{x_i∈M}y_ix_i

bL(w,b)=xiMyi
\triangledown_bL(w,b)=-\displaystyle\sum_{x_i∈M}y_i

而對於每一個誤分類點(xi,yi)
(x_i,y_i)
,對w,b進行更新的演算法為:
ww+ηyixi
w\leftarrow w+\eta y_ix_i

bb+ηyi
b\leftarrow b+\eta y_i

其中η
\eta
為學習速率,表示的是每一步改變的值的步長。該值越大,學習速度越快,但是有可能誤差越大。這就好比你走向一個珍珠,你每一步走的越大,你離珍珠近的速度越快,但是你錯過珍珠的可能性也就越大。
好了,下面給出具體的感知機原始演算法:
演算法2.1 感知機學習演算法的原始形式
輸入:訓練集T{(xi,yi
x_i,y_i
)},其中,i∈(0,N),yi
y_i
∈{+1,-1},0<η1
0<\eta\leq 1

輸入w,b;也就是感知器模型
(1)選取初值w0,b0
w_0,b_0

(2)在訓練集中選取資料xi,yi
x_i,y_i

(3)如果yi(wxi+b)0
y_i(w·x_i+b)\leq0

ww+ηyixi
w\leftarrow w+\eta y_ix_i

bb+ηyi
b\leftarrow b+\eta y_i

(4)轉至(2),直至訓練集中沒有誤分類點。

這個感知機的原始演算法,真正的意義是,對於每一個誤分類樣本,當發現誤分類點時,就根據誤分類點的位置來調整整個超平面。如果知道了這個意思,那麼後面的對偶形式也就理解了。

4. 感知機學習演算法的對偶形式

對於這個改進後的演算法形式,我們首先要知道什麼是對偶,就具體而言,感知機演算法的對偶形式,指的是和感知機演算法的原始形式一一對應,在步驟和最終結果上都能夠對應起來,但是是從不同角度來計算問題。通常我之前稱之為對映計算。但是和對映計算不同的是,對偶計算的兩個對應之間,沒有誰優誰劣之分,基本上是在同一表現形式下的不同運算手段而已。對映計算多半是由於原計算實在是過於複雜或無法計算,這時候才採用對映計算來進行解決。
好了,言歸正傳,我們來看一看對偶形式。由原始演算法,我們可以得出,假設修改了n次w和b,那麼,記αi=niη

\alpha_i=n_i\eta
,則:

w=i=1Nαiyixi
w=\displaystyle\sum_{i=1}^N\alpha_iy_ix_i

b=i=1Nαiyi
b=\displaystyle\sum_{i=1}^N\alpha_iy_i

這看起來好像沒啥區別,也就是把迭代w和b轉換為迭代α
\alpha
了。實際上是一一對應的。那麼對偶形式又具有什麼先進性呢?
演算法2.2 感知機演算法的對偶形式
輸入:訓練集T{(xi,yi
x_i,y_i
)},其中,i∈(0,N),yi
y_i
∈{+1,-1},0<η1
0<\eta\leq 1

輸入α
\alpha
,b;也就是感知器模型f(x)=sign(j=1Nαjyjxjx+b)
f(x)=sign(\displaystyle\sum_{j=1}^N\alpha_jy_jx_j·x+b)

(1)選取初值α0,b0
\alpha\leftarrow0,b\leftarrow0

(2)在訓練集中選取資料xi,yi
x_i,y_i

(3)如果yi(j=1Nαjyjxjxi+b)0
y_i(\displaystyle\sum_{j=1}^N\alpha_jy_jx_j·x_i+b)\leq0

αiαi+η
\alpha_i\leftarrow\alpha_i+\eta

bb+ηyi
b\leftarrow b+\eta y_i

(4)轉至(2),直至訓練集中沒有誤分類點。
粗看起來,是沒有什麼特別的地方,但是仔細管卡可以看到,對偶形式中訓練實力僅以內積的形式出現。可以使用Gram矩陣來現進行儲存,這樣,在每次訓練時,就不用再算一次了,樣本量少的時候,可能你不覺得什麼,如果樣本資料十分龐大的時候,這樣可以大大節省時間。
所謂的Gram矩陣,就是格拉姆矩陣G= [Gij],由函式的標準內積給出:
G=[xixj]NN
G=[x_i·x_j]_{N*N}

這樣就會方便許多了。

5.演算法的收斂性

對於感知機的演算法的收斂性,我們放到最後來講。在這一點上,仍然有人存有疑問,其最大的疑問在於,既然感知機的前提條件是樣本集線性可分,那麼肯定能夠找到這麼一條超平面,可以分開正負類樣本。
但是,演算法的收斂性並不是證明它能不能分,而是證明我們現在這個演算法是不是正確的,也就是說,最終的結果是不是通過有限次的迭代,能夠找到這麼一條超平面,可以分開正負類樣本。
具體的公式大家可以看一下定理2.1(Novikoff定理),我這裡簡要介紹一下它的思想過程,主要證明的是wk

w_k
wopt
w_{opt}
的上下界,然後推匯出k的上界的。
它用的是數學歸納法,有人說,這跟說白話不是一樣麼。其實不然,在數學歸納法中最重要的是要帶入你要證明的定律,這裡對於w和b的推廣時,就用到了梯度下降,因此才能證明,梯度下降法是正確的。

6. 習題解答

該習題由3題,真正需要解答的只有1題。
第一題是要驗證感知機為什麼不能表示異或。其實,感知機是線性模型,而且它的前提是訓練集是線性可分的,然而異或的訓練樣本集是線性不可分的,因此所有的線性模型都沒有辦法表示異或。不過幸運的是,2層感知器模型就可以很好的表示出異或,準確來講,兩層感知器模型可以表示出所有的邏輯運算子。
第二題是個驗證題,我們也不講了,自己可以動手試試看,其實我們在機器學習的課程中就已經學習過並且考試考過了。
第三題是要證明一下定理:樣本集線性可分的充分必要條件是正實力點集所構成的凸殼與負例項點集所構成的凸殼不相交。
大家可以參考http://blog.csdn.net/y954877035/article/details/52210734給出的答案。
具體來講就是通過必要性和充分性兩個方面來對定理給出證明。在證明的時候,尤其是知道充要條件正確的情況下,我們通常採用的反證法,即假設前提是正確的,推出矛盾,從而證明原假設錯誤。

7. 小結

通過以上的討論,我們對於感知機模型有了更為深刻的瞭解,對於統計機器學習也有了一定的認識,在接下來的討論中,我們將對k近鄰演算法進行相關討論。好了,下期見。

相關文章