閱讀797 返回首頁    go 阿裏雲 go 技術社區[雲棲]


幹貨|機器學習-感知機perceptron

什麼是感知機


a2a3c3214c359f2926cfb238c1ac4311b915e040

在機器學習中,感知機(perceptron)是二分類的線性分類模型,屬於監督學習算法。輸入為實例的特征向量,輸出為實例的類別(取+1和-1)。感知機對應於輸入空間中將實例劃分為兩類的分離超平麵。感知機旨在求出該超平麵,為求得超平麵導入了基於誤分類的損失函數,利用梯度下降法 對損失函數進行最優化(最優化)。感知機的學習算法具有簡單而易於實現的優點,分為原始形式和對偶形式。感知機預測是用學習得到的感知機模型對新的實例進行預測的,因此屬於判別模型。感知機由Rosenblatt於1957年提出的,是神經網絡和支持向量機的基礎。
定義

a2a3c3214c359f2926cfb238c1ac4311b915e040

c03e5848b9ea4ad5b5b472d6a768c077d892d641

48fee962c823e63d5913566da639428d364fce78



稱為感知機。其中,參數w叫做權值向量weight,b稱為偏置bias。w⋅x表示w和x的點積
e9407af92f543cb8a602a23c6fba0445edd0920esign為符號函數,即
059f9822c1eb3112155e00b06b92631f3fa67156在二分類問題中,f(x)的值(+1或-1)用於分類x為正樣本(+1)還是負樣本(-1)。感知機是一種線性分類模型,屬於判別模型。我們需要做的就是找到一個最佳的滿足w⋅x+b=0的w和b值,即分離超平麵(separating hyperplane)。如下圖,一個線性可分的感知機模型
49cdbdb2226b5fe1dd894d355fbb5bb72d97edb5中間的直線即w⋅x+b=0這條直線。線性分類器的幾何表示有:直線、平麵、超平麵。
學習策略
a2a3c3214c359f2926cfb238c1ac4311b915e040
核心:極小化損失函數。
如果訓練集是可分的,感知機的學習目的是求得一個能將訓練集正實例點和負實例點完全分開的分離超平麵。為了找到這樣一個平麵(或超平麵),即確定感知機模型參數w和b,我們采用的是損失函數,同時並將損失函數極小化。
對於損失函數的選擇,我們采用的是誤分類點到超平麵的距離(可以自己推算一下,這裏采用的是幾何間距,就是點到直線的距離):
452b7066e34b88d1b0a9affce6153725966fb395其中||w||是L2範數。
對於誤分類點(xi,yi)來說:
d6d5e6b28a4e79b7dcab7fb5e6a42d975c1f7334誤分類點到超平麵的距離為:
e6313bb276ec4bf08cf6513e779f5480c38c312a那麼,所有點到超平麵的總距離為:
400ea0af832f30ba8b37d2697f5d099796f78c792c6f67a610195188557c7eeccfaf60e67f48aec2b8d0c7406def3e222f007d030a2533fbb39544d1
其中M為誤分類的集合。這個損失函數就是感知機學習的經驗風險函數。
可以看出,隨時函數L(w,b)是非負的。如果沒有誤分類點,則損失函數的值為0,而且誤分類點越少,誤分類點距離超平麵就越近,損失函數值就越小。同時,損失函數L(w,b)是連續可導函數。
學習算法
a2a3c3214c359f2926cfb238c1ac4311b915e040
感知機學習轉變成求解損失函數L(w,b)的最優化問題。最優化的方法是隨機梯度下降法(stochastic gradient descent),這裏采用的就是該方法。關於梯度下降的詳細內容,參考wikipedia Gradient descent。下麵給出一個簡單的梯度下降的可視化圖:
a0213334cd98bcaa2fd736688729b4efbb04e14331412634addcffc8786833d43b456f5f8647f4c7e55a172305188d2c7664f16dfce38c2558c4351b
其中η是步長,大於0小於1,在統計學習中稱之為學習率(learning rate)。這樣,通過迭代可以期待損失函數L(w,b)不斷減小,直至為0.
下麵給出一個感知器學習的圖,比較形象:
3f4b060146a0bcdea21606e8665368c16567d681由於上圖采取的損失函數不同,所以權值的變化式子有點區別,不過思想都是一樣的。
算法描述如下:
算法:感知機學習算法原始形式
21321b0335d2d5085c2a91a0b4db26e48d7be66d
解釋:當一個實例點被誤分類時,調整w,b,使分離超平麵向該誤分類點的一側移動,以減少該誤分類點與超平麵的距離,直至超越該點被正確分類。偽代碼描述:
20325cd4d9c1656d93032a58ec5d6395061be802
對於每個w⋅x其實是這樣子的(假設x表示的是七維):
86c85f30c0188b8ecc3715586d656fe5bfcf9494
對於輸入的每個特征都附加一個權值,然後將相加得到一個和函數f,最後該函數的輸出即為輸出的y值。
實例
a2a3c3214c359f2926cfb238c1ac4311b915e040
a0e7925d6c87ef364edc6b2ac83a050a927aa20b
解答思路:根據上麵講解的,寫初始化權值w和偏置b,然後一步一步的更新權值,直到所有的點都分正確為止。
解:(1) 令w0=0,b0=0 
(2) 隨機的取一個點,如x1,計算y1(w0⋅x1+b0),結果為0,表示未被正確分類,根據下麵的式子更新w,b(此例中,我們將學習率η設置為1):

810f321ec1930174409e0ac8a659cc91982f8a598c9bf9959b3500fb651cba894da5a2711f11e31a
最後求得
3cca77eb284f005d5bccee298d1aad50cfbd81b3
所以感知機模型為:
beef0a4b61e66a6d025ac91b2803ddf1d7ae0827
即我們所求的感知機模型。
小結
a2a3c3214c359f2926cfb238c1ac4311b915e040
感知器Perceptron在機器學習當中是相當重要的基礎,理解好感知器對後麵的SVM和神經網絡都有很大的幫助。事實上感知器學習就是一個損失函數的最優化問題,這裏采用的是隨機梯度下降法來優化。
好吧,對於感知機的介紹,就到此為止!在複習的過程中順便做下筆記,搜搜資料,整理整理,也算是給自己一個交代吧。希望本文章能對大家能有點幫助。

References
[1] 統計學習方法, 李航 著 
[2] Wikiwand之Perceptron https://www.wikiwand.com/en/Perceptron 
[3] Wikipedia https://en.wikipedia.org/wiki/Machine_learning

原文鏈接:https://blog.csdn.net/dream_angel_z/article/details/48915561

相關文章鏈接:https://www.52ml.net/15104.html

本文來源於"中國人工智能學會",原文發表時間" 2016-09-08"

最後更新:2017-05-24 17:32:19

  上一篇:go  人工智能如何解決影響零售業客戶體驗的三大痛點
  下一篇:go  根本停不下來!給它一個輪廓,TensorFlow還你一隻完整的喵 (附論文下載)