1. 程式人生 > >周志華《機器學習》筆記:第5章 神經網路

周志華《機器學習》筆記:第5章 神經網路

1、神經元網路模型
  神經網路中最基本的成分是神經元模型,即“簡單單元”。“M-P神經元模型”,神經元接收到來自n 個其他神經元傳遞過來的輸入訊號,這些輸入訊號通過帶權重的連線進行傳遞,神經元接收的總輸入值將與神經元的閾值進行比較,然後通過“啟用函式”處理以產生神經元的輸出。
這裡寫圖片描述
  理想中的啟用函式是階躍函式,它將輸入值對映為輸出值“0”或“1”,顯然“1”對應神經元興奮,“0”對應於神經元抑制。然而,階躍函式具有不連續、不光滑等不太好的性質,因此實際常用Sigmoid函式作為啟用函式。它把可能在較大範圍內變化的輸入值擠壓到(0,1)輸出值範圍內,因此有時也稱為“擠壓函式”。
這裡寫圖片描述
  將一個神經網路視為包含了很多引數的數學模型,這個模型是若干個函式,例如y

j=f(iωixiθj) 相互(巢狀)代入而得。
2、感知機與多層網路
  感知機由兩層神經元組成,輸入層接受外界輸入訊號後傳遞給輸出層,輸出層是M-P神經元,亦稱“閾值邏輯單元”。感知機能容易地實現邏輯與、或、非運算。
  更一般地,給定訓練資料集,權重ωi(i=1,2,...,n) 以及閾值θ 可通過學習得到。閾值θ 可看作一個固定輸入為-1.0的“啞結點”所對應的連線權重ωn+1 ,這樣,權重和閾值的學習就可統一為權重的學習。
  感知機只有輸出層神經元進行啟用函式處理,即只擁有一層功能神經元,其學習能力非常有限。事實上,上述與、或、非問題都是線性可分問題。可以證明,若兩類模式是線性可分的,即存在一個線性超平面能將它們分開,則感知機的學習過程一定會收斂而求得適當的權向量;否則感知機學習過程會發生振盪,ω
難以穩定下來,不能求得合適解。
這裡寫圖片描述
  要解決非線性可分問題,需考慮使用多層功能神經元。輸出層與輸入層之間的一層神經元,被稱為隱層或隱含層,隱含層和輸出層神經元都是擁有啟用函式的功能神經元。
  常見的神經網路,每層神經元與下一層神經元全互連,神經元之間不存在同層連線,也不存在跨層連線。這樣的神經網路結構通常稱為“多層前饋神經網路”,其中輸入層神經網路接收外界輸入,隱層與輸出層神經元對訊號進行加工,最終結果由輸出層神經元輸出。神經網路的學習過程,就是根據訓練資料來調整神經元之間的“連線權”以及每個功能神經元的閾值。
這裡寫圖片描述
3、誤差逆傳播演算法
  誤差逆傳播(BP)演算法是訓練多層網路學習演算法最傑出的代表。BP演算法不僅可用於多層前饋神經網路,還可用於其他型別的神經網路。
  給定訓練集,輸入示例由d
個屬性描述,輸出l 維實值向量。圖5.7給出了一個擁有d 個輸入神經元、l 個輸出神經元、q 個隱層神經元的多層前饋網路結構。
這裡寫圖片描述
  BP演算法基於梯度下降策略,以目標的負梯度方向對引數進行調整。學習率η=(0,1) 控制著演算法每一輪迭代中的更新步長,若太大則容易震盪,太小則收斂速度又會過慢。
  對於每個訓練樣例,BP演算法執行以下操作:先將輸入示例提供給輸入層神經元,然後逐層將訊號前傳,知道產生輸出層的結果;然後計算輸出層的誤差,再將誤差逆向傳播至隱層神經元,最後根據隱層神經元的誤差來對連線權和閾值進行調整。該迭代過程迴圈進行,直到達到某些停止條件為止,例如訓練誤差已達到一個很小的值。
這裡寫圖片描述
  但上面介紹的“標準BP演算法”每次僅針對一個訓練樣例更新連線權和閾值,也就是說,圖5.8中演算法的更新規則是基於單個的Ek 推導而成。如果類似地推匯出基於累計誤差最小化的更新規則,就得到了累積誤差逆傳播演算法。一般來說,標準BP演算法每次更新只針對單個樣例,引數更新得非常頻繁,而且對不同樣例進行更新的效果可能出現“抵消”現象。因此,為了達到同樣的累積誤差極小點,標準BP演算法往往需進行更多次數的迭代。累積BP演算法直接針對累積誤差最小化,它在讀取整個訓練集D一遍後才對引數進行更新,其引數更新的頻率低得多。但在很多工中,累計誤差下降到一定程度之後,進一步下降會非常緩慢,這時標準BP往往會更快獲得更好的解,尤其是在訓練集D非常大時更明顯。
  有兩種策略BP常用來緩解BP網路的過擬合。第一種策略是“早停”:將資料分為訓練集和驗證集,訓練集用來計算梯度、更新連線權和驗證集,訓練集用來計算梯度、更新連線權和閾值,驗證集用來估計誤差,若訓練集誤差降低但驗證集誤差升高,則停止訓練,同時返回具有最小驗證集誤差的連線權和閾值。第二種策略是“正則化”,其基本思想是在誤差目標函式中增加一個用於描述網路複雜度的部分,例如連線權與閾值的平方和。
4、全域性最小與區域性極小
  區域性最小解是引數空間中的某個點,某領域點的誤差函式值均不小於該點的函式值;全域性最小值則是指引數空間中所有點的誤差函式均不小於該點的誤差函式值。
  基於梯度的搜尋是使用最為廣泛的引數尋優方法。在此類方法中,我們從某些初始解出發,迭代尋找最優引數值。每次迭代中,我們先計算誤差函式在當前點的梯度,然後根據梯度確定搜尋方向。若誤差函式在當前點的梯度為零,則已達到區域性極小,更新量將為零,這意味著引數的迭代更新將在此停止。
這裡寫圖片描述
  可採用以下策略來試圖“跳出”區域性極小,從而進一步接近全劇最小:

  • 以多組不同引數值初始化多個神經網路,按標準方法訓練後,取其中誤差最小的解作為最終引數。
  • 使用“模擬退火”技術。模擬退火在每一步都以一定的概率接受比當前解更差的結果,從而有助於“跳出”區域性極小。
  • 使用隨機梯度下降,在計算梯度時加入了隨機因素。
    此外,遺傳演算法也常用來訓練神經網路以更好地逼近全域性最小。

5、其他常見神經網路
5.1 RBF網路
  RBF網路是一種單隱層前饋神經網路,它使用徑向基函式作為隱層神經元啟用函式,而輸出層則是對隱層神經元輸出的線性組合。徑向基函式,是某種沿徑向對稱的標量函式,通常定義為樣本到資料中心之間歐氏距離的單調函式。具有足夠多隱層神經元的RBF網路能以任意精度逼近任意連續函式。
5.2 ART網路
  競爭型學習是神經網路中一種常用的無監督學習策略,在使用該策略時,網路的輸出網路元相互競爭,每個時刻僅有一個競爭獲取的神經元被啟用,其他神經元的狀態被抑制。這種機制亦稱“勝者通吃”原則。
  ART網路是競爭型學習的重要代表。該網路由比較層、識別層、識別閾值和重置模組構成。其中,比較層負責接收輸入樣本,並將其傳遞給識別層神經元。識別層每個神經元對應一個模式類,神經元數目可在訓練過程中動態增長以增加新的模式類。
  在接收到比較層的輸入訊號後,識別層神經元之間相互競爭以產生獲勝神經元。競爭的最簡單方式是,計算輸入向量與每個識別層神經元所對應的模式類的代表向量之間的距離,距離最小者勝。獲勝神經元將向其他識別層神經元傳送訊號,抑制其啟用。若輸入向量與獲勝神經元所對應的代表向量之間的相似度大於識別閾值,則當前輸入樣本將被歸為該代表向量所屬類別;若相似度不大於識別閾值,則重置模組將在識別層增設一個新的神經元,其代表向量就設定為當前輸入向量。
