1. 程式人生 > >機器學習(西瓜書)學習筆記(四)---------神經網路

機器學習(西瓜書)學習筆記(四)---------神經網路

1. 神經元模型

神經網路/人工神經網路:由具有適應性的簡單單元組成的廣泛並行互連的網路。

神經網路學習:機器學習和神經網路兩個學科交叉的部分。

Neural Networks中的基本單元:神經元。

從電腦科學的角度,NN就是一個包含了大量引數的數學模型,該模型由若干個函式相互代入而成。

2. 感知機與多層網路

感知機,實際由兩層神經元組成。輸入層和輸出層。

更一般的,神經網路是形如下方的層級結構,每層神經元與下一層神經元全互連,神經元之間不存在同層連線,也不存在跨層連線。稱為“多層前饋神經網路”(Multi-layer feedforward NN)。

“前饋”並不是說網路中訊號不能向後傳,而是說網路拓撲結構上不存在環或者回路。

神經網路學到的東西,蘊含在權重中。

3. 誤差逆傳播/反向傳播演算法

Error BackPropagation,BP,誤差逆傳播/反向傳播。

BP演算法基於梯度下降法,以目標的負梯度對引數調整。

鏈式法則:前向計算時,值一層層傳遞;反向計算梯度時,梯度一層層迴流。

標準BP演算法,每次僅針對一個樣例更新權重,引數更新非常頻繁,不同樣例更新效果可能會出現抵消的效果。

累計BP演算法,針對累計誤差最小化,讀取整個訓練集一遍後才對引數更新。更新頻率較低。很多工中,累計誤差下降到一定程度則不再動,這時標準BP往往更快獲得最優解。

標準BP和累積BP的區別:類似於隨機梯度下降(SGD)和標準梯度下降的區別。

Hornik,1989證明:只需一個包含足夠多神經元的隱層,多層前饋NN就能以任意精度逼近任意複雜的連續函式。

由於BP強大的表達能力,BP經常過擬合。兩種策略:

早停:資料集分為訓練集和驗證集。若訓練誤差降低而驗證集誤差升高,停止訓練。
正則化:在誤差目標函式中增加一個描述網路複雜度的部分,如權重的平方和。
增加正則項,訓練過程比較偏好比較小的連線權重,使得網路輸出更加“光滑”,對過擬合有所緩解。如下圖M=9,非常擬合訓練集,但泛化能力沒有M=3好,M=3更平滑,“認的不真”,所以有容乃大,乃泛化。

4. 全域性最小和區域性極小

NN的訓練過程:在引數空間中尋找一組最優引數,使得E最小。

引數空間中梯度為0的點,是我們關注的。基於梯度的搜尋,是最為廣泛的引數尋優方法。每次迭代,先計算損失函式在當前點的梯度,根據負梯度方向是下降最快的方向,沿著此方向搜尋最優解。

有時陷入了局部極小值,如何跳出?

用多組不同引數值來初始化多個NN,按標準方法訓練後,取誤差最小的值為最終引數。此相當於從多個點開始搜尋,派出幾路人馬,更可能找到全域性最小的。
使用模擬退火(simulated annealing)。該方法在每一步都以一定的概率,接受比當前解更差的結果,有助於跳出區域性極小。每步迭代中,接受“次優解”的概率隨著時間推移而逐漸降低(退火),保證演算法穩定。
隨機梯度下降。與標準GD精確計算梯度不同,SGD計算時加入了隨機因素,有助於跳出區域性極小。
注:上述演算法均是啟發式,可能也會跳出全域性最小。

5. 其他常見神經網路

5.1 RBF網路(徑向基函式網路)

RBF,Radial basis function,徑向基函式。某種沿徑向對稱的標量函式。通常定義為樣本x到資料中心的歐式距離的單調函式。如高斯徑向基函式。

RBF網路,單隱層前饋NN,使用徑向基函式作為隱層神經元的啟用函式,輸出層是隱層神經元輸出的線性組合。

q個神經元,ci是第i個神經元對應的中心。p為徑向基函式。學習分兩步:一是確定神經元中心,可用聚類等;二是利用BP演算法確定引數。

5.2 ART網路

競爭型學習,是NN中一種無監督學習策略。使用該策略時,網路的輸出神經元相互競爭,每一時刻僅有一個競爭獲勝的神經元被啟用。其他神經元的狀態被抑制,即“勝者通吃”。

ART(adaptive resonance theory,自適應諧振)網路,是競爭型學習的代表。

該網路組成:

比較層:負責接收輸入樣本,將其傳遞給識別層
識別層:每個神經元對應一個模式類,訓練中可動態增加神經元數目來增加新的模式類。(即增量學習/線上學習)
識別閾值和重置模組
接收到比較層的輸入訊號後,識別層神經元相互競爭。可計算輸入向量與每個識別層神經元對應的模式類的代表向量的距離,距離最小者勝出。獲勝神經元向其他傳送訊號,抑制其啟用。

若輸入向量與獲勝神經元的代表向量的相似度大於識別閾值,則當前輸入樣本被劃歸為該代表向量所屬類別。網路連線權同時更新,使得後續接收到相似樣本時該模式類可計算出更大的相似度,有更大獲勝可能。

若相似度不大於識別閾值,則重置模組將在識別層增設一個新的神經元,其代表向量就設定為當前向量。

那麼,識別閾值較高,輸入樣本將會被傾向於較多類,閾值低則反之。

ART較好的緩解了競爭型學習中的“可塑性-穩定性窘境”:可塑性是說網路要有學習新知識的能力,穩定性是說網路學習新知識時要保持對舊知識的記憶。則ART的優點就是:可增量學習/線上學習。

