初識機器學習——吳恩達《Machine Learning》學習筆記(九)

神經網絡參數的反向傳播算法

  反向傳播(英語:Backpropagation,縮寫爲BP)是「偏差反向傳播」的簡稱,是一種與最優化方法(如梯度降低法)結合使用的,用來訓練人工神經網絡的常見方法。該方法對網絡中全部權重計算損失函數的梯度。這個梯度會反饋給最優化方法,用來更新權值以最小化損失函數。反向傳播要求有對每一個輸入值想獲得的已知輸出,來計算損失函數梯度。所以,它一般被認爲是一種監督式學習方法,雖然它也用在一些無監督網絡(如自動編碼器)中。它是多層前饋網絡的Delta規則的推廣,能夠用鏈式法則對每層迭代計算梯度。反向傳播要求人工神經元(或「節點」)的激勵函數可微。                                                                                                                                                                                                                                                  ------來自維基百科算法

代價函數(Cost function)

神經網絡用於分類網絡

 

Cost Functiondom

反向傳播算法(Backpropagation algorithm)

梯度計算:計算第l層第j個單元的偏差函數

偏導數的計算過程,bp算法學習

理解反向傳播(Backpropagation intuition)

使用注意:展開參數(Implementation note:Unrolling parameters)

高級算法選擇優化

 

例子,thetaVec=[Theta1(:);Theta2(:);Theta3(:)];把三個Theta矩陣變成一個向量。例如,Theta1爲10*11矩陣。
變回,Theta1=reshape(thetaVec(1:110),10,11)。展開參數:將矩陣轉化成向量,便於訓練。雙側差分ui

學習算法編碼

梯度檢測(Gradient checking)

反向傳播算法很容易產生微妙的bug。因此用梯度檢測來保證反向傳播算法的正確性。spa

梯度數值估計3d

 

參數向量

Octave實現,幾位小數的差距0.0001

注意,一旦經過檢測後,需關掉梯度檢測,否則,會致使程序運行得很慢!

 隨機初始化(Random initialization)

若是一開始θ都爲零,那麼迭代後,每層全部節點單元都會相等。這就是爲何要隨機初始化。

 

組合到一塊兒(Putting it together)

訓練一個神經網絡的步驟:

一、構建一個神經網絡,隨機初始化權重。

二、執行前向傳播算法

三、經過代碼計算代價函數

四、執行反向傳播算法,求出偏導數項

 

五、梯度檢測

六、選擇高級優化算法

相關文章
相關標籤/搜索