3.1.1.3 神經網絡

神經網絡

原理

《機器學習》周志華

5.1 神經元模型
  • 神經網絡中最0基本的成分是神經元(neuron)模型。
  • M-P神經元模型:神經元接收到來自n個其他神經元傳遞過來的輸入信號,這些輸入信號通過帶權重的連接(connection)進行傳遞,神經元接收到的總輸入值將與神經元的閾值進行比較,然后通過“激活函數”(activation function)處理以產生神經元的輸出。
  • Sigmoid函數常作為激活函數。Sigmoid函數把可能在較大范圍內變化的輸入值擠壓到(0, 1)輸出范圍內,因此有時也稱為“擠壓函數”(squashing function)。
5.2 感知機與多層網絡
  • 感知機(Perceptron)由兩層神經元組成,輸入層接收外界輸入信號后傳遞給輸出層,輸出層是M-P神經元,亦稱“閾值邏輯單元”(threshold logic unit)。感知機能容易地實現邏輯與,或,非運算。
  • 更一般地,給定訓練集,權重wi (i=1,2,...,n) 以及閾值 θ 可以通過學習得到。閾值 θ 可看作一個固定輸入為-1.0的“啞結點”( dummy node) 所對應的連接權重 wn+1,這樣,權重和閾值的學習就可以統一為權重的學習。
  • 感知機只有輸出層神經元進行激活函數處理,即只擁有一層功能神經元(functional neuron),其學習能力非常有限。事實上,上述與、或、非問題都是線性可分(lineary separable)的問題。可以證明,落兩類模式是線性可分的,即存在一個線性超平面能將它們分開,則感知機的學習過程一定會收斂(converge)而求得適當的權向量 w = (w1, w2, ... , wn);否則感知機學習過程將會發生振蕩(fluctuation),w難以穩定下來,不能求得合適解,例如感知機不能解決異或這樣簡單的非線性可分問題。
  • 要解決非線性可分問題,需考慮使用多層功能神經元,簡單的兩層感知機就能解決異或問題。
  • 輸入層與輸出層之間的一層神經元,被稱為隱層或隱含層(hidden layer)。隱含層和輸出層都是擁有激活函數的功能神經元。
  • 每層神經元與下一層神經元完全互連,神經元之間不存在同層連接,也不存在跨層連接,這樣的神經網絡結構通常稱為“多層前饋神經網絡”(multi-layer feed forward neural networks),其中輸入層神經元接收外界輸入,隱層與輸出層神經元對信號進行加工,最終結果由輸出層神經元輸出。
  • 神經網絡的學習過程,就是根據訓練數據來調整神經元之間的“連接權”(connection weight) 以及每個功能神經元的閾值;換言之,神經網絡“學”到的東西,蘊涵在連接權與閾值中。
