簡單易懂的講解深度學習(入門系列之五)

5.1 網之初,感知機

我們知道,《三字經》里開篇第一句就是:「人之初,性本善」。那麼對於神經網路來說,這句話就要改為:「網之初,感知機」。感知機( Perceptrons ),基本上來說,是一切神經網路學習的起點。

很多有關神經網路學習(包括深度學習)的教程,在提及感知機時,都知道繞不過,但也僅僅一帶而過。學過編程的同學都知道,不論是哪門什麼語言,那個神一般存在的第一個程序——「Hello World」,對初學者有多麼重要,可以說,它就是很多人「光榮與夢想」開始的地方。

而感知機學習,就是神經網路學習的「Hello World」,所以對於初學者來說,也值得我們細細玩味。因此,下面我們就給予詳細講解。

5.2 感性認識「感知機」

在第3小節中,我們已經提到,所謂的感知機,其實就是一個由兩層神經元構成的網路結構,它在輸入層接收外界的輸入,通過激活函數(含閾值)的變換,把信號傳送至輸出層,因此它也稱之為「閾值邏輯單元(threshold logic unit)」。

麻雀雖小,五臟俱全。感知機雖然簡單,但已初具神經網路的必備要素。在前面我們也提到,所有「有監督」的學習,在某種程度上,都是分類(classification)學習演算法。而感知機就是有監督的學習,所以,它也是一種分類演算法。下面我們就列舉一個區分「西瓜和香蕉」的經典案例,來看看感知機是如何工作的。

為了簡單起見,我們就假設西瓜和香蕉都僅有兩個特徵(feature):形狀和顏色,其它特徵暫不考慮。這兩個特徵都是基於視覺刺激而得到的。

圖5-1 感知機學習演算法

假設特徵x1代表輸入顏色,特徵x2代表形狀,權重w1和w2默認值都為1,為了進一步簡化,我們把閾值θ(亦有教程稱之為偏值——bias)設置為0。為了標識方便,我們將感知器輸出為「1」,代表判定為「西瓜」,而輸出為「0」,代表判定為「香蕉」。當然了,如果有更多類別的物品,我們就用更多的數字來標記即可。

為了方便機器計算,我們對顏色和形狀這兩個特徵,給予不同的值,以示區別。比如,顏色這個特徵為綠色時,x1取值為1,而當顏色為黃色時,x1取值為-1;類似地,如果形狀這個特徵為圓形,x2取值為1,反之,形狀為彎曲狀時,x2取值為-1,如表5-1所示。

這樣一來,可以很容易依據圖5-1所示的公式,對於西瓜、香蕉做鑒定(即輸出函數f的值),其結果分別如圖5-2(a)所示:

圖5-2 感知器的輸出

從圖5-2(a)所示的輸出可以看到,對西瓜的判定輸出結果是2,而香蕉的為-2。而我們先前預定的規則是:函數輸出為1,則判定為西瓜,輸出為0,則判定為香蕉,那麼如何將2或-2這樣的分類結果,變換成預期的分類表達呢,這個時候,就需要激活函數上場了!

這裡,我們使用了最為簡單的階躍函數(step function)。在階躍函數中,輸出規則非常簡單:當x>0時,f(x)輸出為1,否則輸出0。通過激活函數的「潤滑」之後,結果就變成我們想要的樣子(如圖5-2-b所示)。就這樣,我們就搞定了西瓜和香蕉的判定。

這裡需要說明的是,對象的不同特徵(比如水果的顏色或形狀等),只要用不同數值區分表示開來即可,具體用什麼樣的值,其實並無大礙。

但你或許會疑惑,這裡的閾值(threshold)θ和兩個連接權值w1w2,為啥就這麼巧分別就是0、1、1呢?如果取其它數值,會有不同的判定結果嗎?

這是個好問題。事實上,我們並不能一開始就知道這幾個參數的取值,而是一點點地非常苦逼地「折騰試錯」(Try-Error)出來的,而這裡的「折騰試錯」其實就是感知機的學習過程!

下面,我們就聊聊最簡單的神經網路——感知機它是如何學習的?

5.3 感知機是如何學習的?

中國有句古話:「知錯能改,善莫大焉。」說得就是「犯了錯誤而能改正,沒有比這更好的事了」。

放到機器學習領域,這句話顯然屬於「監督學習」的範疇。因為「知錯」,就表明它事先已有了事物的評判標準,如果你的行為不符合(或說偏離)這些標準,那麼就要根據「偏離的程度」,來「改善」自己的行為。