增量學習是說學得模型後,再接收到新樣本後,僅需根據新樣例對模型更新,不必重新訓練整個模型,先前學得的不會被沖掉; 
線上學習說的是美獲得一個新樣本進行一次更新。線上學習是增量學習的特例,增量學習可看作是批量模式的線上學習。

5.3 SOM網路

self-organizating map,自組織對映網路

競爭學習型的無監督神經網路。將高維輸入資料對映到低維空間(通常為2維),同時需要保持輸入資料在高維空間的拓撲結構,將高維空間中相似的樣本點對映到網路輸出層的鄰近神經元。

輸出層的每個神經元有一個權向量,網路接收輸入層向量後,將會確定輸出層獲勝神經元,它決定了該輸入在低維空間的位置。SOM訓練目標是為每個輸出層神經元找到合適權向量,以達到保持拓撲結構的目的。

訓練過程:接收一個訓練樣本後,每個輸出層神經元會計算該樣本與自身攜帶的權向量之間的距離,距離最近的神經元成為競爭獲勝者,為最佳匹配單元。然後,最佳匹配神經元及其鄰近神經元的權向量將被調整,以使得這些權向量與當前輸入樣本的距離縮小。這個過程不斷迭代,直至收斂。

5.4 級聯相關網路

一般的NN假設網路結構是固定的,學習的過程是確定引數的過程。

而結構自適應網路,將網路結構也作為學習目標。級聯相關網路(Cascade-correlation)是其代表。

ART網路用於隱層神經元數目可增長,也是一種結構自適應型網路。

關鍵詞:

級聯:建立層次連線的層級結構,開始網路只有輸入輸出層。訓練時,隨著新的隱層神經元加入,建立起層級結構。
相關:加入新的隱層神經元,其輸入端連線權值是凍結固定的,相關是通過最大化新神經元的輸出與網路輸出之間的相關性而訓練引數。


與一般相比,無需設定網路層數等,訓練速度較快,但是資料較小時容易過擬合。

插:動態增加分支(決策樹),動態增加隱結點(級聯網路),這種都容易過擬合。因為不僅其引數,包括其結構都在適應訓練集,在這個意義上,更容易過擬合。

5.5 遞迴神經網路

recurrent NN,recursive NN均對。

與前饋NN不同,遞迴神經網路允許出現環形結構,可讓一些神經元的輸出反饋回來作為輸入。使得網路在t時刻的輸出不僅依賴於t時刻輸入,並且依賴於t-1時刻的網路狀態。從而能處理與時間有關的動態變化。

可以叫迴圈(不斷反饋),也可叫遞迴(t時刻依賴於t-1時刻)。

Elman網路是最常用的遞迴之一。結構如下圖:

5.6 玻爾茨曼機

神經網路中有一類模型:為網路狀態定義一個能量。能量最小化時達到理想狀態。而網路的訓練就是在最小化這個能量函式。

玻爾茨曼機,就是這樣一種基於能量的模型。常見結構如下:

神經元都是布林型的,非0即1。0狀態表示抑制,1狀態表示啟用。

若網路中的神經元以任意不依賴於輸入值的順序進行更新,則網路最終達到玻爾茨曼分佈/平衡態/平穩分佈:此時狀態向量出現的概率,僅由其能量與所有可能狀態向量的能量確定。

玻爾茨曼機的訓練過程:將每個訓練樣本視為一個狀態向量,使其出現的概率儘可能大。標準機是一個全連線圖,複雜度較高。常用受限的玻爾茨曼機(Restricted BM, RBM)。

6. 深度學習

理論上,引數越多,模型越複雜,容量越大,越意味著可完成更復雜的任務。

但一般,複雜模型的訓練效率低,易陷入過擬合。隨著雲端計算。大資料時代的到來,計算能力的大幅提高可緩解訓練低效性,訓練資料的大幅增加,可降低過擬合。

深度學習模型:很深層的神經網路。

提高容量的方法:

增加隱層的數目
增加隱層神經元的數目
增加隱層數目的方法顯然比增加隱層神經元的數目更有效:增加隱層數不僅增加了擁有啟用函式的神經元數目,還增加了啟用函式巢狀的層數。

多隱層NN難以用經典演算法求解:誤差在多隱層反響傳播時,往往會發散而不能收斂到穩定狀態。

無監督逐層訓練:多隱層訓練的有效手段。每次訓練一層隱結點,訓練時將上一層隱結點的輸出作為輸入,本層隱結點的輸出作為下一層的輸入,此稱為預訓練。預訓練全部完成後,再對整個網路進行微調訓練。

例如:深度信念網路(DBN),每層都是一個受限玻爾茨曼機。整個網路視為若干個RBM堆疊而成,首先預訓練,完成後再利用BP對整個網路進行訓練。

預訓練+微調的做法:可看作是將大量引數分組。對每組先找到區域性看起來比較好的設定,然後再基於這些區域性較優結果聯合全域性最優。

另一種節省訓練開銷的策略:權重共享。一組神經元使用相同的連線權。CNN中使用。

另一個角度看深度學習:

無論哪種網路,其多層堆疊,每層對上一層的輸出進行處理的機制,可看作是對輸入訊號不斷逐層加工,從而把初始的,與輸出目標不太相關的輸入表示,轉化為與輸出目標相關的表示。通過多層處理,逐漸將低層特徵表示轉化為高層特徵表示後,用簡單模型即可完成複雜的分類任務。

由此,可將深度學習理解為進行“特徵學習”,或者“表示學習”。

以往的機器學習任務中,描述特徵的樣本通常需要由人類專家設計,稱為“特徵工程”。特徵好壞對泛化效能有至關影響。人類設計好特徵並非易事,特徵學習則通過機器學習技術來產生好特徵。使得機器學習向“全自動資料分許”前進了一大步。

神經網路是一種難以解釋的黑箱模型。