5.3 誤差逆傳播算法
  • 多層網絡的學習能力比單層感知機強得多。欲訓練多層網絡,簡單感知機學習規則是顯然不夠了,需要更強大的學習算法,誤差逆傳播(error BackPropagation, BP)算法就是其中最杰出的代表,它是迄今為止最成功的神經網絡學習算法。現實任務中使用神經網絡時,大多是在使用BP算法進行訓練。值得指出的是,BP算法不僅可用于多層前饋神經網絡,還可用于其他類型的神經網絡,例如訓練遞歸神經網絡。但通常說“BP網絡”時,一般是指用BP算法訓練的多層前饋神經網絡。
  • BP是一個迭代學習算法,在迭代的每一輪中采用廣義的感知機學習規則對參數進行更新估計,任意參數v的更新估計式為 v <- v + △v
  • BP算法基于梯度下降(guadient descent)策略,以目標的負梯度方向對參數進行調整。
  • 學習率 η ∈ (0, 1) 控制著算法每一輪迭代中的更新步長,若太大則容易振蕩,太小則收斂速度又會過慢。有時為了做精細調整,不同層之間的學習率不同。
  • 需要注意的是,BP算法的目標是要最小化訓練集D上的累積誤差。但我們上面介紹的“標準BP算法”每次僅針對一個訓練樣例更新連接權和閾值,也就是說,更新規則是基于單個的Ek推導而得。如果類似地推導出基于累積誤差最小化的更新規則,就得到了累積誤差逆傳播(accumulated error backpropagation)算法。累積BP算法與標準BP算法都很常用。 一般來說,標準BP算法每次更新只針對單個樣例,參數更新得非常頻繁,而對不同樣例進行更新的效果可能出現“抵消”現象。因此為了達到同樣的累積誤差極小點,標準BP算法往往需要進行更多次數的迭代。累積BP算法直接針對累積誤差最小化,它在讀取整個訓練集D一遍后才對參數進行更新,其參數更新的頻率低得多。但在很多任務中,累積誤差下降到一定程度之后,進一步下降會非常緩慢,這時標準BP往往會更快地獲得較好的解,尤其是在訓練集D非常大時更明顯。
  • Hornik et al., (1989) 證明,只需要一個包含足夠多神經元的隱層,多層前饋網絡就能以任意精度逼近任意復雜度的連續函數。然而,如何設置隱層神經元的個數仍是個未決問題,實際應用中通常靠“試錯法”(trial-by-error)調整。
  • 正是由于其強大的表示能力,BP神經網絡經常遭遇過擬合,其訓練誤差持續降低,但測試誤差卻可能上升。有兩種策略常用來緩解BP網絡的過擬合。
    • 第一種策略是“早停”(early stopping):將數據分為訓練集和驗證集,訓練集用來計算梯度,更新連接權和閾值,驗證集用來估計誤差,若訓練集誤差降低但驗證集誤差升高,則停止訓練,同時返回具有最小驗證集誤差的連接權和閾值。
    • 第二種策略是“正則化”(regularization)。其基本思想是在誤差目標函數中增加一個用于描述復雜度的部分,例如連接權與閾值的平方和。增加連接權與閾值的平方和這一項后,訓練過程將會偏好比較小的連接權和閾值,使網絡輸出更為“光滑”,從而對過擬合有所緩解。
5.4 全局最小與局部最小
  • 基于梯度的搜索是使用最為廣泛的參數尋優方法。在此類方法中,我們從某些初始解出發,迭代尋找最優參數值。每次迭代中,我們先計算誤差函數在當前點的梯度,然后根據梯度確定搜索方向。例如,由于負梯度方向是函數值下降最快的方向,因此梯度下降法就是沿著負梯度方向搜索最優解。若誤差函數在當前點的梯度為零,則已達到局部極小,更新量將為零,這意味著參數的迭代更新將在此停止。顯然,如果誤差函數僅有一個局部極小,那么此時找到的局部極小就是全局最小;然而如果誤差函數具有多個局部極小,則不能保證找到的解是全局最小,對于后一種情形,我們稱參數尋優陷入了局部極小,這顯然不是我們所希望的。

  • 在現實任務中,人們常采用以下策略試圖“跳出”局部極小,從而進一步接近全局最小:

    • 以多組不同參數初始化多個神經網絡,按標準方法訓練后,取其中誤差最小的解作為最終參數。這相當于從多個不同的初始點開始搜索,這樣就可能陷入不同的局部最小。從中進行選擇有可能獲得更接近全局最小的結果。
    • 使用“模擬退火”(simulated annealing)技術,模擬退火在每一步都以一定的概率接受比當前更差的結果,從而有助于“跳出”局部極小。在每步迭代過程中,接受“次優解”的概率要隨著時間的推移而逐漸降低,從而保證算法穩定。
    • 使用隨機梯度下降,與標準梯度下降法精確計算梯度不同。隨機梯度下降法在計算梯度時加入了隨機因素。于是,即便陷入局部極小點,它計算出的梯度仍可能不為零,這樣就有機會跳出局部極小繼續搜索。
    • 此外,遺傳算法(genetic algorithms)[Goldberg, 1989] 也常用來訓練神經網絡以更好地逼近全局最小,需注意的是,上述用于跳出局部極小的技術大多是啟發式,理論上缺乏保障。
5.5 其他常見神經網絡
5.5.1 RBF網絡
  • RBF(Radial Basis Function, 徑向基函數) 網絡 (Broomhead and Lowe, 1988) 是一種單隱層前饋神經網絡,它使用徑向基函數作為隱層神經元激活函數,而輸出層則是對隱層神經元輸出的線性組合。
  • 通常采用兩步過程來訓練RBF網絡:第一步,確定神經元中心 ci,常用的方式包括隨機采用,聚類等; 第二步,利用BP算法來確定參數 wi 和 βi。
5.5.2 ART網絡
  • 競爭型學習(competitive learning) 是神經網絡中一種常用的無監督學習策略,在使用該策略時,網絡的輸出神經元相互競爭,每一時刻僅有一個競爭獲勝的神經元被激活,其他神經元的狀態被抑制,這種抑制亦稱“勝者通吃”(winner-take-all)原則。
  • ART(Adaptive Resonance Theory, 自適應諧振理論)網絡 (Carpenter and Grossberg, 1987) 是競爭型學習的重要代表。該網絡由比較層、識別層、識別閾值和重置模塊構成。其中,比較層負責接收輸入樣本,并將其傳遞給識別層神經元。識別層每個神經元對應一個模式類,神經元數目可在訓練過程中動態增長以增加新的模式類。
  • 在接收到比較層的輸入信號后,識別層神經元之間的相互競爭以產生獲勝神經元。競爭最簡單方式是,計算輸入向量與每個識別神經元所對應的模式類的代表向量之間的距離,距離最小者獲勝。獲勝神經元向其他識別層神經元發出傳送信號,抑制其激活。若輸入向量與獲勝神經元所對應的代表向量之間的相似度大于識別閾值,則當前輸入樣本將被歸為該代表向量所屬類別,同時,網絡連接權將會更新,使得以后再接收到相似輸入樣本時,該模式類會計算出更大的相似度,從而使該獲勝神經元有更大可能獲勝;若相似度不大于識別閾值,則重置模塊將在識別層增設一個新的神經元,其代表向量就設置為當前輸入向量。
  • 顯然,識別閾值對ART網絡的性能有重要影響。當識別閾值較高時,輸入樣本將會被分成比較多,比較精細的模式類,而如果識別閾值較低,則會產生比較少,比較粗略的模式類。
  • ART比較好地緩解了競爭學習中的“可塑性-穩定性窘境”(stability-plasticity dilemma)。可塑性是指神經網絡要有學習新知識的能力,而穩定性則是指神經網絡在學習新知識時要保持對舊知識的記憶。這就使得ART網絡具有一個很重要的優點:可進行增量學習(incremental learning)或在線學習(online learning)。增量學習是指在學得模型后,再接收到訓練樣例時,僅需根據新樣例對模型進行更新,不必重新訓練整個模型,并且先前學得的有效信息不會被“沖掉”。在線學習是指每獲得一個新樣本就進行一次模型更新。顯然,在線學習是增量學習的特例,而增量學習可視為“批模式”(batch-mode)的在線學習。
5.5.3 SOM網絡
  • SOM(Self-Organizaing Map, 自組織映射)網絡 (Kohonen, 1982) 是一種競爭學習型的無監督神經網絡,它能將高維輸入數據映射到低維空間(通常為二維),同時保持輸入數據在高維空間的拓撲結構,即將高維空間中相似的樣本點映射到網絡輸出層中的臨近神經元。
  • SOM網絡中的輸出層神經元以矩陣方式排列在二維空間中,每個神經元都擁有一個權向量,網絡在接收輸入向量后,將會確定輸出層獲勝神經元,它決定了該輸入向量在低維空間中的位置。SOM的訓練目標就是為每個輸入層神經元找到合適的權向量,以達到保持拓撲結構的目的。
  • SOM的訓練過程很簡單:在接收到一個訓練樣本后,每個輸出層神經元會計算該樣本與自身攜帶的權向量之間的距離,距離最近的神經元成為競爭獲勝者,稱為最佳匹配單元(best matching unit)。然后,最佳匹配單元及其鄰近神經元的權向量將被調整,以使得這些權向量與當前輸入樣本的距離最小,這個過程不斷迭代,直至收斂。
