從生物神經(jīng)網(wǎng)絡(luò)到人工神經(jīng)網(wǎng)絡(luò)
作者:唐銳
如今提及人工智能,大家期待的一定是某種可以“學(xué)習(xí)”的方法,這種方法使用數(shù)學(xué)模型從數(shù)據(jù)中獲取模式的某種表示。在眾多“學(xué)習(xí)”方法中,獲得最多關(guān)注,承載最多期望的非“神經(jīng)網(wǎng)絡(luò)”莫屬。既然我們將這種數(shù)學(xué)方法稱作神經(jīng)網(wǎng)絡(luò),那么他必然和廣泛存在于生物體內(nèi)的神經(jīng)網(wǎng)絡(luò)存在某種聯(lián)系。讓我們考察一個(gè)典型的神經(jīng)連接。
如今提及人工智能,大家期待的一定是某種可以“學(xué)習(xí)”的方法,這種方法使用數(shù)學(xué)模型從數(shù)據(jù)中獲取模式的某種表示。在眾多“學(xué)習(xí)”方法中,獲得最多關(guān)注,承載最多期望的非“神經(jīng)網(wǎng)絡(luò)”莫屬。既然我們將這種數(shù)學(xué)方法稱作神經(jīng)網(wǎng)絡(luò),那么他必然和廣泛存在于生物體內(nèi)的神經(jīng)網(wǎng)絡(luò)存在某種聯(lián)系。讓我們考察一個(gè)典型的神經(jīng)連接。

每個(gè)神經(jīng)元(細(xì)胞)都向外伸出許多分支,其中用來(lái)接收輸入的分支稱作樹(shù)突(dendrities),用來(lái)輸出信號(hào)的分支稱作軸突(axon),軸突連接到樹(shù)突上形成一個(gè)突觸(synapse)。每個(gè)神經(jīng)元可以通過(guò)這種方式連接多個(gè)其他神經(jīng)元,每個(gè)神經(jīng)元也可以接受多個(gè)其他神經(jīng)元的連接。很多連接起來(lái)的神經(jīng)元形成了網(wǎng)狀結(jié)構(gòu),海量具有傳感和伸縮功能的體細(xì)胞通過(guò)神經(jīng)纖維連接在這個(gè)網(wǎng)狀結(jié)構(gòu)的輸入和輸出端,中樞神經(jīng)系統(tǒng)正是通過(guò)這種網(wǎng)狀結(jié)構(gòu)獲得了“智能”,至少是驅(qū)動(dòng)機(jī)體做出了趨利避害的選擇。
模式識(shí)別中的分類問(wèn)題就是一種典型的選擇。看起來(lái),這給出了一種解決分類問(wèn)題的啟示。但是這種網(wǎng)狀結(jié)構(gòu)是怎么工作的呢?生物學(xué)家已經(jīng)觀察到的事實(shí)是,當(dāng)有外界刺激時(shí),網(wǎng)絡(luò)上的某些神經(jīng)元會(huì)被次第激活。神經(jīng)元被激活的意思是這個(gè)神經(jīng)元會(huì)向外傳遞信號(hào)或者對(duì)外傳遞的信號(hào)強(qiáng)度較大。
為了便于利用,需要對(duì)激活過(guò)程建立數(shù)學(xué)模型。首先將目光聚焦在一個(gè)突觸上,軸突釋放遞質(zhì)被樹(shù)突吸收或者電信號(hào)從樹(shù)突傳遞到軸突就完成了信息的傳遞。如何表示突觸傳遞的信息呢?給出選擇是用一個(gè)數(shù)值來(lái)表示,這寓示著將信息只歸為一個(gè)類別,并用數(shù)值的大小表示其數(shù)量方面的屬性。這樣粗暴的簡(jiǎn)化有意義嗎?實(shí)際遞質(zhì)可是多種多樣的啊[1]!顯而易見(jiàn)將一個(gè)軸突的輸出表示成一個(gè)多維向量才是更合理的。但是我們可以引入多個(gè)虛擬突觸來(lái)實(shí)現(xiàn)這個(gè)多維向量的各個(gè)維度的信息的傳遞,既然都是同樣結(jié)構(gòu)的突觸,為何不先只考察其中一個(gè)呢。

