神經網路入門 第一部分

查志強發表於2015-08-08

【原文:http://blog.sina.com.cn/s/blog_6a67b5c50100tspb.html

【翻譯】AI:神經網路入門 第一部分

英文原文連結:http://www.codeproject.com/KB/recipes/NeuralNetwork_1.aspx

作者Sacha Barber

翻譯本站http://hi.baidu.com/ebfok原創

說明:翻譯力求保持原貌,刪去了一些無關緊要的內容;水平有限,錯誤難免;轉載請註明出處。

-------------------------------------------------------------------------------------

說明

本文是我發表的三篇文章之一。內容如下:

  1. 第一部分:介紹感知器(單層神經網路)
  2. 第二部分:介紹多層神經網路,使用反向傳播訓練方法來解決一個非線性分類問題,即XOR邏輯閘問題。這類問題是不能用感知器解決的
  3. 第三部分:介紹使用遺傳演算法來訓練一個多層神經網路,解決某些邏輯問題

從一些生物知識說起

大腦中的神經細胞被稱為神經元。人類大腦中大約含有10^1010^13個神經元。每個神經元都能與其他幾千個神經元聯絡起來。神經元是大腦用來處理資訊的基本單元。

神經元是什麼樣子

神經元由細胞體以及從細胞體中延伸出來的各種擴充套件物組成。其中大部分呈枝狀被稱為樹突。有一根特別長的叫做軸突。圖中的虛線處就是軸突小丘,也就是訊號傳輸開始的地方。如下圖所示

神經網路入門 <wbr>第一部分

 

圖一 神經元

細胞的外部是細胞膜。膜的內部和外部之間存在電勢差(膜電位)。

如果輸入足夠大,就會產生一個動作電位。接著,這個動作電位(神經衝動)沿著軸突離開細胞體。

神經網路入門 <wbr>第一部分

 

圖二 神經衝動

突觸

兩個神經元相互聯接的部位稱為突觸。資訊總是經由軸突(見圖一)離開一個神經元,然後越過突觸到達接收神經元。

神經元啟用

神經元只有在輸入大於某一閾值時才會啟用。It should, however, be noted that firing doesn't get bigger as the stimulus increases, its an all or nothing arrangement.

神經網路入門 <wbr>第一部分

 

 

圖三 神經元啟用

神經元通過脈衝訊號來通訊。傳送的資訊是以來編碼的。

神經元的輸入

突觸分為興奮性的和抑制性的。

到達興奮性突觸的脈衝訊號往往啟用接收神經元。到達抑制性突觸的脈衝訊號則往往抑制接收神經元。

 

細胞體和突觸計算(通過一個複雜的化學/電過程)接收的的興奮性輸入和抑制性輸入(時空總和)之間的差值。

當這一差值足夠大(相對於該神經元的閾值)時,神經元就啟用了。

粗略地說,興奮性脈衝越快到達突觸,神經元就啟用得越快(抑制性脈衝相類似)。

什麼是人工神經網路

假設每個神經元都有一個啟用率。也假設一個神經元與其他m個神經元聯接起來,所以接受m個輸入"x1 …. … xm",如下圖所示:

神經網路入門 <wbr>第一部分

 

圖四 人工神經元的結構

該結構實際上被稱為感知器。感知器(由Rosenblatt [1962]發明)是最早的人工神經網路模型。感知器對單個神經元建模,如果輸入的加權和大於某個可調整的閾值就輸出1(否則輸出0,此即上文提到的生物脈衝)。

圖四中,輸入訊號(x1,x2,x3..xm)和聯接權值(w1,w2,w3..wm)通常是實數值,可正可負。若xi趨向於使感知器啟用,則權值wi為正值,反之為負值。

感知器本身由權值,加法器,啟用函式以及可調閾值(以下稱 偏置)組成。

通常為了方便起見,將偏置也作為一個輸入訊號,如下圖所示

神經網路入門 <wbr>第一部分

 