5.5.4 級聯相關網絡
  • 一般的神經網絡模型通常假設網絡結構是事先固定的,訓練的目的是利用訓練樣本來確定合適的連接權、閾值等參數。與此同時,結構自適應網絡則將網絡結構也當做學習的目標之一,并希望能在訓練過程中找到最符合數據特點的網絡結構,級聯相關(Cascade-Correlation)網絡 (Fahlman and Lebiere, 1990) 是結構自適應網絡的重要代表。結構自適應網絡亦稱“構造性”(constructive)神經網絡。
  • 級聯相關網絡有兩個主要成分:“級聯”和“相關”。級聯是指建立層次連接的層級結構。在開始訓練時,網絡只有輸入層和輸出層,處于最小拓撲結構;隨著訓練的進行,新的隱層神經元逐漸加入,從而創建起層級結構。當新的隱層神經元加入時,其輸入端連接權值是凍結固定的。相關是指通過最大化新神經元的輸出與網絡之間的相關性(correlation)來訓練相關的參數。
  • 與一般的前饋神經網絡相比,級聯相關網絡無需設置網絡成熟,隱層神經元數目,且訓練速度較快,但其在數據較小時易陷入過擬合。
5.5.5 Elman網絡(RNN)
  • 與前饋神經網絡不通,“遞歸神經網絡”(recurrent neural networks)允許網絡中出現環形結構,從而可讓一些神經元的輸出反饋回來作為輸入信號。這樣的結構與信息反饋過程,使得網絡在 t 時刻的輸出狀態,不僅與 t 時刻的輸入有關,還與 t-1 時刻的網絡狀態有關,從而能處理與時間有關的動態變化。
  • Elman網絡 (Dlman, 1990) 是最常用的遞歸神經網絡之一。它的結構與多層前饋網絡很相似,但隱層神經元的輸出被反饋回來,與下一時刻輸入層神經元提供的信號一起作為隱層神經元在下一時刻的輸入。隱層神經元通常采用Sigmoid激活函數,而網絡的訓練則通過推廣BP算法進行。
5.5.6 Boltzmann機
  • 神經網絡中有一類模型是為網絡狀態定義一個“能量”(energy),能量最小化時網絡達到理想狀態,而網絡的訓練就是在最小化這個能量函數。Boltzmann機就是一種“基于能量的模型”(energy-based model),其神經元分為兩層,顯層和隱層。顯層用于展示數據的輸入與輸出,隱層則被理解為數據的內在表達。
5.6 深度學習
  • 典型的深度學習模型就是很深層的神經網絡。然而,多隱層神經網絡難以直接用經典算法(例如BP算法)進行訓練,因為誤差在多隱層內逆傳播時,往往會“發散”(diverge)而不能收斂到穩定狀態。
    • 無監督逐層學習訓練(unsupervised layer-wise training)是多隱層網絡訓練的有效手段,其基本思想是每次訓練一層隱結點。訓練時將上一層隱結點的輸出作為輸入,而本層隱結點的輸出作為下一層隱結點的輸入,這稱為“預訓練”(pre-training);在預訓練全部完成后,再對整個網絡進行“微調”(fine-tuning)訓練。事實上,“預訓練+微調”的做法可視為將大量參數分組,對每組先找到局部看來比較好的設置,然后再基于這些局部較優的結果聯合起來進行全局尋優。這樣就在利用了模型大量參數所提供的自由度的同時,有效地節省了訓練開銷。
    • 另一種節省訓練開銷的策略是“權共享”(weight sharing),即讓一組神經元使用相同的連接權。這個策略在卷積神經網絡(Convolutional Neural Network, CNN)中發揮了重要的作用。
  • 我們可以通過另一個角度來理解深度學習。無論是DBN(深度信念網絡)還是CNN,其多隱層堆疊,每層對上一層的輸出進行處理的機制,可看作是在對輸入信號進行逐層加工,從而把初始的、與輸出目標之間聯系不太密切的輸入表示,轉化成與輸出目標聯系更密切的表示,使得原來僅基于最后一層輸出映射難以完成的任務成為可能。換言之,通過多層處理,逐漸將初始的“低層”特征表示轉化為“高層”特征表示后,用“簡單模型”即可完成復雜的分類等學習任務。由此,可將深度學習理解為進行“特征學習”(feature learning)或“表示學習”(representation learning)。
  • 以往的機器學習用于現實任務時,描述樣本的特征通常需要由人類專家來設計,這稱為“特征工程”(feature engineering)。眾所周知,特征的好壞對泛化性能有至關重要的影響,人類專家設計出好特征也并非易事;特征學習則通過機器學習技術自身來產生好特征,這使機器學習向“全自動數據分析”又前進了一步。

Hello World

學術

工程

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