淺析感知機(一)--模型與學習策略
感知機
感知機是二分類的線性分類模型,輸入為實例的特徵向量,輸出為實例的類別(取+1和-1)。感知機對應於輸入空間中將實例劃分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面導入了基於誤分類的損失函數,利用梯度下降法對損失函數進行最優化。
感知機模型
假設輸入空間(特徵向量)是,輸出空間為,輸入表示實例的特徵向量,對應於輸入空間的點,輸出表示實例的類別,則由輸入空間到輸出空間的表達形式為:
上面該函數稱為感知機,其中w,b稱為模型的參數,稱為權值,b稱為偏置,w*x表示為w,x的內積
這裡
該感知機線性方程表示為:,它的幾何意義如下圖所示:
我們其實就是在學習參數w與b,確定了w與b,圖上的直線(高維空間下為超平面)也就確定了,那麼以後來一個數據點,我用訓練好的模型進行預測判斷,如果大於0就分類到+1,如果小於0就分類到-1。
由於自己在這裡碰到了問題,稍微證明一下為什麼w是直線(高維空間下為超平面)的法向量?
上面說到我用訓練好的模型進行預測判斷,如果大於0就分類到+1,如果小於0就分類到-1。用到了超平面分離定理:超平面分離定理是應用凸集到最優化理論中的重要結果,這個結果在最優化理論中有重要的位置。所謂兩個凸集分離,直觀地看是指兩個凸集合沒有交叉和重合的部分,因此可以用一張超平面將兩者隔在兩邊。如下圖所示,在大於0的時候,我將數據點分類成了D類,在小於0的時候,我將數據點分類成了C類
感知機學習策略
好了,上面我們已經知道感知機模型了,我們也知道他的任務是解決二分類問題,也知道了超平面的形式,那麼下面關鍵是如何學習出超平面的參數w,b,這就需要用到我們的學習策略。
我們知道機器學習模型,需要首先找到損失函數,然後轉化為最優化問題,用梯度下降等方法進行更新,最終學習到我們模型的參數w,b。ok,那好,我們開始來找感知機的損失函數,
我們很自然的會想到用誤分類點的數目來作為損失函數,是的誤分類點個數越來越少嘛,感知機本來也是做這種事的,只需要全部分對就好。但是不幸的是,這樣的損失函數並不是w,b連續可導(你根本就無法用函數形式來表達出誤分類點的個數),無法進行優化。
於是我們想轉為另一種選擇,誤分類點到超平面的總距離(直觀來看,總距離越小越好):
距離公式如下:
而我們知道每一個誤分類點都滿足
因為當我們數據點正確值為+1的時候,你誤分類了,那麼你判斷為-1,則算出來,所以滿足
當數據點是正確值為-1的時候,你誤分類了,那麼你判斷為+1,則算出來,所以滿足
則我們可以將絕對值符號去掉,得到誤分類點的距離為:
因為你知道,所以可以直接將絕對值去掉。那麼可以得到總距離為:
不考慮,我們可以得到損失函數為:其中M為誤分類點的數目。恩,好了,其實到這裡為止,已經完成了標題所要表達的任務了,感知機的模型與學習策略!總結一下!
感知機的模型是,它的任務是解決二分類問題,要得到感知機模型我們就需要學習到參數w,b。
則這個時候我們需要一個學習策略,不斷的迭代更新w,b,所以我們需要找到一個損失函數。很自然的我們想到用誤分類點的數目來表示損失函數,但是由於不可導,無法進行更新,改為誤分類點到超平面的距離來表示,然後不考慮,得到我們最終的損失函數!
這裡在學習的過程中,我有一個問題就是為什麼可以不考慮,不用總距離表達式作為損失函數呢?
通過和師兄同學們的討論,以及查閱資料,這裡給出自己的理解(歡迎大家交流指錯!)
感知機的任務是進行二分類工作,它最終並不關心得到的超平面離各點的距離有多少(所以我們最後才可以不考慮w的範式),只是關心我最後是否已經正確分類正確(也就是考慮誤分類點的個數),比如說下面紅色與綠線,對於感知機來說,效果任務是一樣好的。
但是在SVM的評價標準中(綠線是要比紅線好的,這個後面在討論)
所以我們可以不考慮w的範式,直接去掉它,因為這個時候我們只考慮誤分類點,當一個誤分類點出現的時候,我們進行梯度下降,對w,b進行改變即可!跟距離沒有什麼關係了,因為w的範式始終是大於0,對於我們判斷是否為誤分類點(我們是通過是否來判斷是佛為誤分類點)沒有影響!這也回到了我們最初始想要作為損失函數的誤分類點的個數,引入距離,只是將它推導出一個可導的形式!(最後說一句,我個人認為不去掉w的範式,也是一樣可以得到最後的正確分類超平面,就是直接用距離來當做損失函數也是可以的,可能是求梯度比較複雜,或者是感知機本身就是用誤分類點來區分,就沒用了)
那麼好了,我們已經得到了損失函數了,後面直接講解如何梯度下降,收斂到分類正確即可,這個後續會講到~這次的內容到這啦,希望大家交流指錯,很多都是自己的理解總結,希望對大家有幫助,謝謝!歡迎大家指錯交流~
後續文章預告:
《淺析感知機(二)--學習演算法與收斂性證明》
《淺析感知機(三)--python實現源代碼分析》
這裡在安利一下,我是完全按李航博士書籍來學習,歡迎關注交流~哈哈哈哈
參考以下內容:
李航博士《統計學習方法》
致謝:郭江師兄,曉明師兄,德川,皓宇,繼豪,海濤師兄
推薦閱讀:
※人工智慧公開課
※從AlphaGo Zero到應用:造一張「棋盤」
※斯坦福CS231n課程作業# 3簡介
※這篇沒有乾貨沒有知識點不關於機器學習深度學習推薦系統。。
※平安銀行的機器學習實踐