淺析感知機(一)--模型與學習策略

最近在實驗室中通過空閑時間來夯實自己一些機器學習的基礎,於是打算仔細閱讀李航博士的《統計學習方法》一書,而自己看書的習慣就是記錄自己的學習筆記和過程,便於總結與分享給他人,一起交流學習!哈哈哈哈,開寫~

感知機

感知機是二分類的線性分類模型,輸入為實例的特徵向量,輸出為實例的類別(取+1和-1)。感知機對應於輸入空間中將實例劃分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面導入了基於誤分類的損失函數,利用梯度下降法對損失函數進行最優化

感知機模型

假設輸入空間(特徵向量)是xin R^{n} 輸出空間Yin left{ -1,+1 
ight} ,輸入xin X表示實例的特徵向量,對應於輸入空間的點,輸出yin Y表示實例的類別,則由輸入空間到輸出空間的表達形式為:

f(x)=sign(w*x+b)

上面該函數稱為感知機,其中w,b稱為模型的參數,win R^{n} 稱為權值,b稱為偏置,w*x表示為w,x的內積

這裡

如果我們將sign稱之為激活函數的話,感知機與logistic regression的差別就是感知機激活函數是sign,logistic regression的激活函數是sigmoid。sign(x)將大於0的分為1,小於0的分為-1;sigmoid將大於0.5的分為1,小於0.5的分為0。因此sign又被稱為單位階躍函數,logistic regression也被看作是一種概率估計。(logistic後面會詳細講解)

該感知機線性方程表示為:w*x+b=0,它的幾何意義如下圖所示:

我們其實就是在學習參數w與b,確定了w與b,圖上的直線(高維空間下為超平面)也就確定了,那麼以後來一個數據點,我用訓練好的模型進行預測判斷,如果大於0就分類到+1,如果小於0就分類到-1。

由於自己在這裡碰到了問題,稍微證明一下為什麼w是直線(高維空間下為超平面)的法向量?

上面說到我用訓練好的模型進行預測判斷,如果大於0就分類到+1,如果小於0就分類到-1。用到了超平面分離定理:超平面分離定理是應用凸集到最優化理論中的重要結果,這個結果在最優化理論中有重要的位置。所謂兩個凸集分離,直觀地看是指兩個凸集合沒有交叉和重合的部分,因此可以用一張超平面將兩者隔在兩邊。如下圖所示,在大於0的時候,我將數據點分類成了D類,在小於0的時候,我將數據點分類成了C類

感知機學習策略

好了,上面我們已經知道感知機模型了,我們也知道他的任務是解決二分類問題,也知道了超平面的形式,那麼下面關鍵是如何學習出超平面的參數w,b這就需要用到我們的學習策略。

我們知道機器學習模型,需要首先找到損失函數,然後轉化為最優化問題,用梯度下降等方法進行更新,最終學習到我們模型的參數w,b。ok,那好,我們開始來找感知機的損失函數,

我們很自然的會想到用誤分類點的數目來作為損失函數,是的誤分類點個數越來越少嘛,感知機本來也是做這種事的,只需要全部分對就好。但是不幸的是,這樣的損失函數並不是w,b連續可導(你根本就無法用函數形式來表達出誤分類點的個數),無法進行優化。

於是我們想轉為另一種選擇,誤分類點到超平面的總距離(直觀來看,總距離越小越好):

距離公式如下:

而我們知道每一個誤分類點都滿足-y_{i} (w*x_{0}+b )>0

因為當我們數據點正確值為+1的時候,你誤分類了,那麼你判斷為-1,則算出來(w*x_{0}+b )<0,所以滿足-y_{i} (w*x_{0}+b )>0

當數據點是正確值為-1的時候,你誤分類了,那麼你判斷為+1,則算出來(w*x_{0}+b )>0,所以滿足-y_{i} (w*x_{0}+b )>0

則我們可以將絕對值符號去掉,得到誤分類點的距離為:

因為你知道-y_{i} (w*x_{0}+b )>0,所以可以直接將絕對值去掉。那麼可以得到總距離為:

不考慮frac{1}{||w||} ,我們可以得到損失函數為:

其中M為誤分類點的數目。

恩,好了,其實到這裡為止,已經完成了標題所要表達的任務了,感知機的模型與學習策略!總結一下!

感知機的模型是f(x)=sign(w*x+b),它的任務是解決二分類問題,要得到感知機模型我們就需要學習到參數w,b。

則這個時候我們需要一個學習策略,不斷的迭代更新w,b,所以我們需要找到一個損失函數。很自然的我們想到用誤分類點的數目來表示損失函數,但是由於不可導,無法進行更新,改為誤分類點到超平面的距離來表示,然後不考慮frac{1}{||w||} ,得到我們最終的損失函數!

這裡在學習的過程中,我有一個問題就是為什麼可以不考慮frac{1}{||w||} ,不用總距離表達式作為損失函數呢?

通過和師兄同學們的討論,以及查閱資料,這裡給出自己的理解(歡迎大家交流指錯!)

感知機的任務是進行二分類工作,它最終並不關心得到的超平面離各點的距離有多少(所以我們最後才可以不考慮w的範式),只是關心我最後是否已經正確分類正確(也就是考慮誤分類點的個數),比如說下面紅色與綠線,對於感知機來說,效果任務是一樣好的。

但是在SVM的評價標準中(綠線是要比紅線好的,這個後面在討論)

所以我們可以不考慮w的範式,直接去掉它,因為這個時候我們只考慮誤分類點,當一個誤分類點出現的時候,我們進行梯度下降,對w,b進行改變即可!跟距離沒有什麼關係了,因為w的範式始終是大於0,對於我們判斷是否為誤分類點(我們是通過是否-y_{i} (w*x_{0}+b )>0來判斷是佛為誤分類點)沒有影響!這也回到了我們最初始想要作為損失函數的誤分類點的個數,引入距離,只是將它推導出一個可導的形式!(最後說一句,我個人認為不去掉w的範式,也是一樣可以得到最後的正確分類超平面,就是直接用距離來當做損失函數也是可以的,可能是求梯度比較複雜,或者是感知機本身就是用誤分類點來區分,就沒用了)

那麼好了,我們已經得到了損失函數了,後面直接講解如何梯度下降,收斂到分類正確即可,這個後續會講到~這次的內容到這啦,希望大家交流指錯,很多都是自己的理解總結,希望對大家有幫助,謝謝!歡迎大家指錯交流~

後續文章預告:

《淺析感知機(二)--學習演算法與收斂性證明》

《淺析感知機(三)--python實現源代碼分析》

這裡在安利一下,我是完全按李航博士書籍來學習,歡迎關注交流~哈哈哈哈

參考以下內容:

李航博士《統計學習方法》

致謝:郭江師兄,曉明師兄,德川,皓宇,繼豪,海濤師兄

推薦閱讀:

人工智慧公開課
從AlphaGo Zero到應用:造一張「棋盤」
斯坦福CS231n課程作業# 3簡介
這篇沒有乾貨沒有知識點不關於機器學習深度學習推薦系統。。
平安銀行的機器學習實踐

TAG:机器学习 | 模式识别 | 数据挖掘 |