感知器是一種早期的神經網絡模型,由美國學者F.Rosenblatt於1957年提出.感知器中第一次引入了學習的概念,令人腦所具有的學習功能在基於符號處理的數學到了必定程度模擬,因此引發了普遍的關注。算法
簡單感知器模型實際上仍然是MP模型的結構,可是它經過採用監督學習來逐步加強模式劃分的能力,達到所謂學習的目的。網絡
其結構以下圖所示函數
感知器處理單元對n個輸入進行加權和操做v即:學習
其中,Wi爲第i個輸入處處理單元的鏈接權值,f爲階躍函數。優化
感知器在形式上與MP模型差很少,它們之間的區別在於神經元間鏈接權的變化。感知器的鏈接權定義爲可變的,這樣感知器就被賦予了學習的特性。spa
利用簡單感知器能夠實現邏輯代數中的一些運算。.net
Y=f(w1x1+w2x2-θ)blog
(1)「與」運算。當取w1=w2=1,θ=1.5時,上式完成邏輯「與」的運算。get
(2)「或」運算, 當取wl=w2=1,θ=0.5時,上式完成邏輯「或」的運算。數學
(3)「非」運算,當取wl=-1,w2=0,θ=-1時.完成邏輯「非」的運算。
與許多代數方程同樣,上式中不等式具備必定的幾何意義。
對於一個兩輸入的簡單感知器,每一個輸入取值爲0和1,如上面結出的邏輯運算,全部輸入樣本有四個,記爲(x1,x2):(0,0),(0,1),(1,0),(1,1),構成了樣本輸入空間。例如,在二維平面上,對於「或」運算,各個樣本的分佈以下圖所示。
直線1*x1+1*x2-0.5=0將二維平面分爲兩部分,上部爲激發區(y,=1,用★表示),下部爲抑制區(y=0,用☆表示)。
簡單感知器引入的學習算法稱之爲偏差學習算法。該算法是神經網絡學習中的一個重要算法,並已被普遍應用。
現介紹以下:
偏差型學習規則:
(1)選擇一組初始權值wi(0)。
(2)計算某一輸入模式對應的實際輸出y與指望輸出d的偏差δ
(3)若是δ小於給定值,結束,不然繼續。
(4)更新權值(閾值可視爲輸入恆爲1的一個權值): Δwi(t+1)=wi(t+1)- wi(t)=η[d—y(t)]xi。
式中η爲在區間(0,1)上的一個常數,稱爲學習步長,它的取值與訓練速度和w收斂的穩定性有關;d、y爲神經元的指望輸出和實際輸出;xi爲神經元的第i個輸入。
(5)返回(2),重複,直到對全部訓練樣本模式,網絡輸出均能知足要求。
對於學習步長V的取值通常是在(0,1)上的一個常數,可是爲了改進收斂速度,也能夠採用變步長的方法,這裏介紹一個算法以下式:
式中,α爲一個正的常量。這裏取值爲0.1。
感知器對線性不可分問題的侷限性決定了它只有較差的概括性,並且一般須要較長的離線學習才能達到收效。
若是在輸入和輸出層間加上一層或多層的神經元(隱層神經元),就可構成多層前向網絡,這裏稱爲多層感知器。
這裏需指出的是:多層感知器只容許調節一層的鏈接權。這是由於按感知器的概念,沒法給出一個有效的多層感知器學習算法。
上述三層感知器中,有兩層鏈接權,輸入層與隱層單元間的權值是隨機設置的固定值,不被調節;輸出層與隱層間的鏈接權是可調節的。
對於上面述及的異或問題,用一個簡單的三層感知器就可獲得解決。
實際上,該三層感知器的輸入層和隱層的鏈接,就是在模式空間中用兩個超平面去劃分樣本,即用兩條直線: x1+x2=0.5 x1十x 2=1.5。
能夠證實,只要隱層和隱層單元數足夠多,多層感知器網絡可實現任何模式分類。
可是,多層網絡的權值如何肯定,即網絡如何進行學習,在感知器上沒有獲得解決:
當年Minsky等人就是由於對於非線性空間的多層感知器學習算法未能獲得解決,
使其對神經網絡的研究做出悲觀的結論。
對於一個N個輸入的感知器,若是樣本輸入函數是線性可分的,那麼對任意給定的一個輸入
樣本x,要麼屬於某一區域F+,要麼不屬於這一區域,記爲F—。F+,F—兩類樣本構成了整個線性可分樣本空間。
[定理] 若是樣本輸入函數是線性可分的,那麼下面的感知器學習算法通過有限次迭代後,
可收斂到正確的權值或權向量。
假設樣本空間F是單位長度樣本輸入向量的集合,若存在一個單位權向量w*。和一個較小的正數δ>0,
使得w*·x>= δ對全部的樣本輸入x都成立,則權向量w按下述學習過程僅需有限步就可收斂。
所以,感知器學習迭代次數是一有限數,通過有限次迭代,學習算法可收斂到正確的權向量w*。
對於上述證實,要說明的是:正數δ越小,迭代次數越多;
其次,若樣本輸入函數不是線性可分的,則學習過程將出現振盪,得不到正確的結果。
二者都爲線性分類器,只能處理線性可分的數據。
二者的損失函數有所不一樣,PLA針對分錯的數據進行建模,LR使用平方損失建模。
二者的優化方法能夠統一爲GD。
LR比PLA的優勢之一在於對於激活函數的改進。
前者爲sigmoid function,後者爲step function。
LR使得最終結果有了機率解釋的能力(將結果限制在0-1之間),sigmoid爲平滑函數,可以獲得更好的分類結果,而step function爲分段函數,對於分類的結果處理比較粗糙,非0即1,而不是返回一個分類的機率。
感知機學習旨在求出將訓練數據集進行線性劃分的分類超平面,爲此,導入了基於誤分類的損失函數,而後利用梯度降低法對損失函數進行極小化,從而求出感知機模型。感知機模型是神經網絡和支持向量機的基礎。下面分別從感知機學習的模型、策略和算法三個方面來介紹。
感知機模型以下:
f(x)= sign(w*x+b)
其中,x爲輸入向量,sign爲符號函數,括號裏面大於等於0,則其值爲1,括號裏面小於0,則其值爲-1。w爲權值向量,b爲偏置。求感知機模型即求模型參數w和b。感知機預測,即經過學習獲得的感知機模型,對於新的輸入實例給出其對應的輸出類別1或者-1。
假設訓練數據集是線性可分的,感知機學習的目標就是求得一個可以將訓練數據集中正負實例徹底分開的分類超平面,爲了找到分類超平面,即肯定感知機模型中的參數w和b,須要定義一個損失函數並經過將損失函數最小化來求w和b。
這裏選擇的損失函數是誤分類點到分類超平面S的總距離。輸入空間中任一點x0到超平面S的距離爲:
其中,||w||爲w的L2範數。
其次,對於誤分類點來講,當-yi (wxi + b)>0時,yi=-1,當-yi(wxi + b)<0時,yi=+1。因此對誤分類點(xi, yi)知足:
-yi (wxi +b) > 0
因此誤分類點(xi, yi)到分類超平面S的距離是:
感知機學習問題轉化爲求解損失函數式(1)的最優化問題,最優化的方法是隨機梯度降低法。感知機學習算法是誤分類驅動的,具體採用隨機梯度降低法。首先,任意選取一個超平面w0,b0,而後用梯度降低法不斷極小化目標函數式(1)。極小化的過程不是一次使M中全部誤分類點的梯度降低,而是一次隨機選取一個誤分類點使其梯度降低。
損失函數L(w,b)的梯度是對w和b求偏導,即:
其中,(0<<=1)是學習率,即學習的步長。綜上,感知機學習算法以下:
這種算法的基本思想是:當一個實例點被誤分類,即位於分類超平面錯誤的一側時,則調整w和b,使分類超平面向該誤分類點的一側移動,以減小該誤分類點與超平面的距離,直到超平面越過該誤分類點使其被正確分類爲止。
須要注意的是,這種感知機學習算法獲得的模型參數不是惟一的,它會因爲採用不一樣的參數初始值或選取不一樣的誤分類點,而致使解不一樣。爲了獲得惟一的分類超平面,須要對分類超平面增長約束條件,線性支持向量機就是這個想法。另外,當訓練數據集線性不可分時,感知機學習算法不收斂,迭代結果會發生震盪。而對於線性可分的數據集,算法必定是收斂的,即通過有限次迭代,必定能夠獲得一個將數據集徹底正確劃分的分類超平面及感知機模型。
以上是感知機學習算法的原始形式,下面介紹感知機學習算法的對偶形式,對偶形式的基本想法是,將w和b表示爲實例xi和標記yi的線性組合形式,經過求解其係數而求得w和b。對誤分類點(xi, yi)經過
因此,感知機學習算法的對偶形式以下:
參考文獻:
1.《統計學習方法》