統計學習方法筆記-感知機
感知機是一個二分類的監督模型,我們定義輸入空間x∈Rn,每一個x都是用向量表示。輸出空間y={+1,−1}. 我們希望通過訓練數據集合,學的權重參數w和偏置參數b,有:
f(x)=sign(wx+b)
sign函數是符號函數,表示如下:
sign(x)={+1,x≥0−1,x<0(1)
感知機(perceptron)模型的目的就是找打一個超平面wx+b=0,將所有的訓練數據分開,感知機模型要求輸入數據線性可分。
學習模型
定義線性可分的數據,T={(x1,yx),(x2,y2)...,(xN,yN)},其中xi是n維的實數向量,y∈{+1,−1},如果找到一個平面wx+b=0將所有的數據正確分開,就返回這個平面。
對於任何一個機器學習的模型,我們一定要找到一個損失函數,之後優化這個損失函數,最後得到這個算法模型的參數。我們選擇損失函數的原則有,一可以表示這個模型的性能,二是能夠方便優化。例如對於感知機我們要求最後沒有誤分類的點,我們可以選擇最小化誤分類的點,但是這個函數不是凸函數。於是我們選擇最小化所有誤分類的點到超平面的距離.(損失函數的選擇是一個技術活)。點x0到超平面S的距離表示:
∣∣w∣∣1∣wx0+b∣(2)
對於所有誤分類的點(xi,yi),我們知道有wxi+b<0,由於yi∈{+1,−1}, 所以對於誤分類的點必有: −yi(wxi+b)>0。因此我們優化最小化所有誤分類的點集合M,
minw,bL(w,b)=−∣∣w∣∣1xi∈M∑yi(wxi+b)=−xi∈M∑yi(wxi+b)(3)
使用梯度下降方法,我們知道有:
ΔwL(w,b)=−xi∈M∑yixi(4)
ΔbL(w,b)=−xi∈M∑yi(5)
wt+1=wt−ηΔwL(w,b)(6)
bt+1=bt−ηΔbL(w,b)(7)
其中η(0<η≤1)是步長,又叫做學習率,表示參數更新的速度,建議不要太大,防止參數出現震盪,一般情況下學習率隨着迭代次數逐漸減小。注意,我們計算損失函數的時候,沒有加正則項,但是在實際的代碼實現過程中,一定要加上正則項,一般使用L1和L2正則。
算法
輸入:訓練數據集T={(x1,y1),(x2,y2),...,(xN,yN)},其中xi是n維實數向量,yi∈{+1,−1},學習率η(0<η≤1).
輸出: w,b, 感知機模型是f(x)=sign(wx+b).
- 選擇初始值w0,b0
- 遍歷數據集,(xi,yi)
- 如果−yi(wxi+b)>0,使用單個元素的梯度進行更新
w=w+ηyixi
b=b+ηyi
- 如果存在,就直接轉到2,知道所有的點都被正確分類。
算法的直觀解釋
算法的直觀解釋,就是如果發現一個實例點被誤分類,就將分離超平面向錯誤的一側進行移動,這樣就可以減少誤分類的點到超平面的距離(所有數據必須線性可分),直到所有點線性可分。從上面的計算中,我們可以看到我們每一輪(假設要T輪),都有進行N次向量計算,我們知道向量計算是很浪費時間的,我們的時間計算複雜度有TN次向量計算,一般情況下,數據量都會很大,例如T=100,000,N=10,000,000,這個時候的我們訓練模型是很慢的,以至於我們需要等待很長的時間。因此下面有一種對偶的解法,與此相對的,上面這種方法叫做原始解法,在支持向量機,我們會再次看到這種方法。
對偶形式
公式(4)-(7),我們可以看到,最後的參數w和b,w是yixi的線性組合,b是yi的線性組合,對於每一次修改我們可以設置步長αi, 則有:
w=i=1∑Nαiyixi(8)
b=i=1∑Nαiyi(9)
這裏,αi≥0,i=1,2,...,N, 表示第i實例點更新的個數,實例點更新的次數越多,表示它離超平面越近,越難正確分類。下面給出算法對偶形式,我們只需要用將w和b直接替換原始算法中的對應的更新公式即可。
輸入:訓練數據集T={(x1,y1),(x2,y2),...,(xN,yN)},其中xi是n維實數向量,yi∈{+1,−1},學習率η(0<η≤1).α=(α1,α2,...,αN).
輸出: α,b, 感知機模型是f(x)=sign(∑j=1Nαjyjxjx+b).
-
選擇初始值w0,b0
-
遍歷數據集,(xi,yi)
-
如果−yi(∑j=1Nαjyjxjxi+b)>0,使用單個元素的梯度進行更新, (這裏的更新公式,你可以使用(8)替換w化簡得到)
αi=αi+η
b=b+ηyi
-
如果存在,就直接轉到2,知道所有的點都被正確分類。
剛纔我們說過對對偶形式,比原始形式計算更快,這裏我們可以看到,最浪費時間的向量相乘(xj,xi),我們可以直接一次計算好,存儲起來,之後直接取出來即可,計算量大大降低。
總結
至此,感知機原理部分簡單結束,下面就是開始我們的代碼編寫,還是老規矩,C++和Python。
知乎: https://zhuanlan.zhihu.com/p/52467927
生活如此,問題不大。喵~