如何簡單形象又有趣地弄懂神經網路是什麼?

景略集智發表於2018-05-03

電腦和人腦,你覺得哪一個更強大?

在生活中你會經常發現許多人希望自己的大腦能像電腦一樣,比如要是真有這機會能把自己改造成鋼鐵俠,他們會迫不及待地想抓住。

如何簡單形象又有趣地弄懂神經網路是什麼?

可是回過頭看看過去幾十年科學家們的研究,你會驚訝地發現,他們在一直努力讓電腦更像人腦!怎麼做到呢?藉助神經網路——它是由幾百個、幾千個甚至幾百萬個人工腦細胞組成的計算機程式,能以與人腦極其相似的方式學習和運轉。那麼到底什麼是神經網路?它們又是怎麼工作的?我們更仔細的瞧一瞧!

電腦和人腦的區別在哪?

你會經常聽到很多人拿人腦和電腦比來比去,乍一看,這倆確實也有些共同之處。一個正常的人類大腦中約有 1千億個微小的細胞,稱為神經元(沒有人確切地知道人腦到底有多少個神經元,只是估計數量範圍在 500 億至 5 千億之間),它是人腦基本的訊號處理單元。

如何簡單形象又有趣地弄懂神經網路是什麼?

每個神經元都由一個細胞體(它是細胞的核心部分)、一些神經樹突(腦細胞的輸入部分,攜帶傳往細胞體的資訊)和軸突(腦細胞的輸出部分,攜帶輸出的資訊)等三部分組成。神經元非常非常小,100個細胞體排列起來才1毫米長。

在計算機中,和腦細胞有個相同作用的奈米級的開關裝置,叫做電晶體。最新式最先進的處理器中大約有 20 億個電晶體,即時是一個很簡單的處理器中也有大約 5 千萬個電晶體,全都整合到一個僅 2.5 釐米大小的方形積體電路上,比郵票還小!

如何簡單形象又有趣地弄懂神經網路是什麼?

這就是為何不能將人腦和電腦直接詳細比較,因為這二者完全不是同一種東西。不僅僅是因為電腦是個冷冰冰的裝滿二進位制數值的金屬盒子,而人腦卻是鮮活的熱乎乎的,充滿了思維、感覺和回憶。真正的不同之處在於電腦和人腦的“思考”方式完全不同。電腦中的電晶體只是以一定的順序相對簡單地串聯起來(每個電晶體都以基本的邏輯閘電路和其它幾個電晶體連線),而人腦中的神經元卻是以無比複雜的方式並行相連(每一個神經元都可能與其上萬個鄰近神經元連線)。

電腦(幾百萬個電晶體以較簡單的方式相連)和人腦(幾百到幾千億個腦細胞以更復發的方式相連)這種本質結構的不同,使得它們以非常不同的方式“思考”。電腦能夠很完美地儲存大量無意義的資訊(對於電腦本身來說),根據人們預先輸入的精確指令(程式)以多種不同的方式重新整理這些資訊。而人的大腦卻是以更加迂迴間接的方式緩慢學習,常常要花幾個月甚至幾年完全掌握一些複雜的東西。

但是,不像電腦,人腦能以驚人的全新方式自然而然地將資訊融合在一起,識別原始模式,建立資訊聯絡,以完全不同的視角看待事物,這就是貝多芬、莎士比亞等人類創造性的來源。

如果電腦也能像人腦這樣,豈不是很好?有人說,「要有神經網路」。於是就有了神經網路。

什麼是神經網路?

神經網路背後的基本理念就是在電腦內模擬(以一種簡化但較為可信的方式複製人腦機制)密集相連的腦細胞,從而人們可以讓電腦學習東西、識別模式、做出決定,就像人類一樣。神經網路一個魅力之處就是,你不必為它編寫程式去學習人類的指令:它能完全自主學習,就像人腦一樣。

