- 深度學習原理與應用
- 周中元 黃穎 張誠 周新
- 1902字
- 2021-04-30 22:05:38
3.4 感知器
3.4.1 單層感知器
感知器是美國康奈爾大學的羅森布拉特于1958年提出的,之所以稱為感知器,是因為這種學習算法可以學習如何將圖案進行分類,例如識別字母、數字。在1.3節已經講過,感知器是深度學習的兩大起源之一,如果理解了感知器學習識別圖案的基本原理,那么,你已理解了一半的深度學習工作原理,所以,還是有必要簡單介紹一下感知器。
與M-P模型一樣,單個單層感知器通常可以接收多個輸入信號,只輸出一個信號,感知器的輸入信號只有“0/1”兩種。感知器根據其結構有單層和多層之分。
單層感知器是最簡單的前饋神經網絡,僅包含輸入層和輸出層。而且,只有輸出層的神經元是可計算節點。
如圖3-5所示,在單層感知器中,每個可計算節點都是一個線性閾值神經元,當輸入信息的加權和大于等于閾值時,其輸出為1,否則輸出為0。其計算公式為:


圖3-5 單層感知器
感知器的作用是完成外部輸入的分類識別。羅森布拉特已經證明(感知器收斂定理),如果外部輸入是線性可分的,則單層感知器一定能夠把它分成兩類。
從結構上看,單層感知器與M-P模型是一樣的,但這兩者的區別是本質的,M-P模型的連接權重參數wi和閾值h是事先設定的,不能改變;而感知器的連接權重參數wi和閾值h是可以通過訓練自動修正的。這是一個了不起的進步,人們只需給感知器一組參數,然后再給它足夠的樣本數據讓其學習,它就可以自己找到一組更合適的參數!
訓練的方式為有監督學習,就是事先設定期望輸出r,然后計算實際輸出y和期望輸出r之間的誤差,如果這個誤差沒有滿足預期控制標準,則調整參數后再繼續訓練,直至誤差滿足預期標準,或者參數不再變化。這種方法稱為誤差修正學習。
為了有一個感性認識,先簡單說明如何實現自動調整連接權重和閾值,嚴格的過程將在誤差反向算法中給出。
假設感知器有n個輸入信號,其參數調整算法大致為:
第t次輸入信號用n+1維輸入向量表示,+1是將閾值當作第0個輸入,這樣做可以將閾值與連接權重一起處理:
x(t)=[1, x1(t), x2(t), …, xn(t)]T
相應地,這n+1個連接權重組成的向量為:
w(t)=[h, w1(t), w2(t), …, wn(t)]T
h為閾值,y(t)為實際輸出值,r(t)為期望輸出值,注意,輸出值是0或1。η為學習率,0<η≤1。
更新參數w的做法:用w+?w來替代原來的w,即每次迭代時,權重的修正量為?w:
① 初始化。設w(0)=0,依次對時間步t=1, 2, …執行下列計算
② 輸入感知器。在時間步t,輸入向量x(t)
③ 計算實際輸出。y(i)=f[wT(t)x(t)]
④ 權重向量的自動修正。更新感知器的權重向量
w(t+1)=w(t)+η[r(t)?y(t)]x(t)
⑤ 繼續。時間步t增加1,返回第②步。
感知器雖然具備了學習能力,但它還存在一個很大的局限性,無法解決二維平面中簡單的線性不可分的分布問題。感知器輸出取值的判斷依據仍然是邊界決策平面:。這是一個線性平面,無法處理線性不可分的情況。如圖3-6右側所示的兩種線性不可分情況,用決策平面作為分類工具時就無法進行分類。因此,單層感知器無法處理線性不可分時的數據分類問題。

圖3-6 線性可分與不可分圖示
受感知器的啟發,1995年,俄羅斯數學家弗拉基米爾·瓦普尼克(Vladimir Vapnik)設計了一種新的分類器,稱為“支持向量機”(Support Vector Machine),支持向量機可以在有限的樣本情況下學習尋求最佳的分類方案。支持向量機分為線性和非線性兩類,線性支持向量機是以樣本間的歐氏距離大小為依據來決定劃分結構的,非線性的支持向量機中以卷積核函數代替內積后,相當于定義了一種廣義的距離,以這種廣義距離作為劃分依據。
3.4.2 多層感知器
為解決線性不可分數據的分類問題,1974年,哈佛大學博士沃波斯的博士論文證明了在單層感知器中多加一層,形成一個多層感知器,就可以解決異或問題的分類。
如圖3-7所示,多層感知器是由多個單層感知器疊加組成的前饋網絡,通常由輸入層、中間層(可以不止一個)和輸出層組成。

圖3-7 多層感知器
中間層的各神經元連接輸入層各單元,同樣將每個輸入xi乘以相應的連接權重wi,然后再累加,最后通過激活函數計算中間層各單元的輸出值,輸出層的計算過程也類似。下面通過多層感知器解決線性不可分問題中異或問題的分類來看各層是如何進行運算的。
如圖3-8所示,感知器采用的激活函數為階梯函數,初始輸入為x1, x2,輸入層與中間層的連接權重為w1=w2=1,中間層的閾值分別為h1=1.5, h2=0.5,中間層與輸出層的的連接權重為w3=?2, w4=1,輸出層的閾值為h=0.5,輸出為y。

圖3-8 多層感知器實現異或運算
當x1=1, x2=1時,
f1=f(w1x1+w2x2?h1)=f1(1×1+1×1?1.5)=f1(0.5)=1
f2=f2(1×1+1×1?0.5)=f1(1.5)=1
y=f(w3f1+w4f2?h)=f(?2×1+1×1?0.5)=f(?1.5)=0
同樣,當x1=0, x2=0時,可以算出,y=0
當x1=1, x2=0時,y=1;
當x1=0, x2=1時,y=1。
這正是異或運算的結果。
注意,連接權重w3取了負值。
沃波斯的這篇博士論文很好地解決了異或問題,但沒有得到應有的反響,因為當時正是神經網絡研究的低谷。
當然,多層感知器解決了異或問題并不是說可以解決所有非線性分類問題,要解決線性不可分問題通常需要通過核函數映射到高維空間來解決。