下面,我們就根據這個思想,來制定感知機的學習規則。從前面討論中我們已經知道,感知機學習屬於「有監督學習」(即分類演算法)。感知機是有明確的目的導向的,這有點類似於「不管白貓黑貓,抓住老鼠就是好貓」,不管是什麼樣的學習規則,能達到良好的分類目的,就是好學習規則。

我們知道,對象本身的特徵值,一旦確定下來就不會變化。因此,所謂神經網路的學習規則,就是調整權值和閾值的規則(這個結論對於深度學習而言,依然是適用的)。

假設我們的規則是這樣的:

其中ep = y- y』y為期望輸出,y』是實際輸出,所以,具體說來,ep是二者的差值。在後面,讀者朋友可以看到,這個「落差」就是整個網路中權值和閾值的調整動力。因為,很顯然,如果ep為0,那麼新、舊權值和閾值都是一樣的,網路就穩定可用了!

下面,我們就用上面的學習規則來模擬感知機的學習過程。假設w1和w2初始值分別為1和-1(注意:已經不再是1和1了!),閾值θ依然為0(事實上為其它初值,也是可行的),那麼我們遵循如下步驟,即可完成判定西瓜的學習:

(1)計算判定西瓜的輸出值f

將這個輸出值帶入如圖5-2-b所示的階躍函數中,可得y=0

(2)顯然,針對西瓜,我們期望輸出的正確判定是:y=1,而現在實際輸出的值y』=0,也就是說,實際輸出有誤。這個時候,就需要糾偏。而糾偏,就需要利用公式(5.1)所示的學習規則。於是,我們需要計算出來誤差ep來。

(3)計算誤差ep

現在,我們把ep的值帶入公式(5.1)所示的規則中,更新網路的權值和閾值,即:

(3)那麼,在新一輪的網路參數(即權值、閾值)重新學習獲得後,我們再次輸入西瓜的屬性值,來測試一下,看看它能否正確判定:

再經過激活函數(階躍函數)處理後,輸出結果y=1,很高興,判定正確!

(4)我們知道,一個對象的類別判定正確,不算好,「大家好,才算真的好!」於是,在判定西瓜正確後,我們還要嘗試在這樣的網路參數下,看看香蕉的判定是否也是正確的:

類似地,經過激活函數(階躍函數)處理後,輸出結果y=0,判定也正確的!BINGO!誤差ep為0,打完收工,學習結束!

在這個案例里,僅僅經過一輪的「試錯法(trial-by-error)」,我們就搞定了參數的訓練,但你可別高興太早,誰叫這是一個「Hello World」版本的神經網路呢!事實上,在有監督的學習規則中,我們需要根據輸出與期望值的「落差」,經過多輪重試,反覆調整神經網路的權值,直至這個「落差」收斂到能夠忍受的範圍之內,訓練才告結束。

在上面,我們僅僅給出了感知機學習的一個感性例子,下面我們要給出感知機學習的形式化的描述。

5.4 感知機的訓練法則

通過前面的分析,我們可以看到,感知機是很容易實現邏輯上的「與(AND)」、「或(OR)」、「非(NOT)」等原子布爾函數(Primitive Boolean function),如圖5-3所示(睿智如你,你肯定發現了,這裡的確沒有「異或」,這個坑回頭我們在後面再填上)。

圖5-3 感知機實現邏輯運算

下面舉例說明。首先,我們注意到,假設f是如圖5-3所示的階躍函數,通過合適的權值和閾值,即可完成常見的邏輯運算(既然是邏輯運算,x1和x2都只能取值為0或1),例如:

(1)「與(x1∧x2)」:當權值w1=w2=1,閾值θ=2時,有:

此時,僅當x1=x2=1時,y=1,而在其它情況下(如x1和x2無論哪一個取0),y=0。這樣,我們在感知機中,就完成了邏輯「與」的運算。

(2)類似地,「或(x1∨x2)」:當w1=w2=1,閾值θ=0.5時,有:

此時,當x1或x2中有一個為「1」時,那麼y=1,而在其它情況下(即x1和x2均都取「0」),y=0。這樣,我們就完成了邏輯「或」的運算。

(3)在類似地,「非(┐x1)」:當w1=0.6,w2=,0,閾值θ=0.5時,有:

此時,當x1為「1」時,y=0,當x1為「0」時,y=1。這樣,就完成了邏輯「非」的運算(當然,如果以x2做「非」運算,也是類似操作,這裡不再贅述)。

更一般地,當我們給定訓練數據,神經網路中的參數(權值wi和閾值θ)都可以通過不斷地「糾偏」學習得到。為了方便起見,我們把閾值θ視為w0,而其權值設為固定值「-1」,那麼閾值θ就可視為一個「啞節點(dummy node)」。這樣一來,權重和閾值的學習可以「一統天下」稱為「權重」的學習。