5.3 SOM網路
  SOM(自組織對映)網路是一種競爭學習型的無監督神經網路,它能將高維輸入資料對映到低維空間,同時保持輸入資料在高維空間的拓撲結構,即將高維空間中相似的樣本點對映到網路輸出層的鄰近神經元。
  SOM的訓練目標就是為每個輸出層神經元找到合適的權向量,以達到保持拓撲結構的目的。SOM的訓練過程:在接收到一個訓練樣本後,每個輸出層神經元會計算該樣本與自身攜帶的權向量之間的距離,距離最近的神經元成為競爭獲勝者,稱為最佳匹配單元。然後,最佳匹配單元及其臨近神經元的權向量將被調整,以使得這些權向量與當前輸入樣本的距離縮小。
5.4 級聯相關網路
  結構自適應網路將網路結構也當作學習的目標之一,並希望能在訓練過程中找到最符合資料特點的網路結構。級聯相關網路是結構自適應網路的重要代表。
  級聯相關網路有兩個主要成分:“級聯”和“相關”。級聯是指建立層次連線的層級結構。在開始訓練時,網路只有輸入層和輸出層,處於最小拓撲結構;隨著訓練的進行,新的隱層神經元逐漸加入,從而建立起層級結構。當新的隱層神經元加入時,其輸入端連線權值實凍結固定的。相關是指通過最大化新神經元的輸出與網路誤差之間的相關性來訓練相關的引數。
5.5 Elman網路
  遞迴神經網路允許網路中出現環形結構,從而可讓一些神經元的輸出反饋回來作為輸入訊號。這樣的結構與資訊反饋過程,使得網路在t時刻的輸出狀態不僅與t時刻的輸入有關,還與t-1時刻的網路狀態有關,從而能處理與時間有關的動態變化。Elman網路是最常用的遞迴網路之一。
5.6 Bolyzmann機
  神經網路中有一類模型是為網路狀態定義一個“能量”,能量最小化時網路達到理想狀態,而網路的訓練就是在最小化這個能量函式。Bolyzmann機就是一種“基於能量的模型”。
6、深度學習
  經典的深度學習模型就是很深層的神經網路。多隱層神經網路難以直接用經典演算法進行訓練,因為誤差在多隱層內逆傳播時,往往會“發散”而不能收斂到穩定狀態。
  無監督逐層訓練是多隱層網路訓練的有效手段,其基本思想是每次訓練一層隱結點,訓練時將上一層隱結點的輸出作為輸入,而本層隱結點的輸出作為下一層隱結點的輸入,這稱為“預訓練”;在預訓練全部完成後,再對整個網路進行“微調”訓練。
  “預訓練+微調”的做法可視為將大量引數分組,對每組先找到區域性看來比較好的設定,然後再基於這些區域性較優的結果聯合起來進行全域性尋優。另一種節省訓練開銷的策略是“權共享”,即讓一組神經元使用相同的連線權。這個策略在卷積神經網路(CNN)中發揮了重要作用。
  以CNN進行手寫數字識別任務為例所示,網路輸入是一個32*32的手寫數字影象,輸出是其識別結果,CNN複合多個“卷積層”和“取樣層”對輸入訊號進行加工,然後在連線層實現與輸出目標之間的對映。每個卷積層都包含多個特徵對映,每個特徵對映是一個由多個神經元構成的“平面”,通過一種卷積濾波器提取輸入的一種特徵。取樣層亦稱為“匯合”層,其作用是基於區域性相關性原理進行亞取樣,從而在減少資料量的同時保留有用資訊。CNN可用BP演算法進行訓練,但在訓練中,無論是卷積層還是取樣層,其每一組神經元都是用相同的連線權,從而大幅減少了需要訓練的引數數目。
  通過多層處理,逐漸將初始的“低層”特徵表示轉化為“高層”特徵表示後,用“簡單模型”即可完成複雜的分類等學習任務。由此可將深度學習理解為進行“特徵學習”或“表示學習”。