神經網絡的快速介紹

人工神經網絡(ANN)是一種計算模型,受到人腦過程信息生物神經網絡的啓發。人造神經網絡在機器學習研究和行業中引起了極大興奮,這得益於語音識別,計算機視覺和文本處理方面的許多突破性成果。在這篇博文中,我們將嘗試開發對稱爲多層感知器的特定類型人造神經網絡的理解。

單神經元

神經網絡中的基本計算單位是神經,通常稱爲節點單位它從一些其他節點或外部源接收輸入並計算輸出。每個輸入具有相關聯的權重(w),其基於其對其他輸入的相對重要性而被分配。節點將函數f(定義如下)應用於其輸入的加權和,如下圖1所示:

屏幕截圖2016-08-09 at 3.42.21 AM.png

圖1:單個神經元

上述網絡採用數字輸入X1X2,並具有與這些輸入相關聯的權重w1w2另外,還有另一個輸入1,其重量b(稱爲偏置)與其相關聯。我們將在稍後瞭解有關偏見的作用的更多細節。

如圖1所示計算來自神經元的輸出Y。函數f是非線性的,稱爲激活函數激活功能的目的是將非線性引入神經元的輸出。這很重要,因爲大多數現實世界的數據是非線性的,我們希望神經元學習這些非線性表示。

每個激活函數(或非線性)都採用單個數字,並對其執行一定的固定數學運算[2]在實踐中可能會遇到幾種激活功能:

  • Sigmoid: 取實值輸入並將其壓縮到0到1之間

σ(x)= 1 /(1 + exp(-x))

  • tanh:取實數輸入並將其壓縮到範圍[-1,1]

tanh(x)=2σ(2x)-1

  • ReLU:ReLU代表整流線性單元。它需要實值輸入並將其設置爲零(將負值替換爲零)

f(x)= max(0,x)

下面的圖[2]顯示了上述每個激活功能。

屏幕截圖2016-08-08在11.53.41 AM圖2:不同的激活功能

偏見的重要性:偏差的主要功能是爲每個節點提供可訓練的常數值(除了節點接收的正常輸入之外)。請參閱此鏈接,以瞭解有關神經元偏見的作用的更多信息。

前饋神經網絡

前饋神經網絡是第一種也是最簡單的人造神經網絡[3]它包含多個排列成層次的神經元(節點)來自相鄰層的節點在它們之間具有連接邊緣所有這些連接都具有與它們相關的權重

前饋神經網絡的一個例子如圖3所示。

屏幕截圖2016-08-09 at 4.19.50 AM.png

圖3:前饋神經網絡的一個例子

前饋神經網絡可以由三種類型的節點組成:

  1. 輸入節點 - 輸入節點向外部網絡提供信息,並稱爲“輸入層”。在任何Input節點中不執行計算 - 它們只將信息傳遞給隱藏節點。
  2. 隱藏節點 - 隱藏節點與外界無直接聯繫(因此名稱爲“隱藏”)。它們執行計算並將信息從輸入節點傳送到輸出節點。隱藏節點的集合形成“隱藏層”。而前饋網絡只能有一個輸入層和一個輸出層,它可以有零個或多個隱藏層。
  3. 輸出節點 - 輸出節點統稱爲“輸出層”,負責從網絡到外界的計算和傳輸信息。

在前饋網絡中,信息僅在一個方向上移動 - 從輸入節點向前移動,通過隱藏節點(如果有的話)和輸出節點。網絡中沒有周期或循環[3](前饋網絡的這種特性不同於循環神經網絡,其中節點之間的連接形成一個週期)。

以下給出了前饋網絡的兩個示例:

  1. 單層感知器 - 這是最簡單的前饋神經網絡[4],不包含任何隱藏層。您可以在[4][5][6],[7]中瞭解更多有關單層感知器的信息

  2. 多層感知器 - 多層感知器具有一個或多個隱藏層。我們將僅討論下面的多層感知器,因爲它們比當今實際應用中的單層感知器更有用。

多層感知器

多層感知器(MLP)包含一個或多個隱藏層(除了一個輸入層和一個輸出層之外)。雖然單層感知器只能學習線性函數,但多層感知器也可以學習非線性函數。

圖4顯示了具有單個隱藏層的多層感知器。注意,所有連接都具有與它們相關聯的權重,但是在圖中僅示出三個權重(w0,w1,w2)。

輸入層:輸入層有三個節點。偏置節點的值爲1.另外兩個節點將X1和X2作爲外部輸入(這是取決於輸入數據集的數值)。如上所述,在輸入層中不執行計算,因此輸入層中的節點的輸出分別爲1,X1和X2,饋入隱層。

隱層: 隱層也有三個節點,Bias節點的輸出爲1.隱層中的另外兩個節點的輸出取決於輸入層(1,X1,X2)的輸出以及與連接(邊緣)相關聯的重量。圖4顯示了其中一個隱藏節點(突出顯示)的輸出計算。類似地,可以計算來自其他隱藏節點的輸出。記住f是指激活功能。然後將這些輸出饋送到輸出層中的節點

ds.png

圖4:具有一個隱層的多層感知器

輸出層:輸出層有兩個節點,它們從隱藏層獲取輸入,並對突出顯示的隱藏節點執行類似的計算。作爲這些計算的結果計算出的值(Y1和Y2)用作多層感知器的輸出。

給定一組特徵X =(x1,x2,...) 和目標y,多層感知器可以瞭解特徵和目標之間的關係,用於分類或迴歸。

讓我們舉個例子來更好地瞭解多層感知器。假設我們有以下學生標記數據集:

train.png

兩個輸入列顯示學生學習的小時數和學生獲得的中期標記。最終結果列可以有兩個值1或0,表示學生是否在最終期限內通過。例如,我們可以看到,如果學生在中期學習了35個小時,獲得了67分,他/她終於通過了最後一個任期。

現在,假設我們想預測一個在中期學習25小時並有70分的學生是否會通過最後一個學期。

test.png

這是一個二分類問題,其中多層感知器可以從給定的示例(訓練數據)中學習,並給出新的數據點的知情預測。下面我們將看到多層感知器如何學習這種關係。

培訓我們的MLP:反向傳播算法

多層感知器學習的過程稱爲反向傳播算法。我會推薦閱讀這個Quora的回答由Hemanth Kumar(引用如下),這反映了反向傳播。

錯誤的向後傳播,通常縮寫爲BackProp是可以訓練人造神經網絡(ANN)的幾種方式之一。它是一個監督的培訓計劃,這意味着它從標記的培訓數據(有一個主管,指導其學習)學習。

簡單來說,BackProp就像“從錯誤中學習”。主管當錯誤地糾正ANN。

ANN由不同層的節點組成;輸入層,中間隱藏層和輸出層。相鄰層的節點之間的連接具有與它們相關聯的“權重”。學習的目的是爲這些邊緣分配正確的權重。給定輸入向量,這些權重確定輸出向量是什麼。

在監督學習中,訓練集被標註。這意味着,對於某些給定的輸入,我們知道所需/期望的輸出(標籤)。

BackProp算法:
最初所有邊緣權重都是隨機分配的。對於訓練數據集中的每個輸入,ANN被激活並且觀察其輸出。將此輸出與我們已經知道的所需輸出進行比較,並將錯誤“傳播”回上一層。該錯誤被註明,權重相應地“調整”。重複該過程,直到輸出誤差低於預定閾值。

一旦上述算法終止,我們就有一個“學習”的ANN,我們認爲它們已經準備好使用“新的”輸入。據說這個ANN從幾個例子(標記數據)和錯誤(錯誤傳播)中學到了。

現在我們瞭解Backpropagation如何工作,讓我們回到上面顯示的學生標記數據集。

圖5所示的多層感知器(改編自Sebastian Raschka 對反向傳播算法出色視覺解釋)在輸入層(除偏倚節點之外)中有兩個節點,它們輸入“小時研究”和“中期標記”。它還具有一個帶有兩個節點(除了Bias節點之外)的隱藏層。輸出層也有兩個節點 - 上層節點輸出“Pass”的概率,而下層節點輸出“Fail”的概率。

在分類任務中,我們通常使用Softmax函數作爲多層感知器輸出層中的激活函數,以確保輸出是概率,它們加起來爲1. Softmax函數採用任意實值分數向量,將它壓縮到零和一之間的值向量,總和爲1。所以在這種情況下,

概率(通過)+概率(失敗)= 1

步驟1:正向傳播

網絡中的所有權重都被隨機分配。讓我們考慮 下面圖5中標記爲V的隱藏層節點假設從輸入到該節點的連接的權重爲w1,w2和w3(如圖所示)。

然後,網絡將第一個訓練示例作爲輸入(我們知道,對於輸入35和67,通過的概率爲1)。

  • 輸入到網絡= [35,67]
  • 來自網絡的所需輸出(目標)= [1,0]

那麼考慮到節點輸出V可以如下計算(f是一個激活函數,如sigmoid):

V =  (1 * w1 + 35 * w2 + 67 * w3)

類似地,還計算隱層中另一節點的輸出。隱層中的兩個節點的輸出充當輸出層中兩個節點的輸入。這使我們能夠計算輸出層中兩個節點的輸出概率。

