code

2017年3月1日 星期三

AI筆記21 - Perceptron

classification problem

classification是要從一些label過的learning data,train出一個classifier(decision boundary):


而perceptron是classification方法中的一種,模擬大腦神經元的運作。

Perceptron (最簡單的neural network algorithm)

perceptron是一個linear classifier,也就是能找出一個線性的decision boundary function:
它只能對能linear separable的data 作用!

perceptron是模仿神經元:

一個神經元有許多神經連結,所以能接收很多訊號(real value),而神經元將所有的input 做linear combination權重之後,output單一real value經過某個step function (thresholding)產生1或-1的binary value,此時一個classifier就完成了。

所以某個sample feature vector假設有d-dimensional,可以想做有d條神經連結到某個判斷此feature的神經元,每條神經負責傳遞某個element in feature。

演算法


d元一次的方程式同樣形成一個hyperplane,learning的過程是不斷地收斂直到hyperplane正確分隔出data set。

在步驟五用一個簡單的判斷來看我們的classifier是否造成error,記得f(xi)不是1就是-1,而label也是1或-1(假設只有兩個class),所以就是看sign是否相同,反正就是給一個category就對了。

步驟六中比較奇怪的是怎麼修正wj的方式?(xi應該要是xij才對)
這個公式似乎來自調整hyperplane的法向量,進而調整其在空間中的傾斜角度等,因為課堂中沒有證明,看得霧颯颯的,先假設成立吧,以下這篇blog有提到一下:

http://cpmarkchang.logdown.com/posts/189108-machine-learning-perceptron-algorithm

總之如果yi應該為+1,但是f(xi)卻判斷為-1的話,代表w*xi未通過STEP function threshold,我們就加xi回去給權重係數。反之則從權重係數減去xi。先不論為什麼是加減xi,某些變種收斂方式改成+-1,所以這邊應該只跟收斂速度有關,不見得有絕對的數學意義。

有趣的是boolean functions也可以用perceptron來classify,因為多數是“perfectly linearly separable”:

左邊把OR function的truth table標示在平面上,的確是linear separable
右邊的XOR不可能找出linear classifier:


沒有留言:

張貼留言