如此一來,感知機的學習規則就可以更加簡單明了,對於訓練樣例(xy)(需要注意的是,這裡粗體字x表示訓練集合),若當前感知機的實際輸出y』,假設它不符合預期,存在「落差」,那麼感知機的權值依據如公式(5.2)規則調整:

其中,η∈(0,1)稱為學習率(learning rate),公式(5.2)其實是公式(5.1)的一般化描述。由公式(5.2)可知,如果(xy)預測正確,那麼可知y=y』,感知機的權值就不會發生任何變化,否則就會根據「落差」的程度做對應調整。

這裡需要注意的是,學習率η的作用是「緩和」每一步權值調整強度的。它本身的大小,也是比較難以確定的。如果η太小,網路調參的次數就太多,從而收斂很慢。如果η太大,「步子大了,容易扯著蛋」,從而錯過了網路的參數的最優解。因此,合適的η大小,在某種程度上,還依賴於人工經驗(如圖5-4所示)。

5.5 感知機的表徵能力

如果識別對象xn個特徵,那麼感知機可以看做,在n維實例空間(即點空間)中的超平面決策面,以向量的模式寫出來就是如圖5-5所示。

這樣一來的話,對於超平面一側的實例,感知機輸出為1(或稱判定為某一類),而對於超平面的另外一側實例,感知機輸出為0(判定為另外一類)。

由於感知機只有輸出層神經元可以進行激活函數的處理,也就是說它只擁有單層的功能元神經元(functional neuron),因此它的學習能力是相對有限的。比如說在5.4小節中,原子布爾函數中的「與、或、非」等問題都是線性可分的(linearly separable)的問題。

前面的章節中,我們提到的那位人工智慧泰斗明斯基(Minsky)已經證明,若兩類模式是線性可分的,那麼一定存在一個線性超平面可以將它們區分開來,如圖5-6(a)-(c)所示。也就是說,這樣的感知機,其學習過程一定會穩定(即收斂)下來,神經網路的權值可以學習得到。

但是對於線性不可分原子布爾函數(如「異或」操作),就不存在簡單地線性超平面將其區分開來(如圖5-6-(d))。在這種情況下,感知機的學習過程就會發生「震蕩(fluctuation)」,權值向量就難以求得合適解。這裡稍微為非專業讀者解釋一下什麼異或?所謂異或(XOR),就是當且僅當輸入值x1和x2不相等,則輸出為1。反之,輸出為0。你可以監督粗暴地把「異或」理解為:男歡女愛輸出為1,搞基都是沒有結果的(輸出為0)!

圖5-6 線性可分的「與、或、非」和線性不可分的「異或」

一個寄以厚望的感知機,居然連簡單的「異或」功能都實現不了,這點讓明斯基頗為失望。於是,在1969年,他和同事Papert合作寫下《感知機》一書[3],直接把「感知機」判了個n年有期徒刑(n在當時為不可知變數)。

這麼一說,好像明斯基是一位法官一樣。但其實呢,他更像《白雪公主》里的那位繼母王后。這是因為就是他,給那個叫「人工智慧」的「白雪公主」餵了一顆「毒蘋果」(《感知機》一書),讓這位「白雪公主」一睡就是20年(n=20)。

我們知道,絕大多數童話都有個「happy ending(完美結局)」,《白雪公主》也不例外。現在我們好奇的是,在人工智慧領域,誰又是那位「吻醒」白雪公主的「王子」呢?

欲知後事如何,且聽我們下回分解。

5.6小結

在本小節,我們首先用西瓜和香蕉的判定案例,感性地談了談感知機的工作流程。然後,我們又給出了感知機的形式化學習規則以及感知機的表徵能力。容易發現,感知機連常見的邏輯操作「異或」都難以實現,這一功能缺陷,直接讓人工智慧領域大神明斯基抓住了「小辮子」,然後就把「人工智慧」送進了長達二十年的「冬天」。

但英國浪漫主義詩人雪萊說了:「冬天來了,春天還會遠嗎?」

推薦閱讀:

【論文導讀】用一副眼鏡欺騙人臉識別系統
[行為檢測] CDC-Convolutional-De-Convolutional Networks for Precise Temporal Action Localization
最好用的 AI 開源數據集(涵蓋計算機視覺、NLP、語音等 6 大類)
Batch normalization和Instance normalization的對比?
有哪些好看的CNN模型畫法?

TAG:深度学习DeepLearning | 计算机视觉 |