轉載自:http://blog.csdn.net/dream_angel_z/article/details/48915561
在機器學習中,感知機(perceptron)是二分類的線性分類模型,屬於監督學習算法。輸入爲實例的特徵向量,輸出爲實例的類別(取+1和-1)。感知機對應於輸入空間中將實例劃分爲兩類的分離超平面。感知機旨在求出該超平面,爲求得超平面導入了基於誤分類的損失函數,利用梯度下降法 對損失函數進行最優化(最優化)。感知機的學習算法具有簡單而易於實現的優點,分爲原始形式和對偶形式。感知機預測是用學習得到的感知機模型對新的實例進行預測的,因此屬於判別模型。感知機由Rosenblatt於1957年提出的,是神經網絡和支持向量機的基礎。
定義
假設輸入空間(特徵向量)爲
稱爲感知機。其中,參數w叫做權值向量weight,b稱爲偏置bias。
sign爲符號函數,即
在二分類問題中,
中間的直線即
線性分類器的幾何表示有:直線、平面、超平面。
學習策略
核心:極小化損失函數。
如果訓練集是可分的,感知機的學習目的是求得一個能將訓練集正實例點和負實例點完全分開的分離超平面。爲了找到這樣一個平面(或超平面),即確定感知機模型參數w和b,我們採用的是損失函數,同時並將損失函數極小化。
對於損失函數的選擇,我們採用的是誤分類點到超平面的距離(可以自己推算一下,這裏採用的是幾何間距,就是點到直線的距離):
其中
對於誤分類點
誤分類點到超平面的距離爲:
那麼,所有點到超平面的總距離爲:
不考慮
其中M爲誤分類的集合。這個損失函數就是感知機學習的經驗風險函數。
可以看出,隨時函數
學習算法
感知機學習轉變成求解損失函數
上圖就是隨機梯度下降法一步一步達到最優值的過程,說明一下,梯度下降其實是局部最優。感知機學習算法本身是誤分類驅動的,因此我們採用隨機梯度下降法。首先,任選一個超平面
極小化過程不是一次使M中所有誤分類點的梯度下降,而是一次隨機的選取一個誤分類點使其梯度下降。使用的規則爲
然後,隨機選取一個誤分類點,根據上面的規則,計算新的
其中
下面給出一個感知器學習的圖,比較形象:
由於上圖採取的損失函數不同,所以權值的變化式子有點區別,不過思想都是一樣的。
算法描述如下:
算法:感知機學習算法原始形式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
解釋:當一個實例點被誤分類時,調整w,b,使分離超平面向該誤分類點的一側移動,以減少該誤分類點與超平面的距離,直至超越該點被正確分類。
僞代碼描述:
對於每個
對於輸入的每個特徵都附加一個權值,然後將相加得到一個和函數f,最後該函數的輸出即爲輸出的y值。
實例
正樣本點:
負樣本點:
求感知機模型
解答思路:根據上面講解的,寫初始化權值w和偏置b,然後一步一步的更新權值,直到所有的點都分正確爲止。
解:
(1) 令
(2) 隨機的取一個點,如
計算得到
得到一個模型
(3)接着繼續,計算各個點是否分錯,通過計算得到,
得到線性模型:
一次下去,知道所有的點都有
……
……
……
最後求得
所以感知機模型爲:
即我們所求的感知機模型。
小結
感知器Perceptron在機器學習當中是相當重要的基礎,理解好感知器對後面的SVM和神經網絡都有很大的幫助。事實上感知器學習就是一個損失函數的最優化問題,這裏採用的是隨機梯度下降法來優化。
好吧,對於感知機的介紹,就到此爲止!在複習的過程中順便做下筆記,搜搜資料,整理整理,也算是給自己一個交代吧。希望本文章能對大家能有點幫助。