人工神經網絡簡論


一、 綜述

神經網絡領域最早是由心理學家和神經學家開創的,旨在開發和測試神經的計算機模擬。粗略地說,神經網絡是一組連接的輸入/輸出單元,其中每個連接都與一個權重相關聯。在學習階段,通過調整這些權重,能夠預測輸入元組的正確類標號。由於單元之間的連接,神經網絡學習又稱連接者學習(Connectionist Learning)。

神經網絡需要很長的訓練時間,對於有足夠長訓練時間的應用更為合適。需要大量的參數,通常主要靠經驗確定,如網絡拓撲結構。神經網絡常常因為可解釋性差而受到批評。例如,人們很難解釋網絡中學習的權重和“隱含單元”的符號意義。

然而,神經網絡的優點包括其對噪聲數據的高承受能力,以及對未經訓練的數據模式分類能力。在缺乏屬性和類之間的聯系的知識時可以使用它們。不像大部分決策樹算法,它們非常適合連續值的輸入和輸出。神經網絡算法是固有並行的,可以使用並行技術來加快計算過程。

有許多不同類型的神經網絡和神經網絡算法,最流行的神經網絡算法是后向傳播,它在20世紀80年代就獲得了聲望。

二、 多層前饋神經網絡(Multilayer Feed-Forward

后向傳播算法在多層前饋神經網絡上進行學習。它迭代地學習用於元組類標號預測的一組權重。多層前饋神經網絡由一個輸入層、一個或多個隱藏層和一個輸出層組成。多層前饋神經網絡的例子如下圖所示:

clip_image002

每層由若干個單元組成。網絡的輸入對應於每個元組測量的屬性。輸入同時提供給稱作輸入層的單元層。這些輸入通過輸入層,然后加權同時提供給稱作隱藏層的“類神經元”的第二層。該隱藏層單元的輸出可以輸入到另一個隱藏層,如此下去。隱藏層的數量是任意的,盡管實踐中通常只有一層。最后一個隱藏層的加權輸出作為構成輸出層的單元的輸入。輸出層發布給定元組的網絡預測。

輸入層的單元稱作輸入單元。隱藏層和輸出層的單元,由於它們的符號生物學基礎,有時稱作Neurodes,或稱作輸出單元。上圖所示的多層神經網絡中有兩層輸出單元。因此成為兩層神經網絡(不計輸入層,因為它只用來傳遞輸入值到下一層)。類似地,包含兩個隱藏層的網絡稱為三層神經網絡,如此等等。

如果其權重都不回送到輸入單元,或前一層的輸出單元,則該網絡是前饋的。

如果每個單元都向下一層的每個單元提供輸入,則該網絡是全連接的。

每個輸出單元取前一層單元輸出的加權和作為輸入。它將一個非線性(激勵)函數作用於加權輸入。多層前饋神經網絡能夠將類預測作為輸入的非線性組合建模。從統計學的觀點來講,它們進行非線性回歸。給定足夠多的隱藏單元和足夠的訓練樣本,多層前饋神經網絡可以逼近任何函數。

三、 定義網絡拓撲

在開始訓練之前,用戶必須說明輸入層的單元數、隱藏層數(如果多於一層)、每個隱藏層的單元數和輸出層的單元數,以確定網絡拓撲。

對訓練元組中每個屬性的測量輸入值進行歸一化將有助於加快學習過程。通常,對輸入值進行歸一化,使其落入0.0~1.0之間。離散值屬性可以重新編碼,使離散屬性的每個閾值對應一個輸入單元。例如,如果屬性A有三個可能的取值{a0, a1, a2},則可以分配三個輸入單元表示A,即可以使用I0, I1, I2作為輸入單元。每個單元初始化為0。如果A=a0,則I0置為1;如果A=a1,則I1置為1。

神經網絡可以用來分類(預測給定元組的類標號)或預測(預測連續值輸出)。對於分類,一個輸出單元可以用來表示兩個類(其中值1代表一個類,值0代表另一個類)。如果多於兩個類,則每個類使用一個輸出單元。

對於“最好的”隱藏單元數,沒有明確的規則。網絡設計是一個試湊的過程,並可能影響結果訓練網絡的准確性。權重的初值也可能影響結果的准確性。一旦網絡經過訓練,但其准確率不能接受,則通常采用不同的網絡拓撲或不同的初始權重集,重復訓練過程。可以使用准確率估計的交叉確認技術幫助確定何時找到一個可接受的網絡。已經提出了一些自動搜索“較好”網絡結構的技術,這些技術通常使用爬山法,從一個選擇修改的初始結構開始。

四、 后向傳播

后向傳播迭代地處理訓練元組數據集,將每個元組的網絡預測與實際已知的目標值進行對比,目標值可以是已知訓練元組的類標號(對於分類問題)或連續值(對於預測問題)。

對於每個訓練樣本,“由后向前”修改權重使網絡預測和實際目標值之間的均方誤差最小,即由輸出層,經由每個隱藏層,到第一個隱藏層(因此稱作后向傳播)。盡管不能保證,一般地,權重將最終收斂,學習過程停止。

1、初始化權重

網絡的權重初始化為很小的隨機數(例如,由-1.0~1.0,或由-0.5~0.5)。每個單元有一個與之關聯的偏倚(Bias),偏倚也類似的初始化為小隨機數。

每個訓練元組X按以下步驟處理:

2、向前傳播輸入

首先,訓練元組提供給網絡的輸入層。輸入通過輸入單元,不發生變化,也就是說,對於輸入單元j,它的輸出Oj等於它的輸入值Ij。然后計算隱藏層和輸出層每個單元的凈輸入和輸出。隱藏層或輸出層的凈輸入用其輸入的線性組合計算。

clip_image004

一個隱藏或輸出單元j:單元j的輸入是來自於上一層的輸出。這些與對應的權重相乘,形成加權和。加權和再加到與單元j相關聯的偏倚上。單元j的凈輸入:

clip_image006

其中,clip_image008是由上一層的單元i到單元j的連接的權重;clip_image010是上一層單元i的輸出;而clip_image012是單元j的偏倚。偏倚充當閾值,用來改變單元的活性。

隱藏層和輸出層的每個單元取其凈輸入,然后將激勵函數作用於它,如上圖所示。該函數用符號表現單元代表的神經元活性。使用Logistic或S形(Sigmoid)函數。給定單元j的凈輸入clip_image014,則單元j的輸入clip_image016用下式計算:

clip_image018

該函數又稱擠壓函數(Squashing Function),因為它將一個較大的輸入值映射到較小的區間0~1。Logistic函數是非線性的和可微的,使得后向傳播算法可以對非線性可分的分類問題建模。

對於每個隱藏層,計算其輸出值clip_image016[1],直到最后一個隱藏層,給出網絡預測。實踐中,由於在向后傳播誤差時還需要這些中間輸出值,因此將每個單元的中間輸出值存放起來是一個好辦法,這種技巧可以顯著的降低所需的計算量。

3、向后傳播誤差

通過更新權重和反映網絡預測誤差的偏倚,向后傳播誤差。對於輸出層單元j,誤差clip_image020用下式計算:

clip_image022

其中clip_image024是單元j的實際輸出,而clip_image026是j基於給定訓練元組的已知目標值。注意,clip_image028是Logistic函數的導數。

為計算隱藏層單元j的誤差,考慮到下一層中鏈接到j的單元的誤差加權和。隱藏層單元j的誤差是:

clip_image030

其中,clip_image032是由下一較高層中單元k到單元j的連接權重,而clip_image034是單元k的誤差。

更新權重和偏倚,以反映傳播誤差,權重由下式更新,其中,clip_image036是權重clip_image038的改變:

clip_image040

clip_image042

上面公式中的變量l是學習率,通常取0.0~1.0之間的常數值。后向傳播學習使用梯度下降法搜索權重的集合。這些權重擬合訓練數據,使網絡類預測與元組的已知目標值之間的均方距最小。學習率幫助避免陷入決策空間的局部極小(即權重看上去收斂但不是最優解),並有助於找到全局最小。如果學習率太小,學習將進行的很慢,如果學習率太大,則可能出現在不適當的解之間擺動。一個經驗的法則是將學習率設置為1/t,t是當前訓練集迭代的次數。

偏倚由下式更新。其中,clip_image044是權重clip_image046的改變:

clip_image048

clip_image050

注意,這里我們每處理一個元組就更新權重和偏倚,這稱作實例更新(Case Update),權重和偏倚的增量也可以累計到變量中,可以在處理完訓練集中的所有元組之后再進行權重和偏倚的更新,這種策略稱之為周期更新(Epoch Update),掃描訓練集的一次迭代是一個周期。理論上,后向傳播的數學推導使用周期更新,而實踐中實例更新更為常見,因為它通常產生更准確的結果。

終止條件:

如果發生以下情況,則停止進行訓練:

前一周期所有的clip_image036[1]都小於某個指定的閾值,或

前一周期誤分類的元組百分比小於某個閾值,或

超過預先指定的周期數。

實踐中,權重收斂可能需要數十萬個周期。后向傳播的計算效率依賴於訓練網絡所用的時間。給定|D|個元組和w 個權重,則每個周期需要O(|D|*w) 時間。然而,在最壞情況下,周期數可能是輸入數n的指數。在實踐中,網絡收斂所需要的時間是非常不確定的。有一些加快訓練速度的技術,例如,可以使用一種稱作模擬退火的技術,它還能確保收斂到全局最優。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM