上接 零基礎機器學習入門——淺談神經網絡(四),本節我們主要說說BP算法:
大家可以先簡單看看前面的文章,回顧一下前向傳播和偏導的概念。本節大家可能會看的比較懵,下一節我們會将這些文字的東西實例化。跳過本節不影響您接下來的學習
BP算法是一種計算偏導數的有效方法,它的基本原理是:利用前向傳播最後輸出的結果來計算誤差的偏導數,再用這個偏導數和前面的隐藏層進行加權求和,如此一層一層地向後傳下去,直到輸入層(不計算輸入層),最後利用每個節點求出的偏導數來更新權重。
BP反向傳播
定義:“殘差(error term)”這個詞來表示誤差的偏導數。
輸出層→隐藏層:殘差 = -(輸出值-樣本值) * 激活函數的導數隐藏層→隐藏層:殘差 = (右層每個節點的殘差加權求和)* 激活函數的導數如果輸出層用Purelin作激活函數,Purelin的導數是1,輸出層→隐藏層:殘差 = -(輸出值-樣本值)如果用Sigmoid(logsig)作激活函數,那麼:Sigmoid導數 = Sigmoid*(1-Sigmoid)輸出層→隐藏層:殘差 = -(Sigmoid輸出值-樣本值) * Sigmoid*(1-Sigmoid) = -(輸出值-樣本值)*輸出值*(1-輸出值)隐藏層→隐藏層:殘差 = (右層每個節點的殘差加權求和)* 當前節點的Sigmoid*(1-當前節點的Sigmoid)如果用tansig作激活函數,那麼:tansig導數 = 1 - tansig^2
曲線展示
殘差全部計算好後,就可以更新權重了:輸入層:權重增加 = 當前節點的Sigmoid * 右層對應節點的殘差 * 學習率隐藏層:權重增加 = 輸入值 * 右層對應節點的殘差 * 學習率偏移值的權重增加 = 右層對應節點的殘差 * 學習率學習率前面介紹過,學習率是一個預先設置好的參數,用于控制每次更新的幅度。
此後,對全部數據都反複進行這樣的計算,直到輸出的誤差達到一個很小的值為止。以上介紹的是目前最常見的神經網絡類型,稱為前饋神經網絡(FeedForward Neural Network),由于它一般是要向後傳遞誤差的,所以也叫BP神經網絡(Back Propagation Neural Network)。
是不是看文字已經興趣大減?下一節我們就用圖形和數字的方式對這些文字進行說明,你會發現原來大名鼎鼎的反向傳播算法也不過如此
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!