機器學習筆記(參考吳恩達機器學習視訊筆記)08_神經網路的學習
8 神經網路的學習
8.1 神經網路的代價函式
神經網路的訓練樣本有m個,每個包含一組輸入x和一組輸出訊號y,L表示神經網路層數,表示每層的neuron個數(表示輸出層神經元個數),代表最後一層中處理單元的個數。
將神經網路的分類定義為兩種情況:二類分類和多類分類。
二類分類:=0,y=0 or 1表示哪一類;
K類分類:=k,=1表示分到第i類;(k>2)
在邏輯迴歸中,只有一個輸出變數,又稱標量( scalar),也只有一個因變數y。代價函式如下:
但是在神經網路中,可以有很多輸出變數,是一個維度為K的向量,並且訓練集中的因變數也是同樣維度的一個向量,因此神經網路的代價函式比邏輯迴歸更加複雜,具體表達式如下:
對於每一行特徵,都會有K個預測,利用迴圈,對每一行特徵都預測K個不同結果,然後再利用迴圈在K個預測中選擇可能性最高的一個,將其與y中的實際資料進行比較。正則化的那一項是排除了每一層後,每一層的矩陣的和。最裡層的迴圈迴圈所有的行(由+1層的啟用單元數決定);迴圈i則迴圈所有的列,由該層(層)的啟用單元數決定。即:與真實值之間的距離為每個樣本-每個類輸出的加和,對引數進行正則化的bias項處理所有引數的平方和。
8.2 反向傳播演算法
為了計算代價函式的偏導數,採用一種反向傳播演算法。首先計算最後一層的誤差,然後再一層一層反向求出各層的誤差,直到倒數第二層。以一個例子加以說明:
假設只有一個例項(,),神經網路是一個四層的神經網路,其中K=4,=4,L=4。前向傳播演算法如下:
從最後一層誤差開始計算,誤差是啟用單元的預測()與實際值()之間的誤差(k = 1:k),用來表示誤差,則:
其中,,是權重導致的誤差的和,同理可得。第一層不存在誤差,假設,即不做任何正則化處理時,代價函式的偏導數表示為:
代表目前所計算的是第幾層。代表目前計算層中的啟用單元的下標,也將是下一層的第個輸入變數的下標。代表下一層中誤差單元的下標,是受到權重矩陣中第行影響的下一層中的誤差單元的下標。為整個訓練集計算誤差單元,此時的誤差單元也是一個矩陣,用
for i=l:m{
set
perform forward propagation to compute for
Using
perform back propagation to compute all previous layer error vector
}
首先用正向傳播方法計算出每一層的啟用單元,利用訓練集的結果與神經網路預測的結果求出最後一層的誤差,然後利用該誤差運用反向傳播法計算出直至第二層的所有誤差。則代價函式的偏導數的計算方法如下:
使用神經網路的步驟:
-
引數的隨機初始化
-
利用正向傳播方法計算所有的
-
編寫計算代價函式J的程式碼
-
利用反向傳播方法計算所有的偏導數
-
利用數值檢驗方法檢驗這些偏導數
-
使用優化演算法來最小化代價函式