Learn R | 機器學習中的人工神經網路(四)
一、B-P反向傳播網路概述
之前在上一文中,我們學習了感知機模型,它是一種前饋式的雙層神經網路,用於解決線性可分數據的分類與回歸問題。從這一文起,我們開始學習B-P反向傳播網路,這是一種前饋式的多層神經網路模型。
B-P(Back Propagation)反向傳播網路在感知機的基礎上,添加了一層或多層隱層,所以也可以將此模型稱為多層感知機(MultiLayer Perception MLP)。它有著以下三個顯著的特點:
- 包含隱層
- 反向傳播
- 激活函數採用函數
接下來,我們將分別從這三個方面對B-P神經網路展開深入學習。
二、隱層的作用
首先需要明確,隱層位於模型中的輸入層和輸出層之間,它主要的作用是用來實現非線性樣本的線性轉化(關於什麼是線性樣本和非線性樣本,之前已有所提及,這裡不再贅述)
在實際問題中,非線性樣本是普遍存在的,下圖的數據就是一個典型的二維非線性樣本。
如何解決這一類型數據的分類問題呢?其實基本思想在支持向量機的學習中就曾提到過——那就是將觀測點放置在更高維的空間中,使其轉化為線性樣本,然後再進行分類。
神經網路的解決方法也是將原空間的非線性樣本放置在一個新空間中來實現線性轉化,具體的途徑為:將多個感知機模型按層次結構連接起來,形成隱層,然後讓隱節點完成數據的線性轉化任務。
以上圖數據為例,設網路結構:兩個輸入節點;一個隱層,包含兩個隱節點;一個輸出節點以及三個偏差節點。激活函數採用階躍函數,連接權重如下圖所示:
以觀測點為例,有以下計算過程:- 隱節點:,激活值為1
- 隱節點:,激活值為0
- 輸出節點:,激活值為0
因此,觀測點經過隱節點的作用,最終節點的輸出為0,實現了正確分類。
根據上面的邏輯,隱節點和分別代表兩個超平面,經過若干次迭代後,特徵空間的變換如下圖所示:
首先,左側圖表示在和的特徵空間中,將樣本點劃分在3個區域內:
- 點和落在直線的中間區域,隱節點輸出均為
- 點落在直線的外側區域,隱節點輸出分別為和
於是,原特徵空間中的觀測點和合併為右側圖中的點,另外兩點轉換為和,直線將這兩類樣本進行分類:
- 和點最終分類結果為1
- 點最終分類結果為0
同理,多個隱節點和隱層可以實現更為複雜的非線性樣本的線性轉化。
三、反向傳播
反向傳播是B-P反向傳播網路的重要特點。在學習感知機模型時我們已經知道,輸入輸出節點之間連接權重的調整依據之一就是預測誤差。在沒有隱層時,由於輸出變數的實際值已知,因此預測誤差可以直接計算並利用連接權重調整。但這種方法在多層神經網路中就不適用了,因為模型中隱層的實際輸出是未知的,誤差沒法計算,所以輸入層與隱層之間的權重調整也就無從下手。針對這個問題,B-P反向傳播網路就需要引入一種新機制來實現權重調整,這就是我們所要學習的「反向傳播」。
反向傳播網路包含兩個階段,首先是「正向傳播」,它是指,樣本從輸入層開始,由上至下逐層經隱節點計算處理,上層節點的輸出就是下層節點的輸入,最終樣本信息被傳送到輸出層節點,得到預測的結果。並且在整個傳播期間,所有的連接權重均保持不變。
在預測誤差計算出後就進入反向傳播階段,雖然B-P反向傳播網路無法直接計算隱節點的預測誤差,但卻可以利用輸出節點的預測誤差來逐層估計隱節點的誤差,也就是將輸出節點的預測誤差反方向傳播到上層隱節點,逐層調整連接權重,直至輸入節點和隱節點的權重全部得到調整,使得網路輸出值越來越逼近實際值。B-P反向傳播網路正得名於此。
四、sigmoid激活函數的運用
在B-P反向傳播網路中,激活函數選用了型函數,節點的輸出被限制在0~1的範圍內。對於分類問題,輸出節點給出的是預測類別的概率值;對於回歸問題,輸出節點給出的標準化處理後的預測值,只需還原處理即可。
為什麼要使用激活函數呢?這是因為:
- 在模型開始訓練階段,由於連接權重的設置要求滿足均值為0的均勻分布,所以初期的連接權重在0值附近,使得加法器結果也在0附近。此時函數的斜率近似為一個常數,輸入輸出間呈近似線性關係,模型較為簡單;
- 隨著模型訓練的進行,網路權重不斷調整,節點加法器的結果逐漸偏離0值,輸入輸出逐漸呈現出非線性關係,模型逐漸複雜起來,並且輸入的變化對輸出的影響程度逐漸減小
- 到模型訓練的後期,節點加法器結果遠離0,此時輸入的變化將不再引起輸出的明顯變動,輸出基本趨於穩定。神經網路的預測誤差不再隨著連接權重的調整而得到明顯改善,預測結果穩定,模型訓練結束。
可見,激活函數較好的體現了連接權重修正過程中,模型從近似線性到非線性的漸進轉變過程。
除此之外,激活函數還具有無限次可微的特點,這使得B-P反向傳播網路能夠採用梯度下降法來挑戰連接權重。
B-P反向傳播網路主要內容和基本特點就介紹到這裡,在下一文中,我們將學習演算法中的連接權重推導與學習率調整。
未完待續
References:
- 機器學習 (豆瓣)
- R語言數據挖掘(豆瓣)
- 零基礎入門深度學習 - 神經網路和反向傳播演算法
- 神經網路淺講:從神經元到深度學習
推薦閱讀:
※神經網路普遍性的直觀解釋
※Python · NN(一) · 神經網路入門
※神經網路的學習 / 訓練過程
※第四周筆記:神經網路是什麼
※卷積神經網路(CNN)的參數優化方法