bp演算法,即反向傳播方法,是用來訓練前向網路的一種普遍演算法。課本(artifitial intelligence: a new synthesis, nils j. nilsson)提供了演算法實現方式,每乙個輸入樣本,利用遞迴等式,根據期望值與實際輸出值的誤差,從後向前逐步調整權重,從而實現網路的訓練與調整。但是神經網路的反向誤差傳播方法遠不是這麼簡單,通過查詢一些資料,可以找到許多重要的但是沒有被提及的方面。本文對batch training 與 incremental training的區別和學習率作簡單的介紹。有乙個術語叫standard backprop,實際指利用delta規則進行反向傳播。它可以用在兩種訓練中:incremental training 和 batch training。前者是在每乙個樣本被計算後就更新網路的權重,後者是在處理所有的樣本後再更新網路的權重。顯然,nilsson的書中所給的演算法是屬於incremental training。對於batch training,standard backprop通常能夠收斂到乙個區域性極小值,而incremental trainin 則不會收斂到誤差表面的乙個固定點。如果想達到收斂,學習率必逐漸減小,這樣的演算法稱為「隨機逼近」。
根據乙個人工神經網路電子講稿中所述,incremental training 中接受樣本的資料對訓練結果有較大的影響,它一般比較「偏愛」後來出現的樣本。關於這個問題,可以從演算法的實現得到乙個直觀的理解。對後乙個樣本處理時,不再考慮前乙個樣本的誤差,通俗地來看,這如同生物隨時間推移的進化。生物進化時,影響因素只是當前的環境,而此前的環境與生物下一步要進化到什麼樣的狀態已經沒有任何關係,只是在基因中有一些積累。即進化只考慮去適應當前的環境。這對於生物的進化來說,是的確可行的,因為過去的環境確實沒有必要去考慮。但對於乙個神經網路的訓練來說,所有的樣本的地位應該都是平等的,與先後順序無關的。這就限制了incremental training的使用,也許可以在樣本中尋找乙個非常恰當的順序,按這個順序對網路進行訓練可能會達到乙個很好的效果,但是這個順序如何找出來呢?這是乙個難題。如果使用batch training,就不用為不收斂或者那些繁瑣的學習率調整而頭疼。研究者大部分的時間花在加速反向傳播的工作上,但是這些方法一般都不合理,比較有效的是quickprop (fahlman 1989) 和 rprop (riedmiller and braun 1993)。
在前向網路的訓練中,學習率的確定在很大程度上決定網路的收斂速率、訓練效果等,如何確定學習率是乙個非常重要的問題。太小的學習率會導致網路學習得非常慢。太大的學習率導致權重和目標函式分離,網路癱瘓或不穩定,從而網路根本無法學習。如果用乙個恆定的學習率去訓練乙個網路,那將是乙個非常乏味而又冗長的過程,而且最終也可能不成功。batch training 沒有必要考慮使用常數學習率的問題,或者根本沒有必要考慮使用standard backprop,既然有許多有效的、快速的演算法如quickprop和rprop等。
研究者發明了許多standard bp的變種,但它們大部分有著與standard bp類似的理論缺陷,即權重改變的幅度被限制為了梯度大小的函式。當用一些小隨機數來初始化神經網路的時候,梯度可能很小,但是我們需要乙個大的步長去改變權重。當靠近區域性極小值的時候,梯度很小,我們又希望權重的改變較小,這樣網路才會穩定地收斂。同樣,當梯度很大時,我們可能需要大的或小的步長。任何乙個將學習率乘以梯度作為步長的演算法都有可能在梯度突然變化的時候產生奇怪的結果。quickprop 和 rprop 兩種演算法的優點就在於,它們沒有過度地依賴於梯度去計算這個步長。好的演算法不應該僅依賴梯度,而應該另外選擇乙個附加的條件去確定權重的變化量。通過針對書上的例子程式設計進行實現,我發現對於輸入向量(1),無論如何調整訓練的順序,都不能訓練出正確的結果。如果不用書上所給的初始權重,而用小隨機數初始化權值,則結果更隨意,不能達到理想的效果。分析其原因,一方面,學習率的設定不恰當;另一方面,網路的結構過於簡單,解決這種線性不可分的函式,可能不能勝任。
batch training演算法是在訓練的過程中,每個樣本處理後不調整權重,待所有樣本處理完後,將所有的權重改變累加起來做一次調整。
BP演算法推導
反向傳播演算法是深度學習的基礎之一,其主要的核心就是對代價函式 e 關於權重 w 或偏置 b 的偏導數 的表示式。這個表示式代表在改變權值和偏置時,代價函式變化的快慢。使用 w l 表示從 l 1 層的 k 神經元到 l 層的 j 神經元上的權重。之所以 l 的序號在 l 1 層的序號之前,是因為後...
BP演算法示例
誤差處理情況,第一種計算誤差的方式是將簡單的將網路計算結果與正確結果相減,但採用這種做法,如果我們把所有誤差相加在一起,結果居然為零,因為第乙個節點的結果與正確結果的差值和第二個節點結果與正確結果的差值剛好相反,於是誤差就相互抵消掉,由此直接將兩者相減不是一種理想的誤差計算方式。第二種是相減後求絕對...
反向傳播演算法(BP演算法)
bp演算法 即反向傳播演算法 適合於多層神經元網路的一種學習演算法,它建立在梯度下降法的基礎上。bp網路的輸入輸出關係實質上是一種對映關係 乙個n輸入m輸出的bp神經網路所完成的功能是從n維歐氏空間向m維歐氏空間中一有限域的連續對映,這一對映具有高度非線性。它的資訊處理能力 於簡單非線性函式的多次復...