1. 程式人生 > >神經網路入門(連載之一)

神經網路入門(連載之一)

.     遊戲程式設計中的人工智慧技術

   

(連載之一)

用平常語言介紹神經網路

(Neural Networks in Plain English)

因為我們沒有能夠很好了解大腦,我們經常試圖用最新的技術作為一種模型來解釋它。在我童年的時候,我們都堅信大腦是一部電話交換機 。(否則它還能是什麼呢?) 我當時還看到英國著名神經學家謝林頓把大腦的工作挺有趣地比作一部電報機。更早些時候,弗羅伊德經常把大腦比作一部水力發電機,而萊布尼茨則把它比作了一臺磨粉機。我還聽人說,古希臘人把大腦功能想象為一付彈弓。顯然,目前要來比喻大腦的話,那隻可能是一臺數字電子計算機了。                          

R.Searle [譯註1]

神經網路介紹Introduction to Neural Networks)
    曾有很長一個時期,人工神經網路對我來說是完全神祕的東西。當然,有關它們我在文獻中已經讀過了,我也能描述它們的結構和工作機理,但我始終沒有能“啊哈!”一聲,如同你頭腦中一個難於理解的概念有幸突然得到理解時的感覺那樣。我的頭上好象一直有個榔頭在敲著,或者像電影Animal House (中文片名為“動物屋”)中那個在痛苦地尖叫“先生,謝謝您,再給我一個啊!”的可憐傢伙那樣。我無法把數學概念轉換成實際的應用。有時我甚至想把我讀過的所有神經網路的書的作者都抓起來,把他們縛到一棵樹上,大聲地向他們吼叫:“不要再給我數學了,快給我一點實際 東西吧!”。但無需說,這是永遠不可能發生的事情。我不得不自己來填補這個空隙...由此我做了在那種條件下唯一可以做的事情。我開始幹起來了。<一笑> 

這樣幾個星期後,在一個美麗的日子裡,當時我在蘇格蘭海邊度假,當我越過一層薄霧凝視著狹長的海灣時,我的頭腦突然受到一個衝擊。一下子悟到了人工神經網路是怎樣工作的。我得到“啊哈!”的感覺了!但我此時身邊只有一個帳篷和一個睡袋,還有半盒子的脆玉米片,沒有電腦可以讓我迅速寫出一些程式碼來證實我的直覺。Arghhhhh!這時我才想到我應該買一臺手提電腦。不管怎樣,幾天後我回到家了,我立刻讓我的手指在鍵盤上飛舞起來。幾個小時後我的第一人工神經網路程式終於編成和運行了,並且工作得挺好!自然,程式碼寫的有點亂,需要進行整理,但它確實已能工作了,並且,更重要的是,我還知道它為什麼能工作。我可以告訴你,那天我是一位非常非常得意的人!

我希望本書傳遞給你的就是這種“啊哈!”感覺。當我們學完遺傳演算法時,你可能已嚐到了一點感覺,但你希望這種感覺是美妙的話,那就要等把神經網路部分整個學完。


生物學的神經網路-大腦
(A Biological Neural Network–The Brain)

你的大腦是一塊灰色的、像奶凍一樣的東西。它並不像電腦中的CPU那樣,利用單個或少數幾個處理單元來進行工作。如果你有一具新鮮地儲存到福爾馬林中的屍體,用一把鋸子小心地將它的頭骨鋸開,搬掉頭蓋骨後,你就能看到熟悉的腦組織皺紋。大腦的外層象一個大核桃那樣,全部都是起皺的[圖0左],這一層組織就稱皮層(Cortex)。如果你再小心地用手指把整個大腦從頭顱中端出來,再去拿一把外科醫生用的手術刀,將大腦切成片,那麼你將看到大腦有兩層[圖0右]: 灰色的外層(這就是“灰質”一詞的來源,但沒有經過福爾馬林固定的新鮮大腦實際是粉紅色的。) 和白色的內層。灰色層只有幾毫米厚,其中緊密地壓縮著幾十億個被稱作neuron(神經細胞、神經元)的微小細胞。白色層在皮層灰質的下面,佔據了皮層的大部分空間,是由神經細胞相互之間的無數連線線組成(但沒有神經細胞本身,正如印刷電路板的背面,只有元件的連線,而沒有元件本身那樣,譯註)。皮層象核桃一樣起皺,這可以把一個很大的表面區域塞進到一個較小的空間裡。這與光滑的皮層相比能容納更多的神經細胞。人的大腦大約含有10G(即100億)個這樣的微小處理單元;一隻螞蟻的大腦大約也有250,000個。 

以下表1 顯示了人和幾種動物的神經細胞的數目。

表l人和幾種動物的神經細胞的數目

動 物 種 類

神經細胞的數目(數量級)

蝸 牛 10,000(=104
蜜 蜂 100,000 (=105
蜂 雀 10,000,000 (=107
老 鼠 100,000,000 (=108
人 類 86,000,000,000 (=1011
大 象 100,000,000,000 (=1011
1 大腦半球像半個核桃 2 大腦皮層由灰白質組成
圖0 大腦的外形和切片形狀

 

 圖1 神經細胞的結構


  在人的生命的最初9個月內,這些細胞以每分鐘25,000個的驚人速度被創建出來。神經細胞和人身上任何其他型別細胞十分不同,每個神經細胞都長著一根像電線一樣的稱為軸突(axon)的東西,它的長度有時伸展到幾釐米[譯註2],用來將訊號傳遞給其他的神經細胞。神經細胞的結構如圖1 所示。它由一個細胞體(soma)、一些樹突(dendrite) 、和一根可以很長的軸突組成。神經細胞體是一顆星狀球形物,裡面有一個核(nucleus)。樹突由細胞體向各個方向長出,本身可有分支,是用來接收訊號的。軸突也有許多的分支。軸突通過分支的末梢(terminal)和其他神經細胞的樹突相接觸,形成所謂的突觸(Synapse), (圖中未畫出),一個神經細胞通過軸突和突觸把產生的訊號送到其他的神經細胞。

每個神經細胞通過它的樹突和大約10,000個其他的神經細胞相連。這就使得你的頭腦中所有神經細胞之間連線總計可能有l00,000,000,000,000個。這比100兆個現代電話交換機的連線數目還多。所以毫不奇怪為什麼我們有時會產生頭疼毛病!

有趣的事實
   曾經有人估算過,如果將一個人的大腦中所有神經細胞的軸突和樹突依次連線起來,並拉成一根直線,可從地球連到月亮,再從月亮返回地球。如果把地球上所有人的腦中的神經細胞的軸突和樹突連線起來,則可以伸展到離開我們最近的星系!

   神經細胞利用電-化學過程交換訊號。輸入訊號來自另一些神經細胞。這些神經細胞的軸突末梢(也就是終端)和本神經細胞的樹突相遇形成突觸(synapse),訊號就從樹突上的突觸進入本細胞。訊號在大腦中實際怎樣傳輸是一個相當複雜的過程,但就我們而言,重要的是把它看成和現代的計算機一樣,利用一系列的0和1來進行操作。就是說,大腦的神經細胞也只有兩種狀態:興奮(fire)和不興奮(即抑制)。發射訊號的強度不變,變化的僅僅是頻率。神經細胞利用一種我們還不知道的方法,把所有從樹突突觸上進來的訊號進行相加,如果全部訊號的總和超過某個閥值,就會激發神經細胞進入興奮(fire)狀態,這時就會有一個電訊號通過軸突發送出去給其他神經細胞。如果訊號總和沒有達到閥值,神經細胞就不會興奮起來。這樣的解釋有點過分簡單化,但已能滿足我們的目的。

   正是由於數量巨大的連線,使得大腦具備難以置信的能力。儘管每一個神經細胞僅僅工作於大約100Hz的頻率,但因各個神經細胞都以獨立處理單元的形式並行工作著,使人類的大腦具有下面這些非常明顯的特點:

能實現無監督的學習  有關我們的大腦的難以置信的事實之一,就是它們能夠自己進行學習,而不需要導師的監督教導。如果一個神經細胞在一段時間內受到高頻率的刺激,則它和輸入訊號的神經細胞之間的連線強度就會按某種過程改變,使得該神經細胞下一次受到激勵時更容易興奮。這一機制是50多年以前由Donard Hebb在他寫的Organination of Behavior一書中闡述的。他寫道: 

“當神經細胞A的一個軸突重複地或持久地激勵另一個神經細胞B後,則其中的一個或同時兩個神經細胞就會發生一種生長過程或新陳代謝式的變化,使得激勵B細胞之一的A細胞的效能會增加”

  與此相反的是,如果一個神經細胞在一段時間內不受到激勵,那麼它的連線的有效性就會慢慢地衰減。這一現象就稱可塑性(plasticity)。 

對損傷有冗餘性(tolerance) 大腦即使有很大一部分受到了損傷,它仍然能夠執行復雜的工作。一個著名的試驗就是訓練老鼠在一個迷宮中行走。然後,科學家們將其大腦一部分一部分地、越來越大地加以切除。他們發現,即使老鼠的很大一部份大腦被切除,它們仍然能在迷宮中找到行走路徑。這一事實證明了,在大腦中,知識並不是儲存在一個區域性地方。另外所作的一些試驗則表明,如果大腦的一小部分受到損傷,則神經細胞能把損傷的連線重新生長出來。【譯註:我想到在人類身上也能見到這種現象:由於心血管病或其他原因引起大面積腦組織壞死的腦梗死病人經過一段時間的康復訓練後也能恢復健康,特別是,記憶力並不受損。】

處理資訊的效率極高 神經細胞之間電-化學訊號的傳遞,與一臺數字計算機中CPU的資料傳輸相比,速度是非常慢的,但因神經細胞採用了並行的工作方式,使得大腦能夠同時處理大量的資料。例如,大腦視覺皮層在處理通過我們的視網膜輸入的一幅圖象訊號時,大約只要100ms的時間就能完成。考慮到你的神經細胞的平均工作頻率只有100Hz,100ms的時間就意味每秒只能完成10個計算步驟!想一想通過我們眼睛的資料量有多大,你就可以看到這真是一個難以置信的浩大工程了。 

善於歸納。 大腦和數字計算機不同,它極擅長的事情之一就是模式識別,並能根據已熟悉資訊進行歸納推廣(generlize)。例如,我們能夠閱讀他人所寫的手稿上的文字,即使我們以前從來沒見過他所寫的東西。 

它是有意識的 意識(consciousness)是神經學家和人工智慧的研究者廣泛而又熱烈地在辯論的一個話題。有關這一論題已有大量的文獻出版了,但對於意識實際究竟是什麼,至今尚未取得實質性的統一看法。我們甚至不能同意只有人類才有意識,或者包括動物王國中人類的近親在內才有意識。一頭猩猩有意識嗎?你家的貓有意識嗎?上星期晚餐中被你吃掉的那條魚有意識嗎?

因此,一個人工神經網路( Artificial neural network, ANN)簡稱神經網路(NN) 就是要在當代數字計算機現有規模的約束下,來模擬這種大量的並行性, 並在實現這一工作時,使它能顯示許多和人或動物大腦相類似的特性。下面就讓我們瞧瞧它們的表演吧!

【譯註1】引自John R.Searle的 “MINDS,BRAIN AND SCIENCE”,p44。John R.Searle是美國當代哲學-心理學家,寫過大量有關大腦和意識本質方面的書。

譯註2這是指全在大腦中神經細胞,否則,如果是支配全身各部分的神經細胞,則可以遠遠長得多,如超過一米

譯註3】一讀者指出:人的大腦中神經細胞的數目原書說為10G(=100億)個應有錯,應為860億個,即和大象100G有同一數量級才對

相關推薦

神經網路入門(連載之一)

.     遊戲程式設計中的人工智慧技術     (連載之一) 用平常語言介紹神經網路(Neural Networks in Plain English) 因為我們沒有能夠很好了解大腦,我

基於Keras mnist手寫數字識別---Keras卷積神經網路入門教程

目錄 1、一些說明 2、常量定義 3、工具函式 4、模型定義以及訓練 4.1、匯入庫 4.2、主入口 4.3、主函式 4.3.1、獲取訓練資料 4.3.1、定義模型 4.3.2

神經網路入門】用JAVA實現感知器演算法

簡述 隨著網際網路的高速發展,A(AI)B(BigData)C(Cloud)已經成為當下的核心發展方向,假如三者深度結合的話,AI是其中最核心的部分。所以如果說在未來社會,每個人都必須要學會程式設計的話,那麼對於程式設計師來說,人工智慧則是他們所必須掌握的技術(科技發展真tm快)。 這篇文章介紹

CNN卷積神經網路入門整合

這是一篇關於CNN入門知識的部落格,基本手法是抄、刪、改、查,就算是自己的一個筆記吧,以後忘了多看看。   1.邊界檢測示例 假如你有一張如下的影象,你想讓計算機搞清楚影象上有什麼物體,你可以做的事情是檢測影象的垂直邊緣和水平邊緣。   卷積計算可以得

傻瓜神經網路入門指南

現在網路上充斥著大量關於神經網路的訊息,但是,什麼是神經網路?其本質到底是什麼?你是不是對這個熟悉又陌生的詞感到困惑? 用幾分鐘閱讀完這篇文章,我不能保證你能夠成為這個領域的專家,但可以保證的是,你已經入門了。 什麼是神經網路? 想要透徹的瞭解神經網路,我們首先要知道什麼是機器學習。為了更好的理解機

機器學習---演算法---神經網路入門

轉自:http://www.ruanyifeng.com/blog/2017/07/neural-network.html   眼下最熱門的技術,絕對是人工智慧。 人工智慧的底層模型是"神經網路"(neural network)。許多複雜的應用(比如模式識別、自動控制)和高階模型(比如深度學習

吳恩達deeplearning之CNN—卷積神經網路入門

1.邊界檢測示例 假如你有一張如下的影象,你想讓計算機搞清楚影象上有什麼物體,你可以做的事情是檢測影象的垂直邊緣和水平邊緣。  如下是一個6*6的灰度影象,構造一個3*3的矩陣,在卷積神經網路中通常稱之為filter,對這個6*6的影象進行卷積運算,以左上角的-5計算為例  3*1+

《Python深度學習》——第三章 神經網路入門

主要內容: 神經網路核心元件 Keras簡介 建立深度學習工作站——Jupter 使用深度學習解決二分類,多分類和迴歸問題 3.1  神經網路剖析 層,多層構成網路 輸入函式和目標 損失函式 優化器 3.1.1  層:基本元件 權重 2D張量,用密集連

TensorFlow搭建神經網路入門

深度學習解決的核心問題之一就是自動地將簡單的特徵組合成更加複雜的特徵,一旦解決了資料表達和特徵提取,很多人工智慧任務也就解決了90%。 TensorFlow計算框架可以很好地支援深度學習的各種演算法,但它的應用不限於深度學習。 一、TensorFlow的主要依賴包

《Python深度學習》——第三章 神經網路入門

主要內容: 神經網路核心元件 Keras簡介 建立深度學習工作站——Jupter 使用深度學習解決二分類,多分類和迴歸問題 3.1  神經網路剖析 層,多層構成網路 輸入函式和目標 損失函式 優化器 3.1.

深度學習(四)卷積神經網路入門學習(1)

卷積神經網路入門學(1)作者:hjimce卷積神經網路演算法是n年前就有的演算法,只是近年來因為深度學習相關演算法為多層網路的訓練提供了新方法,然後現在電腦的計算能力已非當年的那種計算水平,同時現在的訓練資料很多,於是神經網路的相關演算法又重新火了起來,因此卷積神經網路就又活

深度學習與神經網路入門必讀5!

梯度下降學習法 (感覺英文文章講的很細,內容其實不多,就是講的基礎了點)既然我們有了神經網路的設計,它怎麼能學會識別數字呢?我們首先需要的是一個數據集,用來學習所謂的訓練資料集,我們將使用MNIST資料集,其中包含數以萬計的手寫數字的掃描影象,以及它們的正

深度學習之卷積神經網路入門(2)

卷積神經網路入門學 作者:hjimce 卷積神經網路演算法是n年前就有的演算法,只是近年來因為深度學習相關演算法為多層網路的訓練提供了新方法,然後現在電腦的計算能力已非當年的那種計算水平,同時現在的訓練資料很多,於是神經網路的相關演算法又重新火了起來,因此卷積神經網路就又

深度學習1——深度學習(四)卷積神經網路入門學習(1)

卷積神經網路入門學(1) 轉載自:hjimce的專欄 - 部落格頻道 - CSDN.NET 原文地址:http://blog.csdn.NET/hjimce/article/details/47323463 作者:hjimce 卷積

【Stanford CNN課程筆記】神經網路入門

這篇文章非常適合初學者去學!小編只是覺得題文不那麼相符,故改變了題目。 下面這個博文的網址是:http://blog.csdn.net/elaine_bao/article/details/50810598?locationNum=3&fps=1  下面

卷積神經網路入門詳解

  本文主要內容為 CS231n 課程的學習筆記,主要參考 學習視訊 和對應的 課程筆記翻譯 ,感謝各位前輩對於深度學習的辛苦付出。在這裡我主要記錄下自己覺得重要的內容以及一些相關的想法,希望能與大家多多交流~ 0. 回顧之前所寫過的部落格   在之前的部落

ANN神經網路入門——分類問題(MATLAB)

%讀取訓練資料 clear clc %f1 f2 f3 f4是四個特徵值 [f1,f2,class] = textread('trainData.txt' , '%f%f%f'); %特徵值歸一化 [input,minI,maxI] = premnmx( [f1 , f2 ]') ; %構造輸出矩陣 s =

卷積神經網路入門一種全卷積神經網路(LeNet),從左至右依次為卷積→子取樣→卷積→子取樣→全連線→全連線→高斯連線測試 最後,為了檢驗 CNN 能否工作,我們準備不同的另一組圖片與標記集(不能在訓練

轉載來自:http://blog.csdn.net/maweifei/article/details/52443995 第一層——數學部分 CNN 的第一層通常是卷積層(Convolutional Layer)。輸入內容為一個 32 x 32 x 3 的畫素值陣列。現在

神經網路入門之隱藏層設計

隱藏層 這部分教程將介紹三部分: 隱藏層設計非線性啟用函式BP演算法 在前面幾個教程中,我們已經介紹了一些很簡單的教程,就是單一的迴歸模型或者分類模型。在這個教程中,我們也將設計一個二分類神經網路模型,其中輸入資料是一個維度,隱藏層只有一個神經元,並且使用非線性函式作為

神經網路入門之Logistic迴歸(分類問題)

Logistic迴歸(分類問題) 這部分教程將介紹一部分: Logistic分類模型 我們在上次的教程中給出了一個很簡單的模型,只有一個輸入和一個輸出。在這篇教程中,我們將構建一個二分類模型,輸入引數是兩個變數。這個模型在統計上被稱為Logistic迴歸模型,網路結構可