1. 程式人生 > >從生物神經網絡到人工神經網絡

從生物神經網絡到人工神經網絡

syn 箭頭 pac 接受 n) con 方式 代碼 公式

現如今提及人工智能,大家期待的一定是某種可以“學習”的方法,這種方法使用數學模型從數據中獲取模式的某種表示。在眾多“學習”方法中,獲得最多關註,承載最多期望的非“神經網絡”莫屬。既然我們將這種數學方法稱作神經網絡,那麽他必然和廣泛存在於生物體內的神經網絡存在某種聯系。讓我們考察一個典型的神經連接。

技術分享圖片

每個神經元(細胞)都向外伸出許多分支,其中用來接收輸入的分支稱作樹突(dendrities),用來輸出信號的分支稱作軸突(axon),軸突連接到樹突上形成一個突觸(synapse)。每個神經元可以通過這種方式連接多個其他神經元,每個神經元也可以接受多個其他神經元的連接。很多連接起來的神經元形成了網狀結構,海量具有傳感和伸縮功能的體細胞通過神經纖維連接在這個網狀結構的輸入和輸出端,中樞神經系統正是通過這種網狀結構獲得了“智能”,至少是驅動機體做出了趨利避害的選擇。

技術分享圖片

模式識別中的分類問題就是一種典型的選擇。看起來,這給出了一種解決分類問題的啟示。但是這種網狀結構是怎麽工作的呢?生物學家已經觀察到的事實是,當有外界刺激時,網絡上的某些神經元會被次第激活。神經元被激活的意思是這個神經元會向外傳遞信號或者對外傳遞的信號強度較大。

為了便於利用,需要對激活過程建立數學模型。首先將目光聚焦在一個突觸上,軸突釋放遞質被樹突吸收或者電信號從樹突傳遞到軸突就完成了信息的傳遞。如何表示突觸傳遞的信息呢?給出選擇是用一個數值來表示,這寓示著將信息只歸為一個類別,並用數值的大小表示其數量方面的屬性。這樣粗暴的簡化有意義嗎?實際遞質可是多種多樣的啊[1]!顯而易見將一個軸突的輸出表示成一個多維向量才是更合理的。但是我們可以引入多個虛擬突觸來實現這個多維向量的各個維度的信息的傳遞

,既然都是同樣結構的突觸,為何不先只考察其中一個呢。

技術分享圖片

接下來考察神經元的激活。激活可以有兩種模型結構——跳變式和連續式。跳變式激活方式是:引入一個閾值,當輸入信息經過某種處理後大於閾值即表示激活,小於閾值表示未激活。連續式激活方式表示神經元不是只有激活和未激活兩種狀態,而是有不同的激活水平,輸入信息經過某種處理後直接輸出激活水平。同樣,因為在突觸中可能[幾乎是確定的]同時傳遞了多種信息,是否應該為一個神經元提供多個激活模型呢?對這個問題解答同樣是同形重復,引入虛擬神經元,讓一個神經元只表示其中一個激活模型。讓這個虛擬神經元接收所有樹突上的輸入信息,經過激活模型處理後生成一維的激活水平。什麽?激活水平也應該是多維的?好辦,再引入虛擬神經元,每個神經元只管生成其中某一維的激活水平。

技術分享圖片

多維變一維,顯然數學模型應該是加權和,給每一維找到一個權重相乘再加起來。

技術分享圖片

但是這個模型是線性的,所有輸入和輸出組成的點集落在一個超平面上。是不是太簡單了點,不管怎麽調整這幾個權重參數可以表示的情形都是平面。那麽再引入一個非線性[2]函數以這個加權和為輸入,將其輸出作為激活水平,這個非線性函數稱作激活函數。至此神經元的數學模型算是初步建立起來了。

技術分享圖片

激活函數該如何選取呢?很可惜,答案是不知道。目前對生物神經網絡的了解,不能給予確定激活函數的啟示。不知道那麽就可以隨意安排,早期常用的激活函數是Sigmoid。其函數圖像和公式如下。

技術分享圖片

這是一個關於(0,0.5)中心對稱的函數,以加權和作為輸入形成的超平面總是關於(0,0.5)中心對稱的,這多少讓人感覺有些不安。那麽在激活函數的自變量上增加一個偏移量,這個偏移量將會導致函數圖像在z軸上平移。至此構成神經網絡的基本元素——處理輸入產生輸出的神經元模型已經建立好了。

技術分享圖片

激活函數的偏移量使得超平面可以離開原點了,這僅僅是數學上的意義;其實它還完成了對跳變式激活方式的建模。參考上圖,假設水平藍線以上的數值才能表示激活,那麽對於藍色的圖像來說處於持續激活狀態,綠色的圖片表示只要有輸入就激活,而紅色的部分則表示當輸入數值超過5時才忽然進入激活狀態,這就是跳變了。

在實際操作中對於激活函數的選取是有一定指導原則的——層數越深,激活函數越平緩。這個原則並不是來自於對神經網絡模型的深入洞察,而來自於反向傳播(BP)練方法的缺陷。(對於這個缺陷我會新開一篇,並附上代碼專門說明。)然而,隨著對生物神經網絡更進一步的了解,是否能給出更好的激活函數模型呢?答案還是不知道,甚至啟示我們要放棄這種神經網絡模型都是有可能的。

有了神經元,就可以構建網絡了。在構建網絡之前,先對神經元的圖示結構進行簡化。如下圖所示,最終我們用一個圓圈表示了神經元,用帶箭頭的線表示了它可以接收的輸入和可以產生的輸出。

技術分享圖片

既然神經元是一個處理輸入產生輸出的模型,是否可以隨意地把一個神經元的輸出連接到另一個神經元的輸入。當然可以!卷積神經網絡(CNN)和回返神經網絡(RNN)這兩款分別在計算機視覺和自然語言處理中發揮巨大價值的神經網絡結構正是源自於神經網絡模型的這種靈活性。當然,這種靈活性也是“深度學習專家們”的學術灌水手段!。為了便於模型求解和編程實現,有一種簡單的層狀結構的構網方法。某一層的神經元僅接收且完全接受緊前層神經元的輸入。采用這種原則構建出來的神經網絡稱作全連接神經網絡。

技術分享圖片

讓我們回到給生物神經網絡建立數學模型的目的上去——分類。怎麽才能用神經網絡進行分類呢?分類的數學語言描述是,找從特征空間到類別空間的映射。特征空間的確立比較簡單,比如為了確定一個人是男是女,可以使用體重、身高、胸圍、腰圍、臀圍這幾個屬性組成的特征空間。類別空間的確立有兩種比較顯然的方案。第一種,只用一個維度,0表示女,1表示男。第二種,用兩個維度,那個維度取值大就認為屬於哪個類別,如:(1,0)表示女,(0,1)表示男。通常用第二種方案表示類別空間,第一種用於解決回歸問題。並沒有什麽特殊的原因,只是第二種比較便於建立目標函數模型(通常是損失函數)以實現最優化,這也是盡量把待解決問題向分類問題上轉換的原因。

讓神經網絡的輸入層神經元的個數等於特征空間的維數,輸出層神經元的個數等於類別空間的維數,中間層隨意安排。然後將已知的數據帶入模型,求解模型的參數。將不確定男女的(體重,身高,胸圍,腰圍,臀圍)帶入模型,求出一個解(女,男);然後判斷那一維的數值大,女>男就認為輸入的是女性的特征,男>女就為認為輸入的是男性的特征。

[1]Bilingual neurons release glutamate and GABA https://www.nature.com/articles/nn.3840
[2]激活函數也可以是分段線性函數

從生物神經網絡到人工神經網絡