一, Perceptron
x = (x1, x2, ..., xd) ---- features
w = (w1, w2, ..., wd) ---- 未知(待求解)的權重
對於銀行是否發送信用卡問題:
perceptron 假設:
sign 是取符號函數, sign(x) = 1 if x>0, -1 otherwise
向量表示:
感知機(perceptron)是一個線性分類器(linear classifiers)。
線性分類器的幾何表示:直線、平面、超平面。
二, Perceptron Learning Algorithm (PLA)
感知機求解(假設空間爲無窮多個感知機;注意區分下面的普通乘法和向量內積,內積是省略了向量轉置的表示,因爲豆瓣不支持公式。。。)
初始w = 0 (零向量)。
第一步:找一個分錯的數據(xi, yi), sign(w*xi) != yi;
第二步:調整w 的偏差,w = w + yi*xi;
循環第一、二步,直到沒有任何分類錯誤, 返回最後得到的w。
實際操作時,尋找下一個錯誤數據可以按照簡單的循環順序進行(x1, x2, ..., xn);如果遍歷了所有數據沒有找到任何一個錯誤,則算法終止。注:也可以預先計算(如隨機)一個數據序列作爲循環順序。
以上爲最簡單的PLA 算法。沒有解決的一個基本問題是:該算法不一定能停止!
三, PLA 算法是否能正常終止
分兩種情況討論:數據線性可分;數據線性不可分。
注意PLA 停止的條件是,對任何數據分類都正確,顯然數據線性不可分時PLA 無法停止,這個稍後研究。
1, 我們先討論線性可分的情況。
數據線性可分時,一定存在完美的w(記爲wf), 使得所有的(xi, yi), yi = sign(wf*xi).
可知:
下面證明在數據線性可分時,簡單的感知機算法會收斂。
而且量向量夾角餘弦值不會大於1,可知T 的值有限。由此,我們證明了簡單的PLA 算法可以收斂。
四,數據線性不可分:Pocket Algorithm
當數據線性不可分時(存在噪音),簡單的PLA 算法顯然無法收斂。我們要討論的是如何得到近似的結果。
我們希望儘可能將所有結果做對,即:
尋找wg 是一個NP-hard 問題!
只能找到近似解。
Pocket Algorithm
與簡單PLA 的區別:迭代有限次數(提前設定);隨機地尋找分錯的數據(而不是循環遍歷);只有當新得到的w 比之前得到的最好的wg 還要好時,才更新wg(這裏的好指的是分出來的錯誤更少)。
由於計算w 後要和之前的wg 比較錯誤率來決定是否更新wg, 所以pocket algorithm 比簡單的PLA 方法要低效。
最後我們可以得到還不錯的結果:wg。