深度|人工神經網絡深入分析

2021-01-07 雷鋒網

雷鋒網按:本文作者郭晴,劉偉。文章從神經網絡談到了人工神經網絡,並對此進行詳細的介紹。

最近「神經網絡」非常火,特別是AlphaGo與韓國選手李世石的比賽落幕後,各種關於神經網絡的文章滿天飛,但可能對於非專業領域出身的人來說接觸這些文章就會雲裡霧裡了。究其原因主要是缺少適合大部分人理解的神經網絡的科普文章,其實吳軍老師的《數學之美》在科普神經網絡這方面做的就比較通俗易懂,感興趣的朋友可以去讀一下吳老師的書。本文與吳老師的講解方式不同,筆者希望能從神經網絡的起源揭開神經網絡的面紗,從而幫助更多的對神經網絡感興趣但卻沒有相關理論基礎的朋友們。

說起人工神經網絡的起源肯定要追溯到生物的神經網絡。這裡大家先看一段關於神經元細胞原理的視頻:

http://www.tudou.com/listplay/sQi_LbKp7Kk/VUQGmBXIzf0.html

具體總結一下就是,神經元細由一個細胞體、一些樹突、一根軸突及許多突觸組成。神經細胞體是神經元的主體,內含細胞核。樹突是從細胞體向外延伸出許多神經纖維,用來接收來自其它神經元的輸入信號。軸突通過分支的神經末梢向外發出信號,與其他神經細胞的樹突相接觸形成所謂的突觸。下圖是人腦中的神經元細胞,大家可以對應神經元細胞圖著再理解一下。

為了便於大家對應理解人工神經網絡,這裡再分別總結一下神經元細胞重要組成部分的特點:

1.樹突、軸突、突觸分別相當於細胞體的輸入端、輸出端及輸入/輸出接口(I/O),並且多輸入單輸出;

2.興奮型和抑制型突觸決定神經細胞興奮和抑制(分別對應輸出脈衝串頻率高低),其中脈衝串代表神經元的信息;

3. 細胞體膜內外電位差(由突觸輸入信號總和)的升高超過閾值產生脈衝,神經細胞進入興奮狀態;

4. 突觸延遲使輸入與輸出間有固定時滯。

人工神經網絡

1943年,基於生物神經網絡莫克羅-彼特氏神經模型(McCulloch-Pitts′neuronmodel)誕生。它由心理學家Warren McCulloch(下圖左)和數學家Walter Pitts(下圖右)合作提出。

McCulloch-Pitts模型的基本思想是抽象和簡化生物神經元的特徵性成分。這個模型不需要捕捉神經元的所有屬性和行為,但要足以捕獲它執行計算的方式。McCulloch-Pitts模型的6個特點中前面4點和之前總結的生物神經元一致,具體對應請見下圖:

1.每個神經元都是一個多輸入單輸出的信息處理單元;

2.神經元輸入分興奮性輸入和抑制性輸入兩種類型;

3.神經元具有空間整合特性和閾值特性;

4.神經元輸入與輸出間有固定的時滯,主要取決於突觸延擱;

5.忽略時間整合作用和不應期;

6.神經元本身是非時變的,即其突觸時延和突觸強度均為常數。


McCulloch-Pitts模型公式如下:

其運作規則是:時間離散,時刻t(t=0,1,2,……)得到興奮型輸入xi,如果膜電位等於或大於閾值以及抑制型輸入為0,則在時刻t+1,神經元細胞輸出為1否則為0。

這項偉大的建模可了不得,從人的角度來看將顏色、形狀分為兩類只需要靠眼睛辨別,但是對於機器而言它能辨別只是一堆數據。如果平面上有兩組數據(如下圖所示),機器怎麼把兩組數據區分開,由圖可見平面上的直線方程就可以數據分為兩類,而Warren McCulloch和Walter Pitts所構建的人工神經元就是這麼一個模型,它的實質就是把特徵空間一切兩半,認為兩半分別屬兩個類。你恐怕再也想不到比這更簡單的分類器了。

但是McCulloch-Pitts模型缺乏一個對人工智慧而言至關重要的學習機制。因此這裡還需要為大家普及一下「歷史」。1949年唐納德·赫布(DonaldHebb)稱知識和學習發生在大腦主要是通過神經元間突觸的形成與變化,這個出人意料並影響深遠的想法簡稱赫布法則:

當細胞A的軸突足以接近以激發細胞B,並反覆持續地對細胞B放電,一些生長過程或代謝變化將發生在某一個或這兩個細胞內,以致A作為對B放電的細胞中的一個效率增加。

通俗來講就是兩個神經細胞交流越多,它們連接的效率就越高,反之就越低。羅森布拉特(Frank Rosenblatt)受到赫布基礎性工作的啟發,於1957年提出了"感知器" (Perceptron)。這是第一個用算法來精確定義神經網絡的,感知器由兩層神經元組成,輸入層接收外界信號,輸出層是McCulloch-Pitts神經元,即閾值邏輯單元。

1969 年,Marvin Minsky和Seymour Papert出版了新書《感知器:計算幾何簡介》。書中論證了感知器模型的兩個關鍵問題:其一,單層的神經網絡無法解決不可線性分割的問題,典型例子如同或(XNOR,兩個輸入如果相同,輸出為1;兩個輸入如果是不同,輸出為0。)其二,受硬體水平的限制,當時的電腦完全沒有能力完成神經網絡模型所需要的超大的計算量。

在此筆者就以單層神經元為例解釋人工神經元是如何工作的。

(這裡要感謝一下此網站作者提供的英文文章:

http://www.analyticsvidhya.com/blog/2016/03/introduction-deep-learning-fundamentals-neural-networks/)

x1,x2,…, xN:神經元的輸入。這些可以從輸入層實際觀測或者是一個隱藏層的中間值(隱藏層即介於輸入與輸出之間的所有節點組成的一層。幫助神經網絡學習數據間的複雜關係。大家不理解沒關係,後面講到多層神經網絡是會再跟大家解釋的)。

X0:偏置單元。這是常值添加到激活函數的輸入(類似數學裡y=ax+b中使直線不過原點的常數b)。即截距項,通常有+1值。

w0,w1,w2,…,wN:對應每個輸入的權重。甚至偏置單元也是有權重的。

a:神經元的輸出。計算如下:

需要解釋一下的是,式子裡的f是已知的激活函數,f使神經網絡(單層乃至多層)非常靈活並且具有能估計複雜的非線性關係的能力。在簡單情況下可以是一個高斯函數、邏輯函數、雙曲線函數或者甚至上是一個線性函數。利用神經網絡可讓其實現三個基本功能:與、或、非(AND, OR, NOT)。

這裡介紹一個基本的f函數,其實就是我們熟知的階躍函數:

例1:and功能實現如下:

神經元輸出:a = f( -1.5 + x1 + x2 )

真值表如下,可見列「a」與列「X1 AND X2」一致:

例2:or功能實現如下:

神經元輸出為:

a = f(-0.5 + x1 + x2 )

真值表如下,其中列「a」與「X1 OR X2」一致:

通過例1和例2我們可以看到,只要改變偏置單元的權重,我們就可以實現or功能。如果x1或x2任何一個為正則權重總值為正。 

例3:not功能實現如下:

神經元輸出為:a = f( 1 - 2 * x1 )

真值表如下:

筆者希望通過這些例子大家能直觀的理解一個神經元在神經網絡中是如何工作的。當然神經網絡中的函數有多種選擇,除了以上例子所用的函數,這裡我們再介紹一種常用的函數——sigmoid函數,幫助大家靈活的理解。函數圖像如下:

由圖可見sigmoid函數的優點在於輸出範圍有限,所以數據在傳遞的過程中不容易發散,並且其輸出範圍為(0,1),可以在輸出層表示概率。當然其也有相應的缺點,就是飽和的時候梯度太小。大家可以對應下面的and例子理解一下。

之前我們看到的例子中與、或、非功能都是線性可分的,感知器只有輸出層神經元進行激活函數處理,即只擁有一層功能神經元,學習能力非常有限(這就是本文之前提到的感知器模型關鍵問題之一)。因此非線性可分要用到多層神經元,下面筆者先介紹一下多層神經網絡。

神經網絡分為三種類型的層:

輸入層:神經網絡最左邊的一層,通過這些神經元輸入需要訓練觀察的樣本。

隱藏層:介於輸入與輸出之間的所有節點組成的一層。幫助神經網絡學習數據間的複雜關係。

輸出層:由前兩層得到神經網絡最後一層。5個分類的情況下輸出層將有5個神經元。

為什麼多層網絡是有用的?下面大家試著去了解神經網絡如何用多層來模擬複雜關係。要進一步理解這個,需要舉一個同或函數的例子。其真值表如下:

這裡我們可以看到當輸入都相同時,輸出為1,否則為0。這種關係不能由一個神經元獨立完成,因此需要一個多層網絡。使用多層的背後思想是:複雜關係功能可以被分解為簡單的功能及其組合。讓我們分解同或函數:

X1 XNOR X2 = NOT ( X1 XOR X2 )

       = NOT [(A+B).(A'+B') ]

       = (A+B)'+ (A'+B')'

       =(A'.B') + (A.B)

(注意: 這裡符號「+」代表或 ,符號「.」代表與,符號「'」「-」代表非)

這樣我們可以用之前講解的簡單的例子實現。

方法1: X1 XNOR X2 = (A』.B』) + (A.B)

設計神經元模擬A』.B』是一項挑戰,可通過以下實現:

神經元輸出:a = f( 0.5 – x1 – x2 )

真值表為:

現在,大家可以分別把A』.B』和A.B當作兩個獨立的部分,並結合為多層網絡。網絡的語義圖如下:

在這裡大家可以看到,在第一層,我們分別確定A』.B』和A.B。在第二層,我們將輸出並且在頂部實現OR功能。最後整體的網絡實現如下圖所示:

大家仔細看會發現這不過是我們之前畫的神經元的組合:

a1:實現了A』.B』;

a2:實現了A.B;

a3:建立在a1和a2上實現OR,從而有效的實現(A』.B』 + A.B)。

通過真值表驗證其功能:

現在大家應該大概能直觀地理解多層網絡是如何工作的了。在上面的例子中,我們不得不分別計算A』.B』和A.B。如果我們想僅僅是基於基本的AND, OR, NOT函數實現同或功能的話,大家請看下面的方法2。

方法2: X1 XNOR X2 = NOT[ (A+B).(A』+B』) ]

這裡我們用之前分解的第二步得到的式子來實現,網絡的語義圖如下:

大家可以看到在這裡神經網絡不得不使用三個隱藏層。整體網絡的實現和我們之前所做的相似:

a1:等同於 A  ;

a2:實現了 A』;

a3:等同於 B  ;

a4:實現了 B』;

a5:實現了OR, 實際上是 A+B ;

a6:實現了OR, 實際上是 A』+B』;

a7:實現了AND, 實際上是(A+B).(A』+B』) ;

a8:實現了NOT, 實際上是 NOT [ (A+B).(A』+B』)],即最終XNOR的輸出

真值表如下:

注意:典型的一個神經元(除了偏置單元)為下一層的每個神經元提供數據。在這種情況下,我們已經避免了從第一層到第二層的幾個連接,這是因為它們的權重是0,並且加入它們容易影響大家清晰的理解神經元間的計算。所以這裡沒有畫成下圖這種:

可見方法2我們成功的實現了同或功能,方法2的思想是如何將複雜的函數分解為多個層。但這種方法比方法1更複雜,因此大家應該會更喜歡方法1。

筆者之前學習神經網絡時也是看了很多資料,有些資料講的雲裡霧裡的。筆者希望大家閱讀本文後能少走彎路,理解神經網絡。最後,引用吳老師書中的話做結尾:「有不少專業術語乍一聽很唬人,『人工神經網絡』就屬於這一類,至少我第一次聽到這個詞就被唬住了。你想啊,在大家的印象當中,人們對人腦的結構都還根本沒有搞清楚,這就冒出來一個『人工的』神經網絡,似乎是在用計算機來模擬人腦。想到人腦的結構那麼複雜,大家的第一反應一定是人工神經網絡肯定非常高深。如果我們有幸遇到一個好心同時又善於表達的科學家或教授,他願意花一兩個小時的時間,深入淺出地把人工神經網絡的底細告訴你,你便會發現,『哦,原來是這麼回事』。如果我們不幸遇到一個愛賣弄的人,他會很鄭重地告訴你『我在使用人工神經網絡』或者『我研究的課題是人工神經網絡』,然後就沒有下文了,如此,你除了對他肅然起敬外,不由得可能還會感到自卑。當然還有好心卻不善於表達的人試圖將這個概念給你講清楚,但是他用了一些更難懂的名詞,講得雲山霧罩,最後你發現聽他講了好幾個小時,結果是更加糊塗了,你除了浪費時間外一無所獲,於是你得出一個結論:反正我這輩子不需要搞懂它了。

大家可別以為我是在說笑話,這些都是我的親身經歷。首先,我沒有遇到過一兩小時給我講懂的好心人,其次我遇到了一批在我前面賣弄的人,作為年輕人,總是希望把自己不明白的東西搞懂,於是我決定去旁聽一門課。不過,我聽了大約兩三次便不再去了,因為除了浪費時間,似乎我並沒得到什麼收穫。好在我自己做研究暫時用不到它,也就不再關心了。後來在美國讀博士期間,我喜歡在睡覺前躺著看書,沒事兒就捧著幾本關於人工神經網絡的教科書在床上看,居然也看懂了。然後再用它做了兩三個項目,算是學會了。到這時回過頭來再看『人工神經網絡』,其實並不複雜,入門也不難,只是我走了彎路。

雷鋒網註:本文由亮風臺授權雷鋒網(公眾號:雷鋒網)發布,如需轉載請聯繫原作者。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 人工神經網絡
    隨著科技的快速發展,人工智慧這個詞變得越來越熱門了,今天,小創君想給大家分享一個與人工智慧有關的主題——人工神經網絡。那麼,什麼是人工神經網絡呢?看到這個主題,相信很多理工科的學生的腦海裡都會自然而然地想到三個熟悉的詞:人工智慧、機器學習與深度學習。那他們之間到底具有怎樣的一個關係呢?
  • 機器學習算法匯總:人工神經網絡、深度學習及其它
    人工神經網絡算法模擬生物神經網絡,是一類模式匹配算法。人工神經網絡是機器學習的一個龐大的分支,有幾百種不同的算法。(其中深度學習就是其中的一類算法,我們會單獨討論),重要的人工神經網絡算法包括:感知器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網絡,自組織映射(Self-Organizing Map, SOM)。
  • 什麼是人工神經網絡(ANN)?
    作者 | Ben Dickson編譯 | CDA數據分析師過去十年中最具影響力的技術之一是人工神經網絡,它是深度學習算法的基本組成部分,是人工智慧的前沿。人工神經網絡如何運作人工神經網絡的核心成分是人工神經元。每個神經元接收來自其他幾個神經元的輸入,將它們乘以分配的權重,將它們相加,然後將總和傳遞給一個或多個神經元。一些人工神經元可能在將輸出傳遞給下一個變量之前將激活函數應用於輸出。
  • 土木工程與人工神經網絡(一)
    1.什麼是人工神經網絡第一次看到人工神經網絡(ANN)的時候會覺得它是一個黑盒子,扔進去一堆數據會返回一些東西,但其實簡單的人工神經網絡可以看做一個帶有若干參數的擬合函數或模型(類似於多項式擬合),但不同於簡單地線性相加,它的結構很複雜,神經元之間不光可以像下圖一樣,從輸入層到輸出層單向連接(前饋型神經網絡
  • 「人工神經網絡」人工神經網絡之BP算法
    人工神經網絡(Artificial Neural Network,ANN)是在受到了生物學的啟發後創建的,在某種程度上它是對生物大腦的一種模擬。人們仿照生物神經網絡的結構,使用簡單運算單元模擬神經元,並將大量運算單元按某種形式密集連接,便構成了人工神經網絡。結構如圖:人工神經網絡(ANN)模型帶有權重值(w1,w2,...
  • 人工神經網絡簡介
    人工神經網絡則是把對生物神經網絡的認識與數學統計模型相結合,藉助數學統計工具來實現。另一方面在人工智慧學的人工感知領域,我們通過數學統計學的方法,使神經網絡能夠具備類似於人的決定能力和簡單的判斷能力,這種方法是對傳統邏輯學演算的進一步延伸。         人工神經網絡中,神經元處理單元可表示不同的對象,例如特徵、字母、概念,或者一些有意義的抽象模式。
  • 什麼是深度學習? - 45分鐘理解深度神經網絡和深度學習
    第一,端到端的深度神經網絡需要大量的樣本數據才能工作得很好,因此很多公司都在花費大量的人力物力去生成標註數據(一般通過人工標註,催生了很多專門做數據標註的外包公司);第二,人工設計的特徵並不是都不能用的,有些人工特徵還是能代表著人類智能的,是可以用來作為合理的特徵的,而端到端的學習無法用這些特徵。當然,通過適當的改造和結合,也可以集成人工特徵到深度神經網絡中,這裡就不展開討論。
  • 通俗理解神經網絡與深度學習
    不管是 DeepMind,還是 OpenAI,他們在訓練人工智慧的時候都用到了深度學習,也就是有很多層的人工神經網絡。想必大部分讀者對「神經網絡」的最初印象都來自於大腦神經,顧名思義,神經網絡必然和腦神經有著千絲萬縷的聯繫。那麼神經網絡為什麼會這麼火呢?我們先來看看神經網絡的發家史。1.
  • 算法的算法:人工神經網絡
    在上周的人工神經網絡課程中介紹了機器學習中的支持向量機(SVM:Support Vector Machine)與前饋網絡RBF的之間的聯繫,而對於由傳遞函數為線性函數組成的單層網絡的代表自適應線性單元(ADLINE:Adaptive  Linear Element)更是和傳統信號處理中的自適應濾波器相類似。
  • 手機也能應用深度神經網絡
    電子與計算機工程助理教授王彥志(Yanzhi Wang),設計了一種在行動裝置上運行深度神經網絡的方法,就像普通的手機一樣。答案在於一種被稱為深度神經網絡的人工智慧技術。這些網絡非常擅長識別和分類數據,但它們往往需要大量的計算和內存才能運行——由於需求較高而不能在一般的智慧型手機上快速運行。如今,東北大學的研究人員已經證明了一種在智慧型手機或類似系統上運行深度神經網絡的方法。使用他們的方法,這些網絡執行任務的速度比以前快56倍,且不失準確性。
  • 走近深度學習:神經網絡工作原理解析
    神經網絡是一種模仿生物神經網絡的結構和功能的數學模型或計算模型,由大量的人工神經元聯結進行計算。在深度學習時代,基於神經網絡的目標檢測算法也大放異彩。為了能夠幫助大家更好的了解目標檢測領域,猩算法開設「目標檢測」系列文章,精選乾貨文章,持續分享。
  • 初識人工神經網絡
    這也就是神經網絡的魅力所在。人工神經網絡(artificial neural networks) 是一種模仿生物神經網絡行為特徵,進行信息處理的算法數學模型。在人工神經網絡模型中使用單元節點模擬神經元,通過調整神經網絡內部大量節點(神經元)之間相互連接的權重來達到處理信息的目的。
  • 神經網絡與深度學習
    隱藏層使得感知機能夠發展為擬合萬物的神經網絡模型,而反向傳播算法則是整個神經網絡訓練的核心要義。要學習深度學習,恐怕不得不先溫習一下機器學習,搞清楚二者之間的關係。簡單來說,機器學習就是從歷史數據中探索和訓練出數據的普遍規律,將其歸納為相應的數學模型,並對未知的數據進行預測的過程。
  • 人工神經網絡算法及其簡易R實現
    人工神經網絡(Artificial Neural Network)簡單而言是一種分類算法。作為機器學習的一個龐大分支,人工神經網絡目前大約有幾百種算法,其中包括一些著名的ANN算法:感知器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網絡和自組織映射(Self-Organizing Map, SOM)等等,這篇文章我們只介紹最基本的人工神經網絡算法原理及其簡易的R語言實現方式。
  • 機器學習:人工神經網絡ANN
    神經網絡是從生物領域自然的鬼斧神工中學習智慧的一種應用。
  • 深度神經網絡的灰色區域:可解釋性問題
    深度學習的成就在昨天與軟體架構師David Lazar關於「how everything old is new again」的討論中,我們討論到了關於深度神經網絡及其優越效果方面的話題。一個人如果不是與世隔絕5年,那麼他一定會發現我們人類在人工神經網絡(ANN)方面已經取得了顯著的成就。
  • 推薦| 九本不容錯過的深度學習和神經網絡書籍
    搭建你自己的神經網絡(Make Your Own Neural Network)價格:45 美元一步步讓你了解神經網絡的數學原理並用 Python 搭建自己的神經網絡。神經網絡是深度學習和人工智慧的關鍵元素。然而,幾乎很少有人真正了解神經網絡如何運作。本書從非常簡單的思想開始,讓你在趣味和從容不迫中,逐漸了解神經網絡的運作原理。2.
  • 【神經網絡】神經網絡簡介
    [1]FFNN,Feedforward Neural Network信息傳播:朝著一個方向(反向傳播和這個不是同一個概念)前饋神經網絡是我們接觸到論文中最常用的一種神經網絡,簡稱前饋網絡。是實際應用中最常見的神經網絡結構,是人工神經網絡的一種,前饋描述的是網絡的結構,指的是網絡的信息流是單向的,不會構成環路。
  • 推薦 九本不容錯過的深度學習和神經網絡書籍
    搭建你自己的神經網絡(Make Your Own Neural Network)價格:45 美元一步步讓你了解神經網絡的數學原理並用 Python 搭建自己的神經網絡。神經網絡是深度學習和人工智慧的關鍵元素。然而,幾乎很少有人真正了解神經網絡如何運作。
  • 獨家 | 一文讀懂人工神經網絡
    本文通過使用淺顯易懂的語言和介紹youtube上的實驗方式帶讀者認識人工神經網絡。人工神經網絡(ANN)是一種用於機器學習的計算模型,它的工作方式和生物的神經元類似。 當信息到達神經元,它們(神經元)通過調整網絡去感知和獲取這些信息得出一個理想的結果。通過神經元傳輸儘量多的數據會有助於得到更精準的結果。這就是神經網絡中的「訓練」。 在使用神經網絡之前,我們需要訓練和調試,以得到理想的決策結果。