接下來(lái)考察神經(jīng)元的激活。激活可以有兩種模型結(jié)構(gòu)——跳變式和連續(xù)式。跳變式激活方式是:引入一個(gè)閾值,當(dāng)輸入信息經(jīng)過(guò)某種處理后大于閾值即表示激活,小于閾值表示未激活。連續(xù)式激活方式表示神經(jīng)元不是只有激活和未激活兩種狀態(tài),而是有不同的激活水平,輸入信息經(jīng)過(guò)某種處理后直接輸出激活水平。同樣,因?yàn)樵谕挥|中可能[幾乎是確定的]同時(shí)傳遞了多種信息,是否應(yīng)該為一個(gè)神經(jīng)元提供多個(gè)激活模型呢?對(duì)這個(gè)問(wèn)題解答同樣是同形重復(fù),引入虛擬神經(jīng)元,讓一個(gè)神經(jīng)元只表示其中一個(gè)激活模型。讓這個(gè)虛擬神經(jīng)元接收所有樹(shù)突上的輸入信息,經(jīng)過(guò)激活模型處理后生成一維的激活水平。什么?激活水平也應(yīng)該是多維的?好辦,再引入虛擬神經(jīng)元,每個(gè)神經(jīng)元只管生成其中某一維的激活水平。

多維變一維,顯然數(shù)學(xué)模型應(yīng)該是加權(quán)和,給每一維找到一個(gè)權(quán)重相乘再加起來(lái)。

但是這個(gè)模型是線性的,所有輸入和輸出組成的點(diǎn)集落在一個(gè)超平面上。是不是太簡(jiǎn)單了點(diǎn),不管怎么調(diào)整這幾個(gè)權(quán)重參數(shù)可以表示的情形都是平面。那么再引入一個(gè)非線性[2]函數(shù)以這個(gè)加權(quán)和為輸入,將其輸出作為激活水平,這個(gè)非線性函數(shù)稱作激活函數(shù)。至此神經(jīng)元的數(shù)學(xué)模型算是初步建立起來(lái)了。

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

這是一個(gè)關(guān)于(0,0.5)中心對(duì)稱的函數(shù),以加權(quán)和作為輸入形成的超平面總是關(guān)于(0,0.5)中心對(duì)稱的,這多少讓人感覺(jué)有些不安。那么在激活函數(shù)的自變量上增加一個(gè)偏移量,這個(gè)偏移量將會(huì)導(dǎo)致函數(shù)圖像在z軸上平移。至此構(gòu)成神經(jīng)網(wǎng)絡(luò)的基本元素——處理輸入產(chǎn)生輸出的神經(jīng)元模型已經(jīng)建立好了。

激活函數(shù)的偏移量使得超平面可以離開(kāi)原點(diǎn)了,這僅僅是數(shù)學(xué)上的意義;其實(shí)它還完成了對(duì)跳變式激活方式的建模。參考上圖,假設(shè)水平藍(lán)線以上的數(shù)值才能表示激活,那么對(duì)于藍(lán)色的圖像來(lái)說(shuō)處于持續(xù)激活狀態(tài),綠色的圖片表示只要有輸入就激活,而紅色的部分則表示當(dāng)輸入數(shù)值超過(guò)5時(shí)才忽然進(jìn)入激活狀態(tài),這就是跳變了。
在實(shí)際操作中對(duì)于激活函數(shù)的選取是有一定指導(dǎo)原則的——層數(shù)越深,激活函數(shù)越平緩。這個(gè)原則并不是來(lái)自于對(duì)神經(jīng)網(wǎng)絡(luò)模型的深入洞察,而來(lái)自于反向傳播(BP)訓(xùn)練方法的缺陷。(對(duì)于這個(gè)缺陷我會(huì)新開(kāi)一篇,并附上代碼專門(mén)說(shuō)明。)然而,隨著對(duì)生物神經(jīng)網(wǎng)絡(luò)更進(jìn)一步的了解,是否能給出更好的激活函數(shù)模型呢?答案還是不知道,甚至啟示我們要放棄這種神經(jīng)網(wǎng)絡(luò)模型都是有可能的。
有了神經(jīng)元,就可以構(gòu)建網(wǎng)絡(luò)了。在構(gòu)建網(wǎng)絡(luò)之前,先對(duì)神經(jīng)元的圖示結(jié)構(gòu)進(jìn)行簡(jiǎn)化。如下圖所示,最終我們用一個(gè)圓圈表示了神經(jīng)元,用帶箭頭的線表示了它可以接收的輸入和可以產(chǎn)生的輸出。

