感知機學習小結
什麼是感知機
-
是一種人工神經網路
感知機可以通過數學統計學方法完成對函式的估計或近似,能在外界資訊的基礎上改變內部結構,是一種自適應系統,通俗的講就是具備學習功能。
-
是一種最簡單形式的前饋神經網路
感知機模型的引數從輸入層向輸出層單向傳播,整個網路中無反饋。感知機是最簡單形式是因為只包含一層傳播。
-
是一種二元線性分類器
感知機的輸出結果只有+1 和–1二值,所以說感知機是一個二元分類器;
在二維空間中,感知機的模型就是一條直線,將平面中的正負樣本點分離成兩份,在三維中,感知機的模型就是一個平面,將空間中的正負樣本點分離成兩份,放到更高維的空間中,感知機的模型就是一個超平面;
這也就是說,如果在二維空間中,不存在直線剛好將正負樣本點分離成兩份,在三維空間中,不存在平面將空間中的正負樣本點分離成兩份,那麼你的資料就無法使用感知機模型;
感知機的使用前提是資料本身線性可分。
感知機模型
假設我們有n個樣本,每個樣本包含m維輸入特徵和一個二元類別輸出,如下所示:
其中, 代表一個樣本, 表示樣本的一個輸入特徵,其下標表示這是第幾個樣本,上標表示這是這個樣本的第幾個輸入特徵; 表示樣本的輸出,其下標表示這是第幾個樣本;
我們的目的是找到這樣一個超平面,即:
其滿足對於所以有的正樣本: ,對於所有的負樣本: ;從而得到線性可分。如果資料線性可分,這樣的超平面一般都不是唯一的,也就是說感知機模型可以有多個解。
簡化超平面:將 記為向量 與輸入特徵向量 的內積,可得超平面為:
將 記為 b (偏置 bias),將 記做 w (權值 weight),可得超平面為:
所以,我們將感知機模型定義為:
其中:
感知機損失函式
我們知道了感知機模型,我們還需要評價感知機模型的方法,也就是損失函式。我們將所有誤分類點到超平面的總距離作為感知機模型的損失函式 。
首先我們知道空間 中任一點 到平面 的距離是:
其中: 是 的 範數 ( 範數是指向量各元素的平方和然後求平方根)。
接下來,我們假設所有誤分類點的集合為 ,因為當 時, ,而當 時, 。所以對於誤分類點來說其到平面 的距離可寫作:
那麼所有誤分類點 到超平面 的總距離為:
不考慮 ,我們就得到了感知機學習的損失函式。
感知機學習演算法
我們知道了評價感知機模型的方法,也就是損失函式。那麼我們對於模型的優化也就是求解損失函式的極小化。
求解 , 使其為以下損失函式極小化問題的解:
我們採用隨機梯度下降法 求解損失函式極小化問題。極小化過程中不是一次使M中所有誤分類點的梯度下降,而是一次隨機選取一個誤分類點使其梯度下降。
我們知道對於誤分類集合M固定時,那麼損失函式L(w,b)的梯度為:
我們每次隨機選取一個誤分類點 對 進行更新,那麼對 的更新為:
其中 是步長,在機器學習中又稱為學習率(learning rate)。
具體的訓練步驟如下:
(1) 任意選取平面 ,使用 表示平面 ;
(2) 在誤分類點集 中選取一個誤分類點 ;
(3) 對 進行一次梯度下降,即:
(4) 使用新平面 判斷是否任有誤分類點,如有跳轉至第二步,如無即完成模型訓練;
這種學習演算法易於理解,可直觀解釋為:當存在樣本點被誤分類時,就調整分離超平面的位置也就是 ,使分離超平面超誤分類點的一側移動,以減少該誤分類點與分離超平面間的距離,直至分離超平面越過該誤分類點使其被正確分類。
此學習演算法為感知機學習的基本演算法,對應於後面將提到的對偶形式,稱為感知機學習演算法的原始形式。
感知機學習演算法的對偶形式
感知機學習演算法的對偶形式相較與原始形式來說,要難理解一些。但是如果你已經完全理解原始形式,那麼對偶形式也很好理解;如果你對於原始形式還不是很理解,我建議完全消化了原始形式再來看對偶形式。
從某種角度來說,可以認為對偶形式是原始形式數學層面的優化,其存在的意義在於優化感知機學習演算法的學習效率。
其實也不盡然,對偶形式不僅僅是數學層面的優化,其基本思路是能夠解釋得通的,而且這個思路在其它機器學習演算法中是可以沿用的。本節將盡可能解釋其基本思路。
首先,在原始演算法中我們使用 來表示最終的分離超平面 ,通過分析原始形式的迭代過程,也就是:
我們知道,每次對於 的更新是在原 的基礎上加上了某一個誤分類點的輸入特徵、輸出特徵與學習率 的乘積,每次對於 的更新是在原 的基礎上加上了某一個誤分類點的輸出特徵與學習率 的乘積, 每次迭代的增量分別是 、 。
那麼我們可以認為, 最終由初始 加上增量總和組成, 的增量總和可以使用 、 來分別表示,這裡的 , 為迭代過程中樣本集中第 個樣本共被選中幾次進行梯度下降.
綜上所訴,可以用以下公式來表示 :
因為, 為隨機選定的初始分離超平面,可令初始值 均為0,那麼 為:
那麼,感知機模型 被重新定義為:
我們求解的值由 變更為 。
具體的訓練步驟如下:
(1) 令 均為0;
(2) 在誤分類點集 中選取一個誤分類點 ;
(3) 對 進行一次更新,即:
(4) 使用新平面 判斷是否任有誤分類點,如有跳轉至第二步,如無即完成模型訓練;
那麼,為什麼說對偶形式相對於原始形式計算速度更快呢??
這是因為,在原始形式中,每次迭代 ,我們要計算 (樣本數量)次 ,這裡的計算量非常大;而在對偶形式中,觀察模型函式可以看到,我們涉及到的內積計算是 ,我們可以事先計算出訓練集中樣本之間的內積並以矩陣的形式儲存,這個矩陣就是所謂的 Gram 矩陣:
那麼每次迭代過程中都不再涉及內積計算了,直接從 Gram 矩陣獲取。這就是為什麼說對偶形式相對於原始形式計算速度更快的原因。
總結
感知機演算法是一個簡單易懂的機器學習演算法,但是麻雀雖小五臟俱全,其所涉及到的學習方法、損失函式求解以及優化方法是機器學習的核心思想。也是支援向量機、神經網路等演算法的基石。雖說現在的實用價值不高了,但是對感知機演算法的融會貫通會讓你更容易理解在此基礎上發展的更為複雜的其它演算法。