圖五 將偏置作為附加輸入的人工神經元結構

偏置可以被看作是感知器的與其輸入無關的啟用傾向。圖五所示的感知器將被啟用,如果加權和>0

 

神經網路入門 <wbr>第一部分

啟用函式

通常採用以下啟用函式。

Sigmoid函式(S函式)

輸入越強,神經元啟用得越快(啟用率越高)。Sigmoid函式在多層網路中同樣十分有用,因為S曲線是可微分的(這在多層網路的反向傳播訓練中是必要的)。

神經網路入門 <wbr>第一部分

神經網路入門 <wbr>第一部分

 

 

階躍函式

是一個開關函式,  0 > x  0,  x >= 0  1

神經網路入門 <wbr>第一部分

神經網路入門 <wbr>第一部分

 

學習

在開始討論感知器的學習前先來考慮一個實際生活中的例子:

你是怎麼教小孩識別椅子的?你給他看實物,告訴他,“這是椅子,那不是椅子”,直到他學會了椅子的概念。在這一階段,當被問及“那東西是椅子嗎?”,小孩能給出正確的答案。

只要給讓孩子接觸足夠多的正的反的例子訓練,那麼當他看到一個以前從未見過的新東西時就能正確的識別了。

這就是感知器背後的思想。

感知器學習

感知器的學習就是修改權值和偏置的過程。感知器計算其輸入的二值函式。

“感知器是一種能學習概念的程式,即,通過重複地‘學習’提交的例子,它就能對我們提呈的例子做出響應,1或者0

感知器是是單層神經網路,其權值和偏置能被訓練,當輸入一個向量,就能得到一個相應的正確的目標向量。用來訓練的技術稱為感知器學習規則。感知器工作在隨機分佈的聯接之上,具有泛化能力,特別適用於簡單的模式分類問題”——英國Warwick大學,科學計算中心,Jianfeng feng教授。

學習規則

訓練感知器,對每一個輸入向量做出響應,輸出01.當解存在時,該學習規則被證明是能在有限時間內收斂到某個解的。

b = b + [ T - A ]

W(i) = W(i) + [ T - A ] * P(i)


式中, W 是權值向量, P輸入向量, T是期望輸出, A 是實際輸出, b是偏置.

訓練

訓練集中的向量是一個接一個的提交到感知器的.

若感知器的輸出是正確的則不做改變.

否則,權值和偏置按上面的學習規則進行更新。當每個epoch(所有輸入向量的一次完整遍歷稱為一個epoch)都沒有誤差,訓練就結束。

此時,對訓練集中的每個向量,感知器都能得到正確的輸出向量。如果輸入一個不在訓練集中的向量P感知器將輸出這樣一個向量,該向量與訓練集中類似P的那個向量的輸出向量相似,即表現出一定的泛化能力。

神經網路能做什麼

單層神經網路

單層神經網路(感知器網路)的輸出單元是相互獨立的-每個權值僅影響一個輸出。感知器網路能用來解決線性分類問題。函式如下圖所示(假設網路有2個輸入一個輸出)

神經網路入門 <wbr>第一部分

 

這等價於 AND / OR 邏輯閘, 如下圖所示。

神經網路入門 <wbr>第一部分

圖六 分類問題

這就是一個關於感知器能做什麼的簡單例子,但是若把幾個感知器連起來會怎麼樣呢?那樣就能得到一些十分複雜的功能。最基本的,能建造一個電路的等價物。

然而感知器確實有許多限制。如果向量不是線性可分的,學習將不會收斂,即不能合適地分類向量。感知器不能解決線性不可分的最著名的例子是XOR問題。

多層神經網路

使用多層神經網路就能解決類似上面的XOR問題的線性不可分問題。後面將會提到使用反向傳播演算法解決XOR問題。

轉載:http://hi.baidu.com/ebfok/blog/item/730cbbdee2f1ae5394ee3787.html

相關文章