人工智慧基礎演算法之感知器
感知器演算法
1.引言
感知器(perceptron)是比較簡單的二分類器,通過對訓練樣本集的學習,從而得到判別函數權值的解,產生線性可分的樣本判別函數。該演算法屬於非參數演算法,優點是不需要對各類樣本的統計性質作任何假設,屬於確定性方法。
雖然簡單,感知器演算法卻是支持向量機(SVM)和神經網路演算法的基礎,為了之後更好地學習,感知器演算法必須要了解地非常清楚。接下來,就開始介紹感知器演算法。
2. 感知器分類模型
給定一個訓練數據集,
其中
分類器模型為,
其中θ是權值向量,x是輸入向量,b是偏差,
直觀上來看,對於一個對象而言,具有很多特徵,這些特徵對於我們的分類問題重要程度不一樣,權值越大,表示這個特徵和問題的相關性就越大;偏差b的存在是為了表徵那些被忽略的特徵;------------
從幾何上來看,偏差b的存在是為了使線性方程能夠取到所有分隔平面(當只有一個特徵輸入時,該方程是直線;當時兩個特徵輸入時,該方程是平面;當特徵輸入大於等於3個時,該方程為超平面)。
所以,如果特徵選擇比較好的話,b就會很小,因為所選的特徵已經能夠很好地表徵問題了;否則,b就會很大,表明了選擇的特徵並不好。
3. 權值更新規則
首先需要定義一個損失函數,在使損失函數最小化的過程中,得到我們的權值向量θ和偏差b。由於是分類問題,自然不能按照輸出值和真實值的誤差進行權值的更新,比如說分隔線方程的輸出一個是0.1,另一個是10000,經過g(z)二值化後的輸出都是1,但是其中卻差別很大。
那麼利用樣本點到分隔平面的距離來進行更新權值似乎是一個不錯的選擇,點到分隔平面的距離為:
但是試想一下,權值向量θ和偏差b同時擴大同樣的倍數,這個分隔平面並沒有變,可是點到分隔平面的距離卻變了,所以通常我們令‖θ‖=1,使權值不能隨意擴大倍數,從而得到:
如何來表示這個絕對值呢?我們知道,對於樣本點分類正確是不需要對權值進行更新,只有誤分類點才會更新權值。
既然是誤分類點,那麼g(z)和真實值不相等,再由它們的取值範圍{-1,1}可以得到>0,也就是。
則可以由代替。
所以,損失函數可以定義為,
其中M為誤分類點的集合。
找到了損失函數,只需要使損失函數最小化就好了。
這裡可以採用梯度下降法(由於篇幅問題,這裡不再詳細介紹,我會再寫一篇文章詳細介紹梯度下降法,有興趣的同學,請持續關注),損失函數L(θ,b)對θ,b求導可以得出,
所以對於誤分類點,對θ,b更新為,
其中η稱之為學習率,形象地理解,因為導數相當於方向,只有方向沒有步長,是沒辦法移動的。
3. 感知器演算法訓練步驟
輸入:訓練數據集,
其中;學習率η(0≤η≤1);
輸出:θ,b;感知器模型。
(1)選取初值
(2)在訓練集中選取數據
(3)如果,
(4)轉至(2),直到訓練集中沒有誤分類點。
4. 總結
感知器演算法演算法主要是針對線性可分的數據,但是當我們拿到比較複雜的數據時,並不能直接判斷數據集是否線性可分,如果想要判斷,這裡可以提供一個思路:
(1)憑藉經驗來判斷(這個對於沒有實際經驗的同學來說,很困難);
(2)判斷不同樣本的凸包,想像一下,正樣本用一個圓包圍起來,負樣本用另一個圓包圍起來,如果兩個圓相交,那麼這兩種樣本就不是線性可分,反之則是線性可分;當然凸包並不是用圓來表示的,這裡只是為了形象地描述,想要了解凸包的同學,可以閱讀相關論文。
當然,現實中的數據集大都不是線性可分的,所以感知器演算法用得並不多,為了能夠對線性不可分的數據進行分類,在感知器演算法的基礎上,產生了支持向量機和神經網路(超級強大的兩種演算法,在現實中應用很多)。
由於篇幅問題,感知器演算法還有一部分將在另外一篇文章中介紹,主要是感知器演算法收斂的問題,也就是為什麼這個演算法一定可以找到那個可以把線性可分的數據集分開的超平面;還有就是感知器的拓展,基於傳統感知器演算法衍生的各種演算法,想要了解的同學,請持續關注。
「人工也智能」公眾號的原則是「拒絕科普,原創為主」
喜歡的同學,掃描下面二維碼關注,謝謝!
5.參考資料
[1] 劉建偉,申芳林,羅雄麟.感知器學習演算法研究[J].計算機工程,2010,36(07):190-192.
[2] 李航. 統計學習方法[M]. 清華大學出版社,2012.
[3] Andrew. 斯坦福機器學習課程講義
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:人工也智能 |