每個神經(jīng)元(細胞)都向外伸出許多分支,其中用來接收輸入的分支稱作樹突(dendrities),用來輸出信號的分支稱作軸突(axon),軸突連接到樹突上形成一個突觸(synapse)。每個神經(jīng)元可以通過這種方式連接多個其他神經(jīng)元,每個神經(jīng)元也可以接受多個其他神經(jīng)元的連接。很多連接起來的神經(jīng)元形成了網(wǎng)狀結(jié)構(gòu),海量具有傳感和伸縮功能的體細胞通過神經(jīng)纖維連接在這個網(wǎng)狀結(jié)構(gòu)的輸入和輸出端,中樞神經(jīng)系統(tǒng)正是通過這種網(wǎng)狀結(jié)構(gòu)獲得了“智能”,至少是驅(qū)動機體做出了趨利避害的選擇。
模式識別中的分類問題就是一種典型的選擇??雌饋?,這給出了一種解決分類問題的啟示。但是這種網(wǎng)狀結(jié)構(gòu)是怎么工作的呢?生物學(xué)家已經(jīng)觀察到的事實是,當有外界刺激時,網(wǎng)絡(luò)上的某些神經(jīng)元會被次第激活。神經(jīng)元被激活的意思是這個神經(jīng)元會向外傳遞信號或者對外傳遞的信號強度較大。
為了便于利用,需要對激活過程建立數(shù)學(xué)模型。首先將目光聚焦在一個突觸上,軸突釋放遞質(zhì)被樹突吸收或者電信號從樹突傳遞到軸突就完成了信息的傳遞。如何表示突觸傳遞的信息呢?給出選擇是用一個數(shù)值來表示,這寓示著將信息只歸為一個類別,并用數(shù)值的大小表示其數(shù)量方面的屬性。這樣粗暴的簡化有意義嗎?實際遞質(zhì)可是多種多樣的啊[1]!顯而易見將一個軸突的輸出表示成一個多維向量才是更合理的。但是我們可以引入多個虛擬突觸來實現(xiàn)這個多維向量的各個維度的信息的傳遞,既然都是同樣結(jié)構(gòu)的突觸,為何不先只考察其中一個呢。
接下來考察神經(jīng)元的激活。激活可以有兩種模型結(jié)構(gòu)——跳變式和連續(xù)式。跳變式激活方式是:引入一個閾值,當輸入信息經(jīng)過某種處理后大于閾值即表示激活,小于閾值表示未激活。連續(xù)式激活方式表示神經(jīng)元不是只有激活和未激活兩種狀態(tài),而是有不同的激活水平,輸入信息經(jīng)過某種處理后直接輸出激活水平。同樣,因為在突觸中可能[幾乎是確定的]同時傳遞了多種信息,是否應(yīng)該為一個神經(jīng)元提供多個激活模型呢?對這個問題解答同樣是同形重復(fù),引入虛擬神經(jīng)元,讓一個神經(jīng)元只表示其中一個激活模型。讓這個虛擬神經(jīng)元接收所有樹突上的輸入信息,經(jīng)過激活模型處理后生成一維的激活水平。什么?激活水平也應(yīng)該是多維的?好辦,再引入虛擬神經(jīng)元,每個神經(jīng)元只管生成其中某一維的激活水平。
多維變一維,顯然數(shù)學(xué)模型應(yīng)該是加權(quán)和,給每一維找到一個權(quán)重相乘再加起來。
但是這個模型是線性的,所有輸入和輸出組成的點集落在一個超平面上。是不是太簡單了點,不管怎么調(diào)整這幾個權(quán)重參數(shù)可以表示的情形都是平面。那么再引入一個非線性[2]函數(shù)以這個加權(quán)和為輸入,將其輸出作為激活水平,這個非線性函數(shù)稱作激活函數(shù)。至此神經(jīng)元的數(shù)學(xué)模型算是初步建立起來了。
激活函數(shù)該如何選取呢?很可惜,答案是不知道。目前對生物神經(jīng)網(wǎng)絡(luò)的了解,不能給予確定激活函數(shù)的啟示。不知道那么就可以隨意安排,早期常用的激活函數(shù)是Sigmoid。其函數(shù)圖像和公式如下。
這是一個關(guān)于(0,0.5)中心對稱的函數(shù),以加權(quán)和作為輸入形成的超平面總是關(guān)于(0,0.5)中心對稱的,這多少讓人感覺有些不安。那么在激活函數(shù)的自變量上增加一個偏移量,這個偏移量將會導(dǎo)致函數(shù)圖像在z軸上平移。至此構(gòu)成神經(jīng)網(wǎng)絡(luò)的基本元素——處理輸入產(chǎn)生輸出的神經(jīng)元模型已經(jīng)建立好了。
激活函數(shù)的偏移量使得超平面可以離開原點了,這僅僅是數(shù)學(xué)上的意義;其實它還完成了對跳變式激活方式的建模。參考上圖,假設(shè)水平藍線以上的數(shù)值才能表示激活,那么對于藍色的圖像來說處于持續(xù)激活狀態(tài),綠色的圖片表示只要有輸入就激活,而紅色的部分則表示當輸入數(shù)值超過5時才忽然進入激活狀態(tài),這就是跳變了。
在實際操作中對于激活函數(shù)的選取是有一定指導(dǎo)原則的——層數(shù)越深,激活函數(shù)越平緩。這個原則并不是來自于對神經(jīng)網(wǎng)絡(luò)模型的深入洞察,而來自于反向傳播(BP)訓(xùn)練方法的缺陷。(對于這個缺陷我會新開一篇,并附上代碼專門說明。)然而,隨著對生物神經(jīng)網(wǎng)絡(luò)更進一步的了解,是否能給出更好的激活函數(shù)模型呢?答案還是不知道,甚至啟示我們要放棄這種神經(jīng)網(wǎng)絡(luò)模型都是有可能的。
有了神經(jīng)元,就可以構(gòu)建網(wǎng)絡(luò)了。在構(gòu)建網(wǎng)絡(luò)之前,先對神經(jīng)元的圖示結(jié)構(gòu)進行簡化。如下圖所示,最終我們用一個圓圈表示了神經(jīng)元,用帶箭頭的線表示了它可以接收的輸入和可以產(chǎn)生的輸出。
既然神經(jīng)元是一個處理輸入產(chǎn)生輸出的模型,是否可以隨意地把一個神經(jīng)元的輸出連接到另一個神經(jīng)元的輸入。當然可以!卷積神經(jīng)網(wǎng)絡(luò)(CNN)和回返神經(jīng)網(wǎng)絡(luò)(RNN)這兩款分別在計算機視覺和自然語言處理中發(fā)揮巨大價值的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)正是源自于神經(jīng)網(wǎng)絡(luò)模型的這種靈活性。當然,這種靈活性也是“深度學(xué)習(xí)專家們”的學(xué)術(shù)灌水手段!。為了便于模型求解和編程實現(xiàn),有一種簡單的層狀結(jié)構(gòu)的構(gòu)網(wǎng)方法。某一層的神經(jīng)元僅接收且完全接受緊前層神經(jīng)元的輸入。采用這種原則構(gòu)建出來的神經(jīng)網(wǎng)絡(luò)稱作全連接神經(jīng)網(wǎng)絡(luò)。
讓我們回到給生物神經(jīng)網(wǎng)絡(luò)建立數(shù)學(xué)模型的目的上去——分類。怎么才能用神經(jīng)網(wǎng)絡(luò)進行分類呢?分類的數(shù)學(xué)語言描述是,找從特征空間到類別空間的映射。特征空間的確立比較簡單,比如為了確定一個人是男是女,可以使用體重、身高、胸圍、腰圍、臀圍這幾個屬性組成的特征空間。類別空間的確立有兩種比較顯然的方案。第一種,只用一個維度,0表示女,1表示男。第二種,用兩個維度,那個維度取值大就認為屬于哪個類別,如:(1,0)表示女,(0,1)表示男。通常用第二種方案表示類別空間,第一種用于解決回歸問題。并沒有什么特殊的原因,只是第二種比較便于建立目標函數(shù)模型(通常是損失函數(shù))以實現(xiàn)最優(yōu)化,這也是盡量把待解決問題向分類問題上轉(zhuǎn)換的原因。
讓神經(jīng)網(wǎng)絡(luò)的輸入層神經(jīng)元的個數(shù)等于特征空間的維數(shù),輸出層神經(jīng)元的個數(shù)等于類別空間的維數(shù),中間層隨意安排。然后將已知的數(shù)據(jù)帶入模型,求解模型的參數(shù)。將不確定男女的(體重,身高,胸圍,腰圍,臀圍)帶入模型,求出一個解(女,男);然后判斷那一維的數(shù)值大,女>男就認為輸入的是女性的特征,男>女就為認為輸入的是男性的特征。
[1]Bilingual neurons release glutamate and GABA
https://www.nature.com/articles/nn.3840
[2]激活函數(shù)也可以是分段線性函數(shù)
本文作者:唐銳,畢業(yè)于長安大學(xué)遙感科學(xué)與技術(shù)專業(yè),曾從事基于計算機視覺的智能交通系統(tǒng)研發(fā)3年,也在互聯(lián)網(wǎng)公司鍛煉過幾年,現(xiàn)加入了原同事及朋友創(chuàng)辦的北京天地智繪科技有限公司,從事衛(wèi)星影像解譯系統(tǒng)研發(fā)。比較擅長系統(tǒng)架構(gòu)設(shè)計、算法研發(fā)以及開發(fā)過程管理;喜歡鉆研,不隨大流。
聯(lián)系客服