神經(jīng)網(wǎng)絡(luò)其實(shí)是一個(gè)非常寬泛的稱呼,它包括兩類,一類是用計(jì)算機(jī)的方式去模擬人腦,這就是我們常說的ANN(人工神經(jīng)網(wǎng)絡(luò)),另一類是研究生物學(xué)上的神經(jīng)網(wǎng)絡(luò),又叫生物神經(jīng)網(wǎng)絡(luò)。對(duì)于計(jì)算機(jī)人士而言,肯定是研究前者。
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,即ANN),是20世紀(jì)80 年代以來人工智能領(lǐng)域興起的研究熱點(diǎn)。它從信息處理角度對(duì)人腦神經(jīng)元網(wǎng)絡(luò)進(jìn)行抽象, 建立某種簡單模型,按不同的連接方式組成不同的網(wǎng)絡(luò)。在工程與學(xué)術(shù)界也常直接簡稱為神經(jīng)網(wǎng)絡(luò)或類神經(jīng)網(wǎng)絡(luò)。最近十多年來,人工神經(jīng)網(wǎng)絡(luò)的研究工作不斷深入,已經(jīng)取得了很大的進(jìn)展,其在模式識(shí)別、智能機(jī)器人、自動(dòng)控制、預(yù)測估計(jì)、生物、醫(yī)學(xué)、經(jīng)濟(jì)等領(lǐng)域已成功地解決了許多現(xiàn)代計(jì)算機(jī)難以解決的實(shí)際問題,表現(xiàn)出了良好的智能特性。
一、神經(jīng)網(wǎng)絡(luò)三次熱潮
歷史上,神經(jīng)網(wǎng)絡(luò)的發(fā)展并不是一帆風(fēng)順...
二十世紀(jì)四十年代 M-P 神經(jīng)元模型、Hebb 學(xué)習(xí)律出現(xiàn)后,五十年代出現(xiàn)了以感知機(jī)、Adaline 為代表的一系列成果。后來因?yàn)閱螌由窠?jīng)網(wǎng)絡(luò)無法解決非線性問題,而多層網(wǎng)絡(luò)的訓(xùn)練算法尚看不到希望,神經(jīng)網(wǎng)絡(luò)研究進(jìn)入“冰河期”。哈佛大學(xué)的 Paul Werbos 在 1974 年發(fā)明 BP 算法時(shí),正值“冰河期”,因此未受到重視。
1983 年,物理學(xué)家 John Hopfield 利用神經(jīng)網(wǎng)絡(luò),在旅行商問題這個(gè) NP 完全問題的求解上獲得了當(dāng)時(shí)最好的結(jié)果,引起轟動(dòng)。稍后,UCSD 的 Rumelhart 等人重新發(fā)明了 BP 算法,再次掀起研究神經(jīng)網(wǎng)絡(luò)的熱潮。二十世紀(jì)九十年代中期,隨著統(tǒng)計(jì)學(xué)習(xí)理論和支持向量機(jī)的興起,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的理論性質(zhì)不夠清楚、試錯(cuò)性強(qiáng)、在使用中充斥大量“竅門”的弱點(diǎn)更為明顯,于是神經(jīng)網(wǎng)絡(luò)的研究又進(jìn)入低谷。
2010 年前后,隨著計(jì)算能力的迅猛提升和大數(shù)據(jù)的涌現(xiàn),神經(jīng)網(wǎng)絡(luò)研究在“深度學(xué)習(xí)”的名義下又重新崛起,先是在 ImageNet 等若干競賽上以大優(yōu)勢奪冠,此后谷歌、百度、臉書等公司紛紛投入巨資進(jìn)行研發(fā),神經(jīng)網(wǎng)絡(luò)迎來第三次高潮。

從單層神經(jīng)網(wǎng)絡(luò),到兩層神經(jīng)網(wǎng)絡(luò),再到多層神經(jīng)網(wǎng)絡(luò),下圖說明了,隨著網(wǎng)絡(luò)層數(shù)的增加,以及激活函數(shù)的調(diào)整,神經(jīng)網(wǎng)絡(luò)的非線性分界擬合能力不斷增強(qiáng)。

二、神經(jīng)網(wǎng)絡(luò)組成單元——人工神經(jīng)元(neuron)
人工神經(jīng)元(neuron)是神經(jīng)網(wǎng)絡(luò)中最基本的結(jié)構(gòu),也可以說是神經(jīng)網(wǎng)絡(luò)的基本單元,它的設(shè)計(jì)靈感完全來源于生物學(xué)上神經(jīng)元的信息傳播機(jī)制。我們學(xué)過生物的同學(xué)都知道,神經(jīng)元有兩種狀態(tài):興奮和抑制。一般情況下,大多數(shù)的神經(jīng)元是處于抑制狀態(tài),但是一旦某個(gè)神經(jīng)元收到刺激,導(dǎo)致它的電位超過一個(gè)閾值,那么這個(gè)神經(jīng)元就會(huì)被激活,處于“興奮”狀態(tài),進(jìn)而向其他的神經(jīng)元傳播化學(xué)物質(zhì)(其實(shí)就是信息)。
在人工神經(jīng)網(wǎng)絡(luò)中也是如此——

人工神經(jīng)元接收來自 n 個(gè)其他神經(jīng)元傳遞過來的輸入信號(hào) x,這些輸入信號(hào)通過帶權(quán)重 w 的連接(connection)進(jìn)行傳遞,加權(quán)求和后通過“激活函數(shù)”(activation function) f 處理產(chǎn)生神經(jīng)元的輸出 y。
在此基礎(chǔ)上,科學(xué)家又提出了偏置的概念。

偏置單元(bias unit),在有些資料里也稱為偏置項(xiàng)(bias term)或者截距項(xiàng)(intercept term),它其實(shí)就是函數(shù)的截距,與線性方程 y=wx+b 中的 b 的意義是一致的。在 y=wx+b中,b表示函數(shù)在y軸上的截距,控制著函數(shù)偏離原點(diǎn)的距離,其實(shí)在神經(jīng)網(wǎng)絡(luò)中的偏置單元也是類似的作用。
因此,神經(jīng)網(wǎng)絡(luò)的參數(shù)也可以表示為:(W, b),其中W表示參數(shù)矩陣,b表示偏置項(xiàng)或截距項(xiàng)。W參數(shù)的作用是決定分割面的方向,b參數(shù)的作用是移動(dòng)分割面。
根據(jù)激活函數(shù)的不同人工神經(jīng)元可以分成兩類:
1、線性神經(jīng)元
線性單元的激勵(lì)函數(shù)是線性函數(shù)。

線性函數(shù)的公式如下:

也就是

2、非線性神經(jīng)元
自然界中很多問題都是非線性的,而線性函數(shù)不管怎么組合都是線性的,這就需要用到非線性函數(shù),用非線性函數(shù)作激活函數(shù)的神經(jīng)元叫非線性神經(jīng)元。
非線性激活函數(shù)提高了模型的表達(dá)能力。
激活函數(shù)的作用有二:一是加入非線性因素,二是可以充分組合特征。
(1)Sgn函數(shù)---階躍函數(shù)
sgn函數(shù)的數(shù)學(xué)形式是:


在當(dāng)做激活函數(shù)時(shí),常常使用sgn函數(shù)的一種變體。

Sgn函數(shù)優(yōu)缺點(diǎn)
優(yōu)點(diǎn):簡單直觀;
缺點(diǎn):不光滑,不連續(xù)。
(2)Sigmoid函數(shù)---S函數(shù)
Sigmoid函數(shù)(也叫Logistic 函數(shù))是一個(gè)有著優(yōu)美S形曲線的數(shù)學(xué)函數(shù),在邏輯回歸、人工神經(jīng)網(wǎng)絡(luò)中有著廣泛的應(yīng)用。Sigmoid函數(shù)的值域范圍限制在(0,1)之間(exp函數(shù)使得結(jié)果一定是正數(shù)),我們知道[0,1]與概率值的范圍是相對(duì)應(yīng)的,這樣sigmoid函數(shù)就能與一個(gè)概率分布聯(lián)系起來了。它可以將一個(gè)實(shí)數(shù)映射到(0,1)的區(qū)間,可以用來做二分類。
Sigmoid函數(shù)的數(shù)學(xué)形式是:


Sigmoid函數(shù)優(yōu)缺點(diǎn)
優(yōu)點(diǎn):能夠把輸入的連續(xù)實(shí)值壓縮到0到1之間;
缺點(diǎn):容易飽和
反向傳播求誤差梯度時(shí),因求導(dǎo)涉及除法,當(dāng)輸入非常大或非常小的時(shí)候很容易就會(huì)出現(xiàn)梯度消失的情況(反向傳播接近于0的梯度),導(dǎo)致最終權(quán)重基本沒什么更新從而無法完成深層網(wǎng)絡(luò)的訓(xùn)練
(3)tanh函數(shù)---雙曲正切函數(shù)
tanh 函數(shù)是sigmoid函數(shù)的一種變體,以0點(diǎn)為中心。取值范圍為 [-1,1] ,而不是sigmoid函數(shù)的 [0,1] 。
tanh函數(shù)的數(shù)學(xué)形式是:


Tanh函數(shù)優(yōu)缺點(diǎn)
優(yōu)點(diǎn):0均值,能夠壓縮數(shù)據(jù)到-1到1之間;
缺點(diǎn):同Sigmoid缺點(diǎn),容易梯度飽和
(4)ReLU函數(shù)---修正線性單元
ReLU起源于神經(jīng)科學(xué)的研究(2001年,Dayan、Abott從生物學(xué)角度模擬出了腦神經(jīng)元接受信號(hào)更精確的激活模型),常常使用在深度神經(jīng)網(wǎng)絡(luò)中作為激活函數(shù)。
ReLU函數(shù)的數(shù)學(xué)形式是:


ReLU函數(shù)優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
由于非負(fù)區(qū)間的梯度為常數(shù),因此不存在梯度消失問題(Vanishing Gradient Problem),使得模型的收斂速度維持在一個(gè)穩(wěn)定狀態(tài);
相比于Sigmoid/Tanh需要計(jì)算指數(shù),ReLU只需要一個(gè)閾值就可以得到激活值,所以運(yùn)行速度快;
缺點(diǎn):
不以零為中心;
訓(xùn)練的時(shí)候很脆弱,有可能導(dǎo)致神經(jīng)元壞死(解決方法為設(shè)置合適的較小的learning rate);
三、神經(jīng)元的連接結(jié)構(gòu)
人之所以擁有智能,則是因?yàn)閿?shù)量龐大的神經(jīng)細(xì)胞以某種非常特殊的方式互相連接著,可見計(jì)算網(wǎng)絡(luò)中節(jié)點(diǎn)如何連接對(duì)構(gòu)建智能機(jī)器至關(guān)重要。
可以將神經(jīng)元的連接結(jié)構(gòu)分成以下幾種類型:
1、順序結(jié)構(gòu)(前饋神經(jīng)網(wǎng)絡(luò))
前饋神經(jīng)網(wǎng)絡(luò)是一種最簡單的神經(jīng)網(wǎng)絡(luò),各神經(jīng)元分層排列。每個(gè)神經(jīng)元的輸入只來自前一層的神經(jīng)元的輸出,各層間沒有反饋。
前饋神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用最廣泛、發(fā)展最迅速的人工神經(jīng)網(wǎng)絡(luò)之一,對(duì)外界輸入樣本有非常強(qiáng)的識(shí)別與分類能力。
前饋神經(jīng)網(wǎng)絡(luò)的特點(diǎn):感知
2、循環(huán)結(jié)構(gòu)(反饋神經(jīng)網(wǎng)絡(luò))
循環(huán)網(wǎng)絡(luò)是一種節(jié)點(diǎn)定向連接成環(huán)(輸出經(jīng)過時(shí)移再接入到輸入層)的人工神經(jīng)網(wǎng)絡(luò)。不同于前饋神經(jīng)網(wǎng)絡(luò)的是,循環(huán)網(wǎng)絡(luò)可以利用它內(nèi)部的記憶來處理變長并且有序的輸入序列。
反饋神經(jīng)網(wǎng)絡(luò)的特點(diǎn):聯(lián)想記憶
四、神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程
在人工神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)及應(yīng)用研究中通常須要考慮三個(gè)方面的內(nèi)容,即神經(jīng)元激活函數(shù)、神經(jīng)元之間的連接形式和網(wǎng)絡(luò)的學(xué)習(xí)。
網(wǎng)絡(luò)的學(xué)習(xí)主要是指使用學(xué)習(xí)算法來調(diào)整神經(jīng)元間的連接權(quán),使得網(wǎng)絡(luò)輸出更符合實(shí)際。學(xué)習(xí)算法分為有導(dǎo)師學(xué)習(xí)與無導(dǎo)師學(xué)習(xí)兩類。
1、有導(dǎo)師學(xué)習(xí)
有導(dǎo)師學(xué)習(xí)也稱為有監(jiān)督學(xué)習(xí)。在概念上來說,導(dǎo)師是對(duì)外界環(huán)境有認(rèn)知知識(shí)的。這些知識(shí)通過配對(duì)的輸入輸出訓(xùn)練樣本來傳入神經(jīng)網(wǎng)絡(luò)。通過這些知識(shí),任意一個(gè)訓(xùn)練向量的輸入,導(dǎo)師都可以給出輸出,而這個(gè)輸出也同時(shí)是希望從神經(jīng)網(wǎng)絡(luò)中獲取的輸出。實(shí)際上,希望得到的輸出代表了神經(jīng)網(wǎng)絡(luò)的最佳輸出表達(dá)。神經(jīng)網(wǎng)絡(luò)中的自由參數(shù)通過輸入向量以及輸出誤差來調(diào)節(jié)。其中誤差是神經(jīng)網(wǎng)絡(luò)的實(shí)際輸出與希望輸出的差。
2、無導(dǎo)師學(xué)習(xí)
無導(dǎo)師學(xué)習(xí),顧名思義就是沒有導(dǎo)師對(duì)學(xué)習(xí)進(jìn)行監(jiān)督,即神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)輸入中不包含有標(biāo)簽的實(shí)例。