第五章 神經網絡

神經元模型

神經網絡:神經網絡是由具有適應性的簡單單元組成的廣泛并行互連的網絡,它的組織能夠模擬生物神經系統對真實世界物體所作出的交互反應。
神經網絡中最基本的成分便是神經元模型
M-P神經元模型:


如圖,其中y被稱為“激活函數”,理想中的激活函數是階躍函數,也因其不連續的性質,故常用Sigmoid函數作為激活函數。

于是把許多這樣的神經元模型按一定的層次結構連接起來,便是神經網絡

感知機與多層網絡

感知機

感知機由兩層神經元組成,分別為輸入層、輸出層。


感知機能實現邏輯與、或、非運算。(由激活函數,假定是階躍函數,通過給定w和θ的值,令x1、x2取適當的值以實現)
給定訓練集,感知機的n+1個參數都能學習得到,即n個權重和1個閾值。閾值θ可以看作一個固定輸入為-1.0的啞結點所對應的連接權重wn+1,即假定存在xn+1=-1的一個輸入神經元。于是這樣就把權重和閾值統一在一起了。
對于訓練樣例(x,y),若當前感知機的輸出與y不一致,則感知機權重會進行調整:

根據\widehat{y}=f(\sum_{i=1}^nw_ix_i-θ)=f(\sum_{i=1}^{n+1}w_ix_i),固定值x_{i+1}=-1
均方誤差E=\frac{1}{2}(y-\widehat{y})^2
使minE,則對w_i進行求導,又因假定f為階躍函數,則可求得x_i,然后令下降步長為a,a\in(0,1),所以求得:
\Delta w_i=a(y-\widehat{y})x_i
書中a為\eta.
(以上是用梯度下降算法來尋找最小均方誤差)

以下是具體過程:


其中被稱為學習率
然鵝,回到感知機,它只有輸出層神經元進行激活函數處理,一層功能神經元的學習能力很有限,它甚至不能解決異或這樣簡單的非線性可分問題。
于是要解決非線性可分問題,就不能用單層功能神經元了,要考慮使用多層功能神經元。

多層網絡

多層神經網絡的拓撲結構如圖:


這只是兩層感知機用來解決異或問題的

單、雙隱含層的多層網絡結構

如上圖可知,多層網絡由輸入層、隱含層和輸出層組成,頂層是輸出層,底層是輸入層,中間的便是隱含層。隱含層與輸出層都具有功能神經元。
多層前饋神經網絡的結構需要滿足:
1、每層神經元必須與下一層完全互連
2、神經元之間不存在同層連接
3、神經元不可跨層連接

誤差逆傳播算法(BP神經網絡算法)

只需包含一個足夠多神經元的隱層,就能以任意精度逼近任意復雜度的連續函數


BP算法和感知機的推導過程原理一致,同樣基于梯度下降策略,以目標的負梯度方向對參數進行調整。權重調整規則的推導以及BP算法的基本流程:






學習率η∈(0,1)控制著沿反梯度方向下降的步長,若步長太大則下降太快容易產生震蕩,若步長太小則收斂速度太慢,于是常設置為η=0.1。
BP算法的目標是要最小化訓練集D上的積累。
標準BP算法每次僅對一個訓練樣例更新連接權和閾值,即上面的算法更新規則是基于單個Ek推導得到的。同樣類似地推導出基于累積最小誤差的更新規則,便是累計誤差逆傳播算法。
累積BP算法和標準BP算法,一個更新頻率低,一個需要多次迭代,當累積誤差下降到一定程度,下降會變得很緩慢,這時候使用標準BP會獲得更好的解。
對于上面也提到過,只要包含足夠多的神經元隱層,就能以任意精度逼近任意復雜度的連續函數。但如何設置隱層神經元的個數這個問題依舊未被解決,實際應用中通常使用“試錯法”進行調整。

BP神經網絡由于學習能力太強大比較榮譽造成過擬合問題,故有兩種策略來減緩過擬合的問題:
1、早停:將數據分成訓練集和驗證集,訓練集學習,驗證集評估性能,在訓練過程中,若訓練集的累積誤差降低,而驗證集的累積誤差提高,則終止訓練;
2、引入正則化:其基本思想是在誤差目標函數中增加一個用于描述網絡復雜程度的部分,有如連接權和閾值的平方和:



其中λ∈(0,1)用于對累積經驗誤差與網絡復雜度這兩項進行折中,常通過交叉驗證法來估計。

全局最小和局部最小

神經網絡的訓練過程可看作一個參數尋優的過程,即尋找到適當的參數使得E最小。于是我們時常會談及“全局最小”和“局部最小”。
1、全局最小:即全局最小解,在參數空間中,所有其他點的誤差函數值均大于該點;
2、局部最小:即局部最小解,在參數空間中,其鄰近的點的誤差函數值均大于該點。



我們要達到局部極小點,很容易,只要滿足梯度為零的點便是了,局部極小點可以有多個,但全局最小點只有一個。顯然,我們追求的是全局最小,而非局部極小,于是人們通常采用以下策略來試圖“跳出”局部極小,使其接近全局最小:
1、以多組不同參數值初始化多個神經網絡,按標準方法訓練,在迭代停止后,取其中誤差最小的解作為最終參數;
2、使用隨機梯度下降(在計算梯度時加入了隨機因素),使得在局部最小時,計算的梯度仍可能不為0,從而可能跳出局部極小,繼續進行迭代;
3、“模擬退火”技術,在每一步都以一定的概率接受比當前解更差的結果,但接受“次優解”的概率要隨著迭代進行,時間推移而逐漸減低以確保算法的穩定。

其他常見的神經網絡

1、RBF網絡
單隱層前饋神經網絡,使用徑向基函數作為隱層神經元激活函數,輸出層是對隱層神經元輸出的線性組合。RBF網絡可表示為:

2、ART網絡
競爭型學習(神經網絡中一種常用的無監督學習策略),由比較層、識別層、識別閾值和重置模塊組成。接收到比較層的輸入信號后,識別層神經元相互競爭以產生獲勝神經元,最簡單的方式就是計算輸入向量與每個識別層神經元所對應的模式類代表向量間的距離,距離小者獲勝。若獲勝神經元對應的代表向量與輸入向量間相似度大于識別閾值,則將輸入樣本歸為該代表向量所屬類別,網絡連接權也會進行更新以保證后面接收到相似的輸入樣本時該模式類會計算出更大的相似度,使得這樣的樣本能夠歸于一類;如果相似度不大于識別閾值,則重置模塊會在識別層加一個神經元,其代表向量設置為當前輸入向量
3、SOM網絡
競爭型學習的無監督神經網絡,將高維輸入數據映射到低維空間(通常是二維),且保持輸入數據在高維空間的拓撲結構。
4、級聯相關網絡
結構自適應網絡

5、Elman網絡
遞歸神經網絡

6、Boltzmann機
基于能量的模型,其神經元分為顯層與隱層,顯層用于數據輸入輸出,隱層被理解為數據的內在表達。其神經元皆為布爾型,1為激活,0為抑制。


其訓練過程就是將每個訓練樣本視為一個狀態向量s,使其出現的概率盡可能大。

深度學習

理論上,參數越多的模型其復雜程度越高,能完成更加復雜的學習任務。但是復雜模型的訓練效率低下,容易過擬合。但由于大數據時代、云計算,計算能力大幅提升緩解了訓練效率低下,而訓練數據的增加則可以降低過擬合風險。
于是如何增加模型的復雜程度呢?
1、增加隱層數;
2、增加隱層神經元數.
如何有效訓練多隱層神經網絡?
1、無監督逐層訓練:每次訓練一層隱節點,把上一層隱節點的輸出當作輸入來訓練,本層隱結點訓練好后,輸出再作為下一層的輸入來訓練,這稱為預訓練,全部預訓練完成后,再對整個網絡進行微調。“預訓練+微調”即把大量的參數進行分組,先找出每組較好的設置,再基于這些局部最優的結果來訓練全局最優;
2、權共享:令同一層神經元使用完全相同的連接權,典型的例子是卷積神經網絡。這樣做可以大大減少需要訓練的參數數目。

深度學習可理解為一種特征學習或者表示學習,是通過多層處理,逐漸將初始的低層特征表示轉化為高層特征表示后,用簡單模型即可完成復雜的分類等學習任務

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容