最簡單的深度學習演算法——感知器的前世今生

千鋒Python唐小強發表於2019-11-11

寫在前面:

各位小夥伴們,又到了喜聞樂見的更新時間,最近猛料不斷,先有Boston動力的“仁義”機器人反恐演習,緊接著MIT的狗狗們在實驗室的綠茵場上集體賣萌,讓我們感慨強人工智慧離我們也許不遠了。

最簡單的深度學習演算法——感知器的前世今生

作為快要禿頭的我們,又該怎麼看待這個快速變化的世界呢?在知識更新越來越快的現在,想要專注於當下似乎都變得艱難。其實柳貓想要告訴大家,作為一個普通人,對各種資訊越是瞭解的多,認識的越是淺薄,為了增強自己的不可替代性,必須增加自己專業的深度,從一而終。

今天,想跟大家分享一下最早也是最簡單的一個 機器學習模型:感知器~

感知器的誕生——從樣本中學習

神經網路的AI先驅們一直依靠著神經元的繪圖以及它們相互連線的方式,進行著艱難的摸索。康奈爾大學的弗蘭克·羅森布拉特是最早模仿人體自動圖案識別視覺系統架構的人之一。

最簡單的深度學習演算法——感知器的前世今生

他發明了一種看似簡單的 網路感知器(perceptron),這種學習演算法可以學習如何將圖案進行分類,例如識別字母表中的不同字母。**演算法是為了實現特定目標而按步驟執行的過程,**就像烘焙蛋糕的食譜一樣。

如果我們瞭解了感知器如何學習圖案識別的基本原則,那麼在理解深度學習工作原理的路上已經成功了一半。 感知器的目標是確定輸入的圖案是否屬於影象中的某一類別(比如貓)。

最簡單的深度學習演算法——感知器的前世今生

上圖解釋了感知器的輸入如何 通過一組權重,來實現輸入單元到輸出單元的轉換。權重是對每一次輸入對輸出單元做出的最終決定所產生影響的度量,但是我們如何找到一組可以將輸入進行正確分類的權重呢?

解決這個問題的傳統方法,是根據分析或特定程式來手動設定權重。這需要耗費大量人力,而且往往依賴於直覺和工程方法。另一種方法則是使用一種 從樣本中學習的自動過程,和我們認識世界上的物件的方法一樣。需要很多樣本來訓練感知器,包括不屬於該類別的反面樣本,特別是和目標特徵相似的,例如,如果識別目標是貓,那麼狗就是一個相似的反面樣本。這些樣本被逐個傳遞給感知器,如果出現分類錯誤,演算法就會自動對權重進行校正。

感知器具體演算法

這種感知器學習演算法的美妙之處在於,如果已經存在這樣一組權重,並且有足夠數量的樣本,那麼它肯定能自動地找到一組合適的權重。在提供了訓練集中的每個樣本,並且將輸出與正確答案進行比較後,感知器會進行遞進式的學習。如果答案是正確的,那麼權重就不會發生變化。但如果答案不正確(0被誤判成了1,或1被誤判成了0),權重就會被略微調整,以便下一次收到相同的輸入時,它會更接近正確答。這種漸進的變化很重要,這樣一來,權重就能接收來自所有訓練樣本的影響,而不僅僅是最後一個。

最簡單的深度學習演算法——感知器的前世今生

感知器是具有單一人造shen經元的神經網路,它有一個輸入層,和將輸入單元和輸出單元相連的一組連線。感知器的目標是對提供給輸入單元的圖案進行分類。輸出單元執行的基本操作是,把每個輸入(xn)與其連線強度或權重(wn)相乘,並將乘積的總和傳遞給輸出單元。上圖中,輸入的加權和(∑i=1,…,n wi xi)與閾值θ進行比較後的結果被傳遞給階躍函式。如果總和超過閾值,則階躍函式輸出“1”,否則輸出“0”。例如,輸入可以是影象中畫素的強度,或者更常見的情況是,從原始影象中提取的特徵,例如影象中物件的輪廓。每次輸入一個影象,感知器會判定該影象是否為某類別的成員,例如貓類。輸出只能是兩種狀態之一,如果影象處於類別中,則為“開”,否則為“關”。“開”和“關”分別對應二進位制值中的1和0。

感知器學習演算法可以表達為:

感知器如何區分兩個物件類別的幾何解釋

如果對感知器學習的這種解釋還不夠清楚,我們還可以通過另一種 更簡潔的幾何方法,來理解感知器如何學習對輸入進行分類。對於只有兩個輸入單元的特殊情況,可以在二維圖上用點來表示輸入樣本。每個輸入都是圖中的一個點,而 網路中的兩個權重則確定了一條直線。感知器學習的目標是移動這條線,以便清楚地區分正負樣本。對於有三個輸入單元的情況,輸入空間是三維的,感知器會指定一個平面來分隔正負訓練樣本。在一般的情況下,即使輸入空間的維度可能相當高且無法視覺化,同樣的原則依然成立。

最簡單的深度學習演算法——感知器的前世今生

這些物件有兩個特徵,例如尺寸和亮度,它們依據各自的座標值(x,y)被繪製在每張圖上。左邊圖中的兩種物件(加號和正方形)可以通過它們之間的直線分隔開;感知器能夠學習如何進行這種區分。其他兩個圖中的兩種物件不能用直線隔開,但在中間的圖中,兩種物件可以用曲線分開。而右側圖中的物件必須捨棄一些樣本才能分隔成兩種型別。如果有足夠的訓練資料,深度學習網路就能夠學習如何對這三個圖中的型別進行區分。

最終, 如果解決方案是可行的,權重將不再變化,這意味著感知器已經正確地將訓練集中的所有樣本進行了分類。

但是,在 所謂的“過度擬合”(overfitting)中,也可能沒有足夠的樣本,網路僅僅記住了特定的樣本,而不能將結論推廣到新的樣本。 為了避免過度擬合,關鍵是要有另一套樣本,稱為“測試集”(test set),它沒有被用於訓練網路。訓練結束時,在測試集上的分類表現,就是對感知器是否能夠推廣到類別未知的新樣本的真實度量。泛化(generalization)是這裡的關鍵概念。在現實生活中,我們幾乎不會在同樣的視角看到同一個物件,或者反覆遇到同樣的場景,但如果我們能夠將以前的經驗泛化到新的視角或場景中,我們就可以處理更多現實世界的問題。

利用感知器區分性別

舉一個用感知器解決現實世界問題的例子。想想如果去掉頭髮、首飾和第二性徵,比如男性比女性更為突起的喉結,該如何區分男性和女性的面部。

最簡單的深度學習演算法——感知器的前世今生

這張臉屬於男性還是女性?人們通過訓練感知器來辨別男性和女性的面孔。來自面部影象(上圖)的畫素乘以相應的權重(下圖),並將該乘積的總和與閾值進行比較。每個權重的大小被描繪為不同顏色畫素的面積。正值的權重(白色)表現為男性,負值的權重(黑色)傾向於女性。鼻子寬度,鼻子和嘴之間區域的大小,以及眼睛區域周圍的影象強度對於區分男性很重要,而嘴和顴骨周圍的影象強度對於區分女性更重要。

最簡單的深度學習演算法——感知器的前世今生

區分男性與女性面部的工作有趣的一點是,雖然我們很擅長做這種區分,卻無法確切地表述男女面部之間的差異。由於沒有單一特徵是決定性的,因此這種模式識別問題要依賴於將大量低階特徵的證據結合起來。 感知器的優點在於,權重提供了對性別區分最有幫助的面部的線索。令人驚訝的是,人中(即鼻子和嘴脣之間的部分)是最顯著的特徵,大多數男性人中的面積更大。眼睛周圍的區域(男性較大)和上頰(女性較大)對於性別分類也有著很高的資訊價值。感知器會權衡來自所有這些位置的證據來做出決定,我們也是這樣來做判定的,儘管我們可能無法描述出到底是怎麼做到的。

感知器的擴充套件

感知器激發了對高維空間中模式分離的美妙的數學分析。當那些點存在於有數千個維度的空間中時,我們就無法依賴在生活的三維空間裡對點和點之間距離的直覺。俄羅斯數學家弗拉基米爾·瓦普尼克(Vladimir Vapnik)在這種分析的基礎上引入了一個分類器,稱為“支援向量機”(Support Vector Machine)。

最簡單的深度學習演算法——感知器的前世今生

它將感知器泛化,並被大量用於機器學習。他找到了一種自動尋找平面的方法,能夠最大限度地將兩個類別的點分開(線性)。這讓泛化對空間中資料點的測量誤差容忍度更大,再結合 作為非線性擴充的“核心技巧”(kernel trick),支援向量機演算法就成了機器學習中的重要支柱。

總結——並非萬能的感知器

在感知器中,每個輸入都獨立地向輸出單元提供證據。但是,如果需要依靠多個輸入的組合來做決定,那會怎樣呢?這就是感知器無法區分螺旋結構是否相連的原因:單個畫素並不能提供它是在內部還是外部的位置資訊。儘管在多層前饋神經網路中,可以在 輸入和輸出單元之間的中間層中形成多個輸入的組合,但是在20世紀60年代,還沒有人知道如何訓練簡單到中間 只有一層“隱藏單元”(hiddenunits)的神經網路


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2663559/,如需轉載,請註明出處,否則將追究法律責任。

相關文章