假設輸出層中兩個節點的輸出概率分別爲0.4和0.6(由於權重是隨機分配的,輸出也將是隨機的)。我們可以看出,所計算的概率(0.4和0.6)與期望的概率(分別爲1和0)非常遠,因此圖5中的網絡被稱爲具有“不正確的輸出”。

屏幕截圖2016-08-09在11.52.57 PM.png

圖5:多層感知器中的正向傳播步驟

步驟2:反向傳播和權重更新

我們計算輸出節點的總誤差,並通過反向傳播通過網絡傳播這些錯誤來計算梯度然後,我們使用一種優化方法諸如梯度下降到“調節”全都與減小誤差在輸出層的目的在網絡中的權重。這在下面的圖6中示出(現在忽略圖中的數學方程)。

假設與所考慮的節點相關聯的新權重是w4,w5和w6(反向傳播和調整權重之後)。

屏幕截圖2016-08-09在11.53.06 PM.png

圖6:多層感知器中的向後傳播和權重更新步驟

如果我們現在再次向網絡輸入相同的例子,那麼網絡應該比以前更好,因爲現在已經調整了權重以最小化預測中的錯誤。如圖7所示,與[0.6,-0.4]相比,輸出節點處的誤差現在減小到[0.2,-0.2]。這意味着我們的網絡已經學會了正確分類我們的第一個培訓示例。

屏幕截圖2016-08-09 at 11.53.15 PM.png

圖7:MLP網絡現在在同一輸入上表現更好

我們重複這個過程與我們的數據集中的所有其他培訓示例。然後,我們的網絡據說已經學到了這些例子。

如果我們現在想預測一個在中期學習25個小時並有70個學分的學生是否會通過最後一個學期,我們將進行正向傳播步驟,找出“通過”和“失敗”的輸出概率。

我在這裏避免了數學方程和概念的解釋,例如“漸變下降”,並且相當試圖爲算法開發直覺。有關反向傳播算法的更多數學討論,請參閱  此鏈接

多層感知器的3D可視化

Adam Harley創建了一個多層感知器的  3D可視化,已經在手寫數字的MNIST數據庫上進行過培訓(使用反向傳播)。

網絡採用784個數字像素值作爲手寫數字的28×28圖像的輸入(輸入層中有784個節點對應於像素)。網絡在第一個隱藏層有300個節點,第二個隱藏層中有100個節點,輸出層中有10個節點(對應10位)[15]

儘管與之前的部分討論的網絡相比,這裏描述的網絡要大得多(使用更多的隱藏層和節點),正向傳播步驟和反向傳播步驟中的所有計算都以與所討論的相同的方式(在每個節點處)完成之前。

圖8顯示了當輸入爲數字'5'時的網絡。

屏幕截圖2016-08-09 at 5.45.34 PM.png

圖8:可視化網絡輸入'5'

具有較高輸出值的節點由較亮的顏色表示。在輸入層中,亮點是接收較高數值像素值作爲輸入的節點。注意在輸出層中,唯一的亮點對應於數字5(輸出概率爲1,高於其他輸出概率爲0的九個節點)。這表示MLP正確分類了輸入數字。我強烈建議玩這個可視化和觀察不同層節點之間的連接。

深層神經網絡

  1. 深度學習與普通機器學習有什麼區別?
  2. 神經網絡與深層神經網絡有什麼區別?
  3. 深層次學習與多層感知器有何不同?

結論

我已經跳過了這篇文章中討論的一些概念的重要細節,以便於理解。我將推薦通過斯坦福神經網絡教程的Part1Part2Part3案例研究,以深入瞭解多層感知器。

如果您有任何問題或建議,請在下面的意見中通知我們

參考

  1. 人造神經元模型
  2. 神經網絡第1部分:建立架構(Stanford CNN教程)
  3. 關於前饋神經網絡的維基百科文章
  4. 維基百科文章關於感知器 
  5. 單層神經網絡(感知器) 
  6. 單層感知器 
  7. 加權網絡 - 感知器
  8. 神經網絡模型(監督)(scikit學習文檔)
  9. 神經網絡中的隱藏層是什麼計算?
  10. 如何選擇前饋神經網絡中隱藏層和節點的數量? 
  11. 人造神經網絡的崩潰介紹
  12. 爲什麼BIAS在ANN中是必需的?我們應該爲每一層分別設置BIAS嗎?
  13. 基礎神經網絡教程 - 理論
  14. 神經網絡神祕(視頻系列):第1部分,Welch Labs @ MLconf SF
  15. AW Harley,“An Interactive Node-Link Visualization of Convolutional Neural Networks”,ISVC,page 867-877,2015(link


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章