既然神經(jīng)元是一個(gè)處理輸入產(chǎn)生輸出的模型,是否可以隨意地把一個(gè)神經(jīng)元的輸出連接到另一個(gè)神經(jīng)元的輸入。當(dāng)然可以!卷積神經(jīng)網(wǎng)絡(luò)(CNN)和回返神經(jīng)網(wǎng)絡(luò)(RNN)這兩款分別在計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理中發(fā)揮巨大價(jià)值的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)正是源自于神經(jīng)網(wǎng)絡(luò)模型的這種靈活性。當(dāng)然,這種靈活性也是“深度學(xué)習(xí)專家們”的學(xué)術(shù)灌水手段!。為了便于模型求解和編程實(shí)現(xiàn),有一種簡(jiǎn)單的層狀結(jié)構(gòu)的構(gòu)網(wǎng)方法。某一層的神經(jīng)元僅接收且完全接受緊前層神經(jīng)元的輸入。采用這種原則構(gòu)建出來(lái)的神經(jīng)網(wǎng)絡(luò)稱作全連接神經(jīng)網(wǎng)絡(luò)。

讓我們回到給生物神經(jīng)網(wǎng)絡(luò)建立數(shù)學(xué)模型的目的上去——分類。怎么才能用神經(jīng)網(wǎng)絡(luò)進(jìn)行分類呢?分類的數(shù)學(xué)語(yǔ)言描述是,找從特征空間到類別空間的映射。特征空間的確立比較簡(jiǎn)單,比如為了確定一個(gè)人是男是女,可以使用體重、身高、胸圍、腰圍、臀圍這幾個(gè)屬性組成的特征空間。類別空間的確立有兩種比較顯然的方案。***種,只用一個(gè)維度,0表示女,1表示男。第二種,用兩個(gè)維度,那個(gè)維度取值大就認(rèn)為屬于哪個(gè)類別,如:(1,0)表示女,(0,1)表示男。通常用第二種方案表示類別空間,***種用于解決回歸問(wèn)題。并沒(méi)有什么特殊的原因,只是第二種比較便于建立目標(biāo)函數(shù)模型(通常是損失函數(shù))以實(shí)現(xiàn)***化,這也是盡量把待解決問(wèn)題向分類問(wèn)題上轉(zhuǎn)換的原因。
讓神經(jīng)網(wǎng)絡(luò)的輸入層神經(jīng)元的個(gè)數(shù)等于特征空間的維數(shù),輸出層神經(jīng)元的個(gè)數(shù)等于類別空間的維數(shù),中間層隨意安排。然后將已知的數(shù)據(jù)帶入模型,求解模型的參數(shù)。將不確定男女的(體重,身高,胸圍,腰圍,臀圍)帶入模型,求出一個(gè)解(女,男);然后判斷那一維的數(shù)值大,女>男就認(rèn)為輸入的是女性的特征,男>女就為認(rèn)為輸入的是男性的特征。
[1]Bilingual neurons release glutamate and GABA
https://www.nature.com/articles/nn.3840
[2]激活函數(shù)也可以是分段線性函數(shù)
責(zé)任編輯:龐桂玉
來(lái)源:
數(shù)據(jù)與算法之美