但是,它不是人腦。需要著重說明一點,神經網路(總體上)是一種軟體模擬:它們由非常普通的電腦編寫而成,以普通的電晶體及串聯邏輯閘在非常傳統的方式下執行,但是卻能夠像幾十億個並行連線的腦細胞那樣工作。還沒人試過造一臺電腦,把電晶體按照人腦那種複雜程度一樣相互連線。換句話說,神經網路和人腦的不同就好比電腦天氣模型和實際的雲彩、雪花、陽光之間的不同。軟體模擬只不過是一系列的代數變數,由數學方程將它們連線在一起(簡單來說,就是一堆數字存放在了一個盒子裡,數字的數值是不斷變化的),它對於執行它的載體電腦本身來說,沒有什麼意義,只對編寫它的人類而言才有意義。

真正的人工神經網路

在我們進一步談談神經網路之前,先了解一些術語。嚴格來講,人們創造的神經網路叫做人工神經網路(即ANN),以和人腦中真正的神經網路相區分(由腦細胞連線成的網路)。你可能也會見過神經網路還以一些名字出現,比如聯結式機器(該領域也叫聯結主義),平行分散處理器(PDP),思考機器等,但本文我們會使用“神經網路”一詞,用它指代“人工神經網路”。

神經網路由什麼組成的?

一個典型的神經網路,由幾個、上百個、上千個甚至幾百萬個稱為“單元”的人工神經元構成,它們排列在一系列的層中,每個層之間彼此相連。其中一些神經元叫做“輸入單元”,用來從外界接收各種各樣的資訊,神經網路會用這些資訊進行學習、識別模式或進行其它的處理。還有些神經元位於神經網路的另一邊,與“輸入單元”方向相反,它們顯示神經網路對資訊的學習狀況,那麼這些神經元就叫做“輸出單元”。在“輸入單元”和“輸出”單元之間還有一個或者很多個由“隱藏單元”構成的層,和“輸入層”及“輸出層”層一起形成神經網路。

如何簡單形象又有趣地弄懂神經網路是什麼?

大部分神經網路是完全連線的,意思就是,每個隱藏單元及輸出單元都和另一邊的層中的每個單元連線。一個單元和另一個單元之間的連線都以一個叫做“權重”的數字表示,它可以是正值(當一個單元激發另一個單元時),也可以是負值(當一個單元抑制或阻止另一個單元時)。權重值越高,意味著一個單元對另一個單元的影響越大(這和人腦細胞通過突觸相互激發的原理一樣)。

所以,一個神經網路由輸入單元(下圖紅色),隱藏單元(下圖藍色)和輸出單元(下圖黃色)組成。輸入單元所在的層為輸入層,隱藏單元所在的層為隱藏層,輸出單元所在的層為輸出層。所有單元都和兩邊層裡的單元連線。輸入資訊會首先進入左側的輸入層,然後激發中間的隱藏層,最後從右側輸出層輸出結果。神經網路會通過學習漸漸調整每兩個單元(神經元)連線的力度(權重)

如何簡單形象又有趣地弄懂神經網路是什麼?

神經網路是怎麼學東西的?

資訊通過兩種方式穿過神經網路。當神經網路學習時(被訓練時)或者正常執行(被訓練後),資訊模式會通過輸入單元輸入神經網路中,其中輸入單元會激發隱藏單元,最後到達輸出單元。這種設計的神經網路被稱為“前饋網路”。並非所有的單元會一直“啟用”。每個單元從其左側的單元中接收輸入資訊,而輸入資訊會由單元之間連線的權重進行相乘。每個單元通過這種方式將它接收的所有輸入資訊進行加算,如果結果大於一個特定的闕值,那麼單元就會“啟用”,並激發和它連線的單元(在其右側)。

談到神經網路的學習,就要涉及到一個叫做“反饋”的東西。就像小孩子通過大人告訴他們做的是對還是錯學習一樣。實際上,我們會一直用到反饋。這裡舉個簡單的例子,想想你頭一回學踢足球的情形,你把球踢向球門,你的大腦會緊盯著球的走向和軌跡,注意球還差多少就能進球門了。下一次再踢的時候,你會記得之前犯過哪些錯,相應地調整動作,希望這次能 make youself great again.

如何簡單形象又有趣地弄懂神經網路是什麼?

這裡你就是用了反饋機制,即將實際結果和預期結果相比較,找出兩者的不同之處,並藉此改善下一次的行為(比如“我應該再踢的用力一點”“我應該再往左踢一點”等等)。預期結果和實際結果之間的差距越小,你下一次需要調整的幅度就越小。

神經網路正是通過這種方式學習,利用一種叫做“反向傳播”的反饋機制,它由正向傳播過程和反向傳播過程組成。在正向傳播過程中,輸入資訊通過輸入層經隱含層,逐層處理並傳向輸出層。如果在輸出層得不到期望的輸出值,則取輸出與期望的誤差的平方和作為目標函式,轉入反向傳播,逐層求出目標函式對各神經元權值的偏導數,構成目標函式對權值向量的梯量,作為修改權值的依據,神經網路的學習在權重值修改過程中完成。誤差達到所期望值時,神經網路學習結束。

當然你也可以來這裡體驗一番。

就像上述舉的你學踢球的例子一樣,“反向傳播”會讓神經網路進行學習,不斷縮小實際結果和預期結果之間的差別,這樣神經網路會慢慢發現它應該怎麼做才能達到預期效果。

神經網路在實際中怎麼運作?

等用足夠的學習樣本訓練完神經網路後,我們就可以給它一組它從未見過的新的輸入資訊,看它如何迴應。例如,比方說你之前一直在教一個神經網路,以它能理解的方式給它看了很多桌子椅子的照片,告訴它哪個是椅子哪個是桌子。給它看完照片後(我們比方說有25個不同的椅子和25個不同的桌子的照片),給它輸入一組它從未見過的新的照片,看看會發生什麼。神經網路學習的情況不同,它對新樣本分類的結果也會相同,就像人類一樣。等這個神經網路的效能符合要求後,你就教會了一臺電腦怎樣識別傢俱!

這也並不是說神經網路只是“看看”一組傢俱照片,然後就做出有意義的反應,它的行事方式和人類還不一樣。細想我們剛才舉的例子:神經網路實際上看到的並不是傢俱照片。輸入神經網路的資訊本質上是二進位制數字:它們會開啟或關閉神經網路中的單元(神經元)。

如何簡單形象又有趣地弄懂神經網路是什麼?

所以如果你有 5 個輸入單元,你可以用二進位制答案(是/否)輸入不同椅子的 5 個不同特徵。比如問題是:

1. 它有椅背嗎?

2. 它有桌面嗎?

3. 它有軟的坐墊嗎?

4. 你能長時間舒服地坐在上面嗎?

5. 你能在它上面放很多東西嗎?

在這裡,一個椅子就會表示為是、否、是、是、否,用二進位制表示為 10110,那麼一個桌子就可以表示為否、是、否、否、是,用二進位制表示為 01001。所以,在學習過程中,神經網路就是檢視很多像 10110 和 01001 這樣的二進位制數字,學習哪些表示是個椅子(可能輸出結果為1),哪些表示是個桌子(可能輸出結果為0)。

創造神經網路用來幹嘛?

通過上面所講的內容和所舉例子,你或許會猜到神經網路可以應用在很多方面,從識別模式到做出決策。在航空領域,我們可以將神經網路用作自動駕駛儀,其輸入單元從座艙儀表中讀取訊號和資料,輸出單元會相應調整飛機,保證飛機在正確的航線飛行。在工廠中,我們可以將神經網路用於質量控制。比如,有家工廠通過大規模的複雜的化學處理過程生產洗衣液,我們可以測量出最終的洗衣液成分比例,將測量結果作為輸入資料輸入到神經網路中,然後神經網路就會決定是否進行化學處理。

此外還有很多應用例子,這裡不再一一舉例。總之,神經網路可以在很多方面幫助我們。它們可以幫我們預測天氣、運轉雷達探測系統自動識別敵方飛機或船隻、甚至幫助醫生髮現複雜的疾病。我們現在使用的很多手機應用、語音助手、翻譯軟體都用到了神經網路。

一句話,神經網路讓電腦越來越像人類,讓電腦系統對人類的用處越來越大。

看到這裡,相信應該能明白神經網路是怎麼一回事了吧?我們將來還會分享 8 種常見的神經網路架構,敬請期待!

相關文章