脈衝神經網路簡明教程 第一章:神經元的生物基礎
脈衝神經網路簡明教程 第一章:神經元的生物基礎
序:脈衝神經網路會是超越深度學習的架構嗎?
我們現在的深度學習,都是基於一個最重要的學習演算法:反向傳播,也就是求誤差函數關於參數偏導,以此來更新權重。這個方法在近幾年顯示出了它的威力。不管是打敗人類圍棋大師的 Alpha Go,還是超越人類圖像識別水平的 ImageNet 冠軍,都是用反向傳播來學習的。但是反向傳播有個最大的弱點:它沒有生物基礎,我們在人腦裏找不到任何反向傳播的痕跡。神經網路是根據人腦的結構啟發而發明的演算法,但是並不是完全地模擬人腦。
我們現在的深度學習,其實是一種統計方法,它只會尋找數據之間相關性。當然,反向傳播雖然沒有生物基礎,但不見得就是錯誤的方向,因為現在可以看到,基於反向傳播的演算法,在很多方面已經超過了人腦。只不過,這可能不是通向更通用的人工智慧的方向。
那我們就沒有模擬人腦神經元的演算法嗎?其實是有的,叫做脈衝神經網路(spiking neural network,簡稱 SNN),被稱為反向傳播和深度學習之後的第三代神經網路。其實 SNN 的概念很早就有了,甚至早於感知機,在二十世紀五十年代就被提出。但是為什麼大家幾乎沒有聽說過呢?主要是因為這個東西太冷門了,幾乎只有純學術研究(主要是神經計算學和生物計算機科學),目前在應用上根本無法跟深度學習抗衡。其中最大的原因是因為,我們還沒有找到一個完美的訓練這種神經網路的方法。
雖然如此,我個人認為,SNN 會是未來的一個非常重要的演算法,因為它的生物基礎決定了它的潛力:達到人類大腦的水平。
這個系列文章的主要內容來自於 Wulfram Gerstner 等人寫的《Neuronal Dynamics》,作者將這本書無私地放到了網上,歡迎大家閱讀原文(https://neuronaldynamics.epfl.ch/book.html)。
本系列中每一章節都會分成三部分,分別給不同水平和需求的人閱讀。第一部分是一個概況,將文章的主要內容用通俗的語言描述清楚,適合僅僅想了解這個領域的人;第二部分是將內容用數學公式嚴謹地表達,但是隻給出結論,並沒有推導過程,適合程序員或者想稍微深入瞭解的人;第三部分會是第二部分的數學公式推導,需要一定的數學基礎。
在中文網路上,關於 SNN 的文章非常少,並且沒有一個從零開始的系統教程。我讀了《Neuronal Dynamics》之後,很想分享一下這方面的知識。但是本人水平有限,也並不是學這方面的專業的。如果有錯誤請諒解並且儘管指出。
第一部分:神經元的生物基礎
人類的大腦裏有極其大量的神經元,它們以一種複雜的方式互相連接。大腦的每一立方毫米,就能有超過一萬個神經元和數公里的連接。
神經元可以被分成三大部分:樹突(dendrite),神經細胞體(soma)和軸突(axon)。樹突負責把從其他神經元送來的信息傳輸到神經細胞體,神經細胞體會累積這些輸入,如果累積的輸入達到了它的閾值,那麼它就會產生一個輸出信號,通過軸突傳輸給其他的神經元。
兩個神經元之間的連接叫做突觸,發送信號的神經元叫做突觸前神經元(presynaptic neuron),接收信號的叫突觸後神經元(postsynaptic neuron)。脊椎動物的神經元經常會有多達上萬個突觸後神經元,並且最長會連接到幾釐米外的大腦其他區域。
神經元內部和外部的電位差,被稱為膜電位(membrane potential),當沒有輸入時,神經元處在靜息電位(resting potential)。突觸後神經元的膜電位會被輸入信號改變,當電位達到突觸後神經元的閾值時,會發射一個新的脈衝到下一個神經元。
脊椎動物的大腦中最常見的突觸是化學突觸。在化學突觸中,軸突和樹突之間靠的很近,但是中間有一條很小的縫隙。當動作電位到達時,一些化學物質,被釋放到突觸之間的間隙。當這些化學物質到達樹突之後,它們就會被突觸後神經元檢測到,並且通過複雜的生物化學反應將信號轉化為突觸後細胞的電流反應。由輸入脈衝導致突觸後神經元膜電位變化被叫做突觸後電位(postsynaptic potential)。
神經元之間的信號是由電流脈衝(spike 或者 pulse)組成,也被稱為動作電位(action potential)。這些脈衝的形狀都幾乎一樣,所以脈衝的形狀並不傳遞任何信息,重要的只是脈衝發射和到達的時間以及數量。
總結一下,一個神經元可以接受從多個神經元來的脈衝輸入,當輸入累計到一定程度,這個神經元就會發射一個新的脈衝,送到它之後的神經元去。
以上構成了一個最簡單的脈衝神經元模型。可以看到,脈衝神經元和深度學習的神經元最大的區別是,脈衝神經元是關於時間的序列,每個神經元會接受多次輸入,並且激活多次;而深度學習每次每個神經元只會用到一次。這也是很多人認為脈衝神經元在處理時間序列上會比深度學習有優勢的原因。
第二部分:脈衝神經元
我們用關於時間的函數 表示膜電位,用 表示靜息電位。脈衝到達後,膜電位會被改變,但是最後還是會漸漸地變回靜息電位。如果從一個突觸來的信息導致正的變化,就稱這個突觸是興奮的;反之如果導致負的變化,這個突觸就是抑制的。
在神經元中,極化(polarization)是指偏離 0 電位差的狀態。在沒有輸入時,神經元已經被負極化了約 65 mV(也就是靜息電位)。此時,一個興奮性突觸的輸入會減少極化,被稱為去極化(depolarization),如果輸入增加了極化,那麼就被稱為超極化(hyperpolarization)。
讓我們將上述過程總結成公式:神經元 的膜電位函數為 。在輸入脈衝來到之前,我們有 。在 時突觸前神經元 發射了一個脈衝,那麼在 時,我們定義神經元 和 之間的的突觸後電位(postsynaptic potential,簡稱 PSP) 為:
當突觸後電位為正,就被稱為興奮性突觸後電位(excitatory postsynaptic potential,簡稱 EPSP),反之被稱為抑制性突觸後電位(inhibitory postsynaptic potential,簡稱 IPSP)。
假設我們有一些突觸前神經元 ,它們有共同的突觸後神經元 。其中神經元 在 , 等時發射脈衝,導致一個突觸後電位 。其他神經元同理。我們可以將突觸後神經元的膜電位概括為:
也就說,突觸後膜電位等於所有突觸後電位函數的和加上靜息電位,見圖 4。不過這只是最簡單的一種模型,並不完全符合真實的神經元的表現,後面的章節裏我們會看到更精確的模型。
當神經元 的膜電位 達到了一個閾值 ,那麼這個神經元就會發射一個脈衝,並傳送到下一個神經元,見圖 5。
下一章:
石在:脈衝神經網路簡明教程 第二章:基於物理的神經元模型推薦閱讀: