版權聲明:本文為博主原創文章,未經博主允許不得轉載。
感知機(perceptron)由Rosenblatt于1957年提出,是神經網絡與支持向量機的基礎。
感知機是最早被設計并被實現的人工神經網絡。感知機是一種非常特殊的神經網絡,它在人工神經網絡的發展史上有著非常重要的地位,盡管它的能力非常有限,主要用于線性分類。
感知機還包括多層感知機,簡單的線性感知機用于線性分類器,多層感知機(含有隱層的網絡)可用于非線性分類器。本文中介紹的均是簡單的線性感知機。圖 1
感知機工作方式:
(1)、學習階段:修改權值和偏置,根據”已知的樣本”對權值和偏置不斷修改----有監督學習。當給定某個樣本的輸入/輸出模式對時,感知機輸出單元會產生一個實際輸出向量,用期望輸出(樣本輸出)與實際輸出之差來修正網絡連接權值和偏置。
(2)、工作階段:計算單元變化,由響應函數給出新輸入下的輸出。
感知機學習策略:
感知機學習的目標就是求得一個能夠將訓練數據集中正負實例完全分開的分類超平面,為了找到分類超平面,即確定感知機模型中的參數w和b,需要定義一個基于誤分類的損失函數,并通過將損失函數最小化來求w和b。
(1)、數據集線性可分性:在二維平面中,可以用一條直線將+1類和-1類完美分開,那么這個樣本空間就是線性可分的。因此,感知機都基于一個前提,即問題空間線性可分;
(2)、定義損失函數,找到參數w和b,使得損失函數最小。
損失函數的選取:
(1)、損失函數的一個自然選擇就是誤分類點的總數,但是這樣的點不是參數w,b的連續可導函數,不易優化;
(2)、損失函數的另一個選擇就是誤分類點到劃分超平面S(w*x+b=0)的總距離。以上理論部分主要來自: http://staff.ustc.edu.cn/~qiliuql/files/DM2013/2013SVM.pdf
以下代碼根據上面的描述實現:
perceptron.hpp:
[cpp] view plain copyGitHub:https://github.com/fengbingchun/NN
新聞熱點
疑難解答