1. 程式人生 > >機器學習筆記(參考吳恩達機器學習視訊筆記)08_神經網路的學習

機器學習筆記(參考吳恩達機器學習視訊筆記)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

}

首先用正向傳播方法計算出每一層的啟用單元,利用訓練集的結果與神經網路預測的結果求出最後一層的誤差,然後利用該誤差運用反向傳播法計算出直至第二層的所有誤差。則代價函式的偏導數的計算方法如下:

使用神經網路的步驟:

  1. 引數的隨機初始化

  2. 利用正向傳播方法計算所有的

  3. 編寫計算代價函式J的程式碼

  4. 利用反向傳播方法計算所有的偏導數

  5. 利用數值檢驗方法檢驗這些偏導數

  6. 使用優化演算法來最小化代價函式