概念
感知機是一個二類
分類的線性分類器
,是支持向量機和神經網絡的基礎。它假設數據是線性可分
的,目標是通過梯度下降法
,極小化損失函數
,最後找到一個分割超平面
,可以將數據劃分成兩個類別。
決策函數 如下:
f(x)=sign(w⋅x+b)
其中
w 是權值(weight)參數,
b 是偏置項(bias)。對
n 維來說,線性方程
w⋅x+b=0 對應特徵空間的一個超平面,其中
w 是超平面的法向量,
b 是超平面的截距。
w⋅x 是求內積的意思,即各項對應相乘後求和。
在二維空間,即直角座標系中,上面的超平面變成了高中學過的直線的解析式。
{w=(A, B), x=(x1, x2)=(x, y)w⋅x+b=0→ Ax+By+b=0
函數 sign 就是符號函數,定義如下:
sign(t)={+1,t≥0−1,t<0
即,給出特徵空間的一個例子x={x1,x2,x3,...,xn} ,通過上面的公式得出該輸入的分類結果是f(x) 。對二類分類來說,要麼是正例,要麼是反例。
訓練一個感知機模型
要建立感知機模型,只要確定參數 w 和 b 就行了。我們通過梯度下降法
,不斷的調整兩個參數,向最優解靠近。
怎麼評價現在的兩個參數到底是好是壞呢?我們量化一個損失函數(loss function),函數值越小,說明離最好的模型越近。在感知機這裏,最好的解就是最合適的分割超平面,能把數據分割的最好。
定義 損失函數
L(w,b)=−∑xi∈Myi(w⋅xi+b)
其中
(xi,yi) 爲分類錯誤的一個樣例,
M 爲所有分類錯誤樣例的集合。所以在訓練集中沒有樣例分類錯誤的時候,損失函數的最小值就收斂到 0 了。前面加一個負號,是因爲分類錯誤的標籤
yi 和 分類器預測的分類結果
sign(w⋅xi+b) ,正好相反,一個 +1,一個是 -1.
損失函數 L(w,b) 是非負的,且是 w , b 的連續可導函數。其中相加項的意義涉及“函數間隔”和“幾何間隔”的概念,見支持向量機的定義。
梯度下降
下面講感知機的具體學習算法,主要涉及梯度下降法來修改參數 w 和 b 。
我們要極小化損失函數,即求
minw,bL(w,b)=−∑xi∈Myi(w⋅xi+b)
對 w 和 b 分別求偏導數如下:
⎧⎩⎨⎪⎪⎪⎪⎪⎪∇wL(w,b)=−∑xi∈Myixi∇bL(w,b)=−∑xi∈Myi
更新的時候,直接隨便選一個誤分類的點 (xi,yi) ,按下面的公式更新,
{wb←w+η yixi←b+η yi
其中 η (0<η≤1) 表示學習率,或者步長。
整個過程是這樣子的,每來一個樣本 (xi,yi) ,計算若
yi(w⋅xi+b)≤0,
說明誤分了,要用梯度下降更新權重
w,b 。若大於0,說明分類正確,不用管。這樣直到遍歷整個樣本都沒有誤分點,算法停止。
對偶形式
通過觀察上面梯度下降的更新公式,發現參數 w 最終的取值,其實是初值(初值爲0可以忽略)加上每個樣本的某個整數倍,具體如下:
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪wb=∑i=1Nαiyixi=∑i=1Nαiyi
其中,αi≥0, i=1,2,...,N 表示每個樣本點在更新過程中被誤分類的次數。從 α 中我們還可以看出來,若該值越大,則說明對應的樣本點被誤分的次數越大,也就離超平面越近,因此難分類。
判斷是否屬於誤分點時,我們用公式
yi(∑j=1Nαjyjxj⋅xi+b)≤0
來判斷。對比之前的
w,b 版本,其實只是把
w 用
α 代替而已。注意後面的點乘,即內積,我們可以先事先計算好並存儲在Gram矩陣中(
G=[xi⋅xj]N×N ),以減少實時計算量。
書裏沒有寫爲何要有對偶模式,我覺得可能是爲了後面的支持向量機的對偶形式做鋪墊。對偶形式的計算量並不比原始形式低,反而更麻煩一點,但是 [xi⋅xj] 內積可以更換成核函數 K(xi,xj)=ϕ(xi)ϕ(xj) ,從而能處理非線性可分的問題。