誤差反向傳播算法淺解

2021-02-08 補天遺石

反向傳播(英語:Backpropagation,縮寫為BP)是「誤差反向傳播」的簡稱。由於多層前饋神經網絡的訓練經常採用誤差反向傳播算法,人們也常把多層前饋神經網絡稱為BP網絡。


反向傳播算法發明的歷史請參考我的前文《神經網絡簡史》。


多層前饋神經網絡是指通過按某種方式將神經元連接起來,就可構成相關神經網絡。下圖所示為一個熟知的前饋網絡模型,該網絡有L層,第1 層為輸入層,第L層為網絡輸出層。在這個網絡中,前一層神經元全連接到後一層神經元,同層的神經元之間沒有任何連接


反向傳播通常被認為是基於優化理論的一種監督式學習方法,雖然它也用在一些無監督網絡(如自動編碼器)中。


本文主要內容:

神經網絡應用梯度下降的直觀理解

反向傳播算法的學習過程

反向傳播算法推導

總結探討

本文靈感來源

參考文獻


直觀理解

考慮一個有兩個輸入單元、一個輸出單元、沒有隱藏單元的簡單神經網絡。每個神經元都使用輸入的加權和作為線性輸出。


最初在訓練之前,會隨機分配權重。之後神經元根據訓練實例進行學習,在此情況下包含元組 (x1,x2,t) 的集合,其中 x1與x2是網絡的輸入,t 為正確輸出(在給定相同的輸入時網絡最終應當產生的輸出)。網絡在給定x1 和 x2時,會計算一個輸出 y,很可能與t 不同(因為權重最初是隨機的)。衡量期望輸出t 與實際輸出  y 之間的差異的一個常見方法是採用平方誤差測度:

其中E為差異或誤差。


為什麼採用平方差?其數學背景是最小二乘法,也可以理解為空間兩點的距離或者平方誤差等。最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找數據的最佳函數匹配。最重要的應用是在曲線擬合上。最小平方所涵義的最佳擬合,即殘差(殘差為:觀測值與模型提供的擬合值之間的差距)平方總和的最小化。


舉例來講,考慮單一訓練實例的網絡:(1,1,0),輸入x1 與x2均為1,正確輸出t 為 0(網絡只有一個輸出)。現在若將實際輸出 y 畫在x軸,誤差E畫在y 軸,得出的是一條拋物線。拋物線的極小值對應輸出y,最小化了誤差E。對於單一訓練實例,極小值還會接觸到 x 軸,這意味著誤差為零,網絡可以產生與期望輸出t 完全匹配的輸出y。因此,把輸入映射到輸出的問題就化為了一個找到一個能產生最小誤差的函數的最優化問題。

單一實例的神經網絡的誤差函數非常容易理解,可以通過解方程,直接找到最小值。這裡給一個梯度表示,如下圖,便於理解多實例神經網絡的梯度表示。



反向傳播算法的目的是找到一組能最大限度地減小誤差的權重。尋找拋物線或任意維度中任何函數的極大值的方法有若干種。其中一種方法是通過求解方程組,但這依賴於網絡是一個線性系統,而目標也需要可以訓練多層非線性網絡(因為多層線性網絡與單層網絡等價)。


如果考慮兩個實例呢(依然是單層神經網絡,不考慮非線性變換)?


考慮一個神經元的輸出取決於其所有輸入的加權總和:

其中w1和 w2是從輸入單元到輸出單元相連的權重。因此,誤差取決於輸入到該神經元的權重,也是網絡要學習最終需要改變的。若每個權重都畫在一個水平的軸上,而誤差畫在垂直軸上,得出的就是一個拋物面(若一個神經元有 k 個權重,則誤差曲面的維度就會是k+1,因而就是二維拋物線的k+1維等價)。



拋物面的最小值需要通過梯度下降法求得。如下圖所示。


如果是多個實例呢?並且是多層神經網絡的非線性變換呢?從數學角度看,已經不能通過求解方程組得到最小值,也不能簡單的描繪多維權重係數構成的函數所對應的幾何形狀(比如拋物面)。但是運用抽象推理,大概想像成這樣子:


以上就是神經網絡學習和誤差函數原理的直觀表示。


結合梯度的概念,這裡先給出梯度下降的推導結果(公式所示),下面逐步解釋為什麼有這個推導結果



這個公式推導所帶出的三個導數非常重要,是影響梯度的三個重要因素。我把上面三個偏導分成三部分來討論,分別對應於誤差函數激活函數神經元模型。假設我們要得到的是第i層到第j層的連接權重w_ij,用於梯度的偏導可以通俗的表達為:


下面分別從神經元模型誤差函數激活函數的角度解釋這個公式。


一個神經元的基本模型如下圖所示。



通向一個神經元的輸入net_j是之前神經元的輸出o_i 的加權和。若該神經元輸出層後的第一層,輸入層的輸出 o_i就是網絡的輸入 x_i。該神經元的輸入數量是 n。變量 w_ij表示神經元 i 與 j 之間的權重。對於每一個神經元,其對應的輸出為:

從數學的角度來看,神經元模型定義了兩層的複合函數:內層是net_k,外層是φ函數。激活函數φ一般是非線性可微函數(反向傳播要求人工神經元的激勵函數可微)。常用作激活函數的是Sigmoid函數:

或者寫成:

這個函數也被稱為單極性Sigmoid函數。其導數形式很好:

其圖像如何下:

雙極性Sigmoid函數要比較常用。公式如下:

或者寫成(把上式中分子分母同時除以e^z,令x=-2z就得到第二個式子):

其導數為:

其圖像為:

從上圖可以看出,對於Sigmoid函數,當z的取值越來越大後(飽和區),函數曲線變得越來越平緩,意味著此時的導數也越來越小。同樣的,當z的取值越來越小時(飽和區),也有這個問題。僅僅在z取值為0附近時,導數的取值較大。在後文講到的反向傳播算法中,每一層向前遞推都要乘以導數,得到梯度變化值。Sigmoid的這個曲線意味著在大多數時候,我們的梯度變化值很小,導致我們的W,b更新到極值的速度較慢,也就是我們的算法收斂速度較慢。


由於反向傳播使用梯度下降法,需要計算平方誤差函數對網絡權重的導數。假設對於一個輸出神經元,平方誤差函數為:

其中


由梯度的定義,與方向導數有關聯的一個概念是函數的梯度。多元函數的偏導向量構成了梯度,梯度的方向是函數在這點增長最快的方向,那麼函數的偏導在這點的梯度方向也達到最大值。其中,要使用梯度下降法更新 w_ij,必須選擇一個學習速率μ。要加在原本的權重上的變化,等於學習速率與梯度的乘積,乘以-1:

之所以要乘以-1 是因為要更新誤差函數極小值而不是極大值的方向。


從數學的角度看,平方誤差函數形成了對輸出o_j的複合函數:

這個式子無論對於輸出層的神經元,還是隱藏層的神經元,都是成立的。


綜上所述,誤差函數是關於權重的函數,為了在由權重係數構成的多維空間中尋找一個下降最快的梯度方向,我們需要對所有權重係數求偏導。根據複合函數的求導規則,其一般形式為:


反向傳播算法的學習過程

學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。正向傳播時,輸入樣本從輸入層傳入,經各隱層逐層處理後,傳向輸出層。若輸出層的實際輸出與期望的輸出(教師信號) 不符,則轉入誤差的反向傳播階段。誤差反傳是將輸出誤差以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號作為修正各單元權值的依據。這種信號正向傳播與誤差反向傳播的各層權值調整過程,是周而復始地進行的。權值不斷調整的過程,也就是網絡學習訓練過程。此過程一直進行到網絡輸出的誤差減少到可接受的程度,或進行到預先設定的學習次數為止。


學習過程的偽碼描述如下:

輸入:訓練集和學習率

初始化網絡權值(通常是小的隨機值)

  do

     forEach 訓練樣本 ex

        prediction = neural-net-output(network, ex)  // 正向傳遞,得到當前樣本的輸出

        actual = teacher-output(ex)//從監督老師那裡獲得真實輸出

        計算輸出單元的誤差 (prediction - actual)//獲得殘差

        計算    對於所有隱藏層到輸出層的權值和閾值          // 反向傳遞

        計算    對於所有輸入層到隱藏層的權值和閾值          // 繼續反向傳遞

        更新網絡權值和閾值 // 輸入層不會被誤差估計改變

  until 所有樣本正確分類或滿足其他停止條件

  return 權重與閾值確定的多層前饋神經網絡


完整的誤差反向傳播算法包括前向計算和反向傳播兩部分。


反向傳播算法推導

為了最小化誤差E,最終歸結為優化問題。前面說過,反向傳播算法的目的是找到一組能最大限度地減小誤差的權重,在反向傳播中使用的方法是梯度下降法。這樣我們就需要計算誤差函數E對權重的偏導。由上文,誤差函數對權重w_ij的偏導數是三個偏導數的乘積:


我們的目標就是分別求得這三個偏導。


在右邊的最後一項中(神經元模型),只有加權和 net_j取決於 w_ij,因此:

當對一個權重求導時,其他權重就視為常量。這裡如有不確定,把加權和展開即可明白。


對於激活函數部分,神經元j 的輸出對其輸入的導數就是激活函數的偏導數(這裡假定使用Sigmoid函數):

這就是為什麼反向傳播需要的激活函數是可微的。同時,前向傳播時,很容易求得net_j(各層神經元計算得到的加權和),所以該偏導也容易求得。


對於誤差函數部分的偏導,為了方便理解,分輸出層和隱藏層來討論。


如果神經元在輸出層中,因為此時o_j=y以及

所以第一項可以直接算出。


但如果j 是網絡中任一內層(隱藏層),就需要用到鏈式求導法則。


下面以一個神經網絡的局部來說明。神經網絡中相鄰的兩層構成一個計算單元,因此只需要理解第j層和第k(j+1) 層之間的結構和運算,便可以通曉整個網絡的結構和運算(前面說過,層與層之間全連接,同層之間沒有連接)。


注意到我們要求的是第i層到第j層的連接權重w_ij,考慮第j層中的某個神經元的輸出o_j是第k層所有神經元{u,v,…,w}的輸入,把誤差(損失)函數E看作是{u,v,…,w}的函數(注意,這裡的第k層可能是輸出層,也可能是隱藏層;作為輸出層時,既可能是多值輸出,也可能是單值輸出)。可以得到:


這裡應用鏈式求導法則


最後一步做了兩次替換:


對於上面推導結果,我們發現:


因此,若已知所有關於下一層(更接近輸出神經元的一層)的輸出關於o_k 的導數,則可以計算 o_j的導數。


現在把上述推導放在一起:

此時:

則:


綜上,權重的調整隻和以下因素有關:

前向神經元的輸出(和所調整權重有關的一個前向神經元的輸出作為輸入)

當前神經元的激活函數

所有後向神經元(誤差函數導數,激活函數導數,並一直遞歸下去)及其前向傳播時的權重(這些權重用來作為誤差後向傳播的權重)

遞歸會終結在輸出層,從而使用殘差(y-t)。注意到遞歸的層數以及係數作用,這裡有一大串連乘,如果連乘的數字小於1,則梯度越乘越小,導致梯度消散;如果連乘的數字大於1,則梯度越乘越大,導致梯度爆炸

對於偏置來說,注意到偏置是沒有權重,調整的是偏置本身


總結探討

總結起來,BP的誤差反向傳播思想可以概括為:利用輸出層的誤差來估計出其直接前導層的誤差,再藉助於這個新的誤差來計算更前一層的誤差,按照這樣的方式逐層反傳下去便可以得到所有各層的誤差估計。


BP算法的提出在一定程度上解決了多層網絡參數訓練難的問題,但是其自身也存在如下一些問題。


首先,誤差在反向傳播過程中會逐漸衰減/增大,經過多層的傳遞後將會變得消散/爆炸,這使得BP在深層網絡中並不可行。對於梯度爆炸,則一般可以通過調整神經網絡模型中的初始化參數得以解決。對於無法完美解決的梯度消失問題,目前有很多研究,一個可能部分解決梯度消失問題的辦法是使用ReLU(Rectified Linear Unit)激活函數(σ(z)=max(0,z))。


其次,BP採用最速梯度下降的優化思想,而實際問題的誤差函數通常不是凸的,存在眾多局部極小值點,算法很難得到最優解。極小值問題,有多種解決方案,比如從多個不同的初始點開始搜索,模擬退火,隨機梯度下降,遺傳算法等。但這些都是啟發式,理論上尚缺乏保障。


第三,由於訓練過程中依靠於導數信息來進行權值的調整,當權值調節過大時會使大部分神經元的加權和過大,致使傳遞函數工作於S型函數的飽和區,所以權值的調整會出現停頓的情況。


第四,隱層神經元的個數設置是個未解決的問題,實際應用中通常靠試錯法調整。


第五,BP神經網絡的過擬合,常用的方法是早停和正則化。早停是指:將數據分成訓練集和驗證集,訓練集用來計算梯度,更新連接權和閾值,驗證集用來估計誤差,如果訓練集誤差降低但是驗證集誤差升高,則停止訓練,同時返回具有最小驗證集誤差的連接權和閾值。正則化是指:誤差目標函數中增加一個用於描述網絡複雜度的部分,例如連接權與閾值的平方和。


最後,對於一些複雜網絡的優化問題,BP算法受到學習速率的限制需要花費幾個小時,甚至更長的時間來完成訓練任務。累積BP算法和標準BP算法各有優缺點。


本文靈感來源

影響本文寫作的有幾篇文章。


第一篇是四川大學章毅教授的《一張圖看懂BP算法》,初讀此文,不明覺厲。現在回頭看一下,頗有啟發。文章通過引入敏感性這個概念,提供了一個很好的角度解釋反向傳播。


通過構造敏感性,可以看到前向計算和反向傳播呈中心對稱。它顯示了網絡的前向計算和反向傳播具有相似的計算形式。這對於理解反向傳播的加權和特別有幫助。


文章引入虛擬神經元的概念,來表示加權和的中間過程。在前向計算中, 網絡傳遞的信息是神經元的輸出, 向虛擬神經元施加的映射是激活函數。而在反向傳播中,網絡傳遞的信息是神經元的敏感性。兩個計算均通過虛擬神經元對傳入的信息求和。不同的地方僅在於對虛擬神經元施加非線性映射的方式, 向虛擬神經元施加的映射是與激活函數的導數乘積。


如何理解敏感性呢?其實敏感性就是前面推導梯度求導三部分的誤差函數導數部分,如下圖所示:

用公式表示為:




第二篇文章是《A Step by Step Backpropagation Example》。文章從輸出層開始,一步一步,非常清晰的推導反向傳播算法。如下圖所示:


如果是第一次理解算法,還沒有熟悉形式化推導,該文章很有幫助。文章明晰了一下幾點:


第三篇文章是《反向傳播神經網絡極簡入門》,對於理解形式化推導很有幫助。


文章《Principles of training multi-layer neural network using backpropagation》提供了直觀理解反向傳播的完整例子。


另外,學習的過程是不斷的釐清概念的過程。對於神經網絡,以及機器學習的認識有幾點需要明確(從周志華在《機器學習》第五章中整理):

神經網絡是什麼?神經網絡是由具有適應性的簡單單元組成的廣泛並行互連的網絡,它的組織能夠模擬生物神經系統對真實世界物體所作出的交互反應。

神經網絡和生物神經網絡的關係?周志華在《機器學習》第五章中特別言明:所談的是「人工神經網絡」,而不是生物學意義上的神經網絡。

神經網絡和機器學習的關係?在機器學習中談論神經網絡時指「神經網絡學習」,或者說,是機器學習與神經網絡這兩個學科領域的交叉部分。

神經網絡的學習過程是怎樣的?就是根據訓練數據來調整神經元之間的「連接權」,以及每個功能神經元的閾值;換言之,神經網絡「學」到的東西,蘊含在連接權與閾值中。

反向傳播算法的準確說法應該是誤差反向傳播算法,有時候稱為BP算法或者BP網絡,一般是指用BP算法訓練的多層前饋神經網絡。

神經網絡的結構通常稱為「多層前饋神經網絡」,其中的前饋怎麼理解?「前饋」並不意味著網絡中信號不能向後傳,而是指網絡拓撲結構上不存在環或迴路。


參考文獻

《反向傳播神經網絡極簡入門》

《一張圖看懂BP算法》四川大學 章毅

《神經網絡七十年:回顧與展望》

《BP神經網絡的發展現狀綜述》周政

《基於導數優化的BP學習算法的研究綜述》

《機器學習》第五章:神經網絡 周志華

http://www.cnblogs.com/pinard/p/6437495.html

《Principles of training multi-layer neural network using backpropagation》

http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html

《A Step by Step Backpropagation Example》

英文:https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

中文: http://yongyuan.name/blog/back-propagtion.html

http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/

https://www.gitbook.com/book/tigerneil/neural-networks-and-deep-learning-zh/details

https://en.wikipedia.org/wiki/Backpropagation

https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

相關焦點

  • 算法推導:反向傳播算法
    13.3.1 反向傳播算法推導如下圖所示為一個神經網絡的結構圖,由於本文主要探討激活函數在反向傳播過程中的作用,因此不會帶入數值進行計算,而是以兩個權重的更新為案例進行公式的推導,分別為如何通過反向傳播算法更新和的值。
  • 反向傳播(BP)算法的數學原理
    但是學習BP算法的數學原理,並非無用,相反對我們深入理解神經網絡訓練的底層原理有著非常重要的幫助。反向傳播算法的核心是求解損失函數C關於任一網絡權重w(或偏置b)的偏微分∂C/∂w (或∂C/∂b)。該偏微分表達式表示損失函數C的值隨權重w或偏置b值變化而變化的變化率。很多時候雖然偏微分表達式看起來非常複雜,但反向傳播算法為偏微分表達式中每項的物理含義提供了自然、直觀和優美的解釋。
  • 反向傳播算法的工作原理(2)
    反向傳播算法根據前述方程,下面以算法的形式,顯示地寫出反向傳播算法:研究一下這個算法,你就會明白為什麼它被稱為反向傳播。在網絡中反向操作似乎很奇怪,但是如果你考慮反向傳播的證據,反向傳播源於這樣一個事實:代價函數是網絡輸出的函數。為了了解代價是如何隨先前的權重和偏差而變化的,我們需要反覆應用鏈式規則,在各個層中反向操作以獲得可用的表達式。為什麼說反向傳播是一種快速算法?為什麼說反向傳播是一種快速算法?為了回答這個問題,我們思考一下計算梯度的另一種方法。
  • 【強基固本】卷積神經網絡(CNN)反向傳播算法
    現在我們想把同樣的思想用到CNN中,很明顯,CNN有些不同的地方,不能直接去套用DNN的反向傳播算法的公式。從上面可以看出,問題1比較好解決,但是問題2,3,4就需要好好的動一番腦筋了,而問題2,3,4也是解決CNN反向傳播算法的關鍵所在。
  • 卷積神經網絡(CNN)反向傳播算法推導
    首先我給大家介紹一下我分析delta誤差反向傳播過程的簡單方法,如果神經網絡l+1層某個結點的delta誤差要傳到l層,我們就去找前向傳播時l+1層的這個結點和第l層的哪些結點有關係,權重是多少,那麼反向傳播時,delta誤差就會乘上相同的權重傳播回來。
  • 用反向傳播算法解釋大腦學習過程?Hinton等人新研究登Nature子刊
    而反向傳播算法在深度神經網絡中解決了上述問題,不過長期以來人們一直認為反向傳播在生物層面上存在問題。儘管如此,神經科學的最新發展和神經網絡的成功激活了人們對反向傳播能否幫助進一步了解皮層學習的興趣。反向傳播算法使用反向連接(feedback connection)傳遞誤差信號,來計算突觸更新,從而實現快速學習。
  • 深度學習基礎之反向傳播算法
    介紹反向傳播算法(Back Propagation)的文章有很多,但講得通俗易懂的很少,有的只給出公式推導,很難理解,有的雖然給出了例子,但介紹得過於複雜
  • 大腦與反向傳播(Backpropagation and the brain)--上篇
    深層人工神經網絡中的反向傳播算法解決了此問題,但它一直被視為生物學問題。儘管如此,神經科學的最新發展和人工神經網絡的成功重新激發了人們對反向傳播是否能夠幫助我們理解皮質學習的興趣。反向傳播算法通過反饋連接傳遞誤差信號來計算突觸的更新值,從而快速學習。儘管反饋連接在皮質中無處不在,但很難看到它們如何傳遞反向傳播公式所需的誤差信號。
  • RNN系列教程之三 | 基於時間的反向傳播算法和梯度消失問題
    前一部分中,我們介紹了如何在Python和Theano框架下實現RNN,但還未深入了解時序反向傳播算法(BPTT)是如何計算梯度的。這周,我們將簡單介紹BPTT,並解釋其與傳統反向傳播的區別。我們還將了解梯度消失問題,這也是推動LSTM(長短時記憶)和GRU(門控循環單元)(目前在NLP和其他領域最流行且有效模型)發展的原因。
  • 反向傳播算法最全解讀,機器學習進階必看!
    目前網絡上關於反向傳播算法的教程已經很多,那我們還有必要再寫一份教程嗎?答案是『需要』。為什麼這麼說呢?我們教員Sanjeev最近要給本科生上一門人工智慧的課,儘管網上有很多反向傳播算法的教程,但他卻找不到一份令他滿意的教程,因此我們決定自己寫一份關於反向傳播算法的教程,介紹一下反向傳播算法的歷史背景、原理、以及一些最新研究成果。
  • 重磅推薦:大腦與反向傳播(Backpropagation and the brain)--上篇
    深層人工神經網絡中的反向傳播算法解決了此問題,但它一直被視為生物學問題。儘管如此,神經科學的最新發展和人工神經網絡的成功重新激發了人們對反向傳播是否能夠幫助我們理解皮質學習的興趣。反向傳播算法通過反饋連接傳遞誤差信號來計算突觸的更新值,從而快速學習。儘管反饋連接在皮質中無處不在,但很難看到它們如何傳遞反向傳播公式所需的誤差信號。
  • 你真的理解反向傳播嗎?面試必備
    反向傳播問題經常出現,不少人碰到時仍覺得十分棘手。最近,Medium上的一位機器學習初學者Ryan Gotesman,在學習吳恩達老師廣受歡迎的Machine Learning課程時,遇到一些困難。Ryan眼中的學習過程是這樣的:線性回歸,檢查,邏輯回歸,檢查,梯度下降,檢查,檢查,再檢查……接著,Ryan又學習了神經網絡和模型訓練的相應算法,即反向傳播。
  • 知識卡片 反向傳播中的梯度
    前言:本文介紹神經網絡中通過反向傳播計算梯度的原理,並通過代碼演示計算正向和反向傳播中的矩陣相乘得出梯度。正向傳播計算出來的結果,誤差較大,因此通過反向傳播不斷迭代修改參數,使得誤差降低。 反向傳播從輸出層傳到輸入層,逐層自頂向下計算損失函數,計算神經元權值的梯度,作為修改神經元的依據。當誤差達到期望值時,或者迭代次數超過預設的閾值時學習結束。
  • 重磅推薦:大腦與反向傳播(Backpropagation and the brain)--下篇
    上篇中主要介紹了反饋傳播在大腦中實現的4個難點:計算反向傳播、反向傳播中前向和反向路徑中突出的對稱性、被標記的誤差信號可能是很極端的值、大腦中的反饋會改變神經元活動。儘管NGRAD會在層內計算局部誤差向量,而不是像反向傳播和反饋對齊一樣在層間傳輸誤差向量【57】,但是此類中的許多算法仍會考慮反向傳播【39,133,135,136】計算的梯度。為了直觀了解如何利用層內計算出的活動差異來指導學習,我們研究了在第一次神經信息處理系統研討會上關於深度學習【138】(補充圖1)提出的一個更簡單的提案,後來由Lee et al.實現【 41】。
  • 深度學習之DNN與反向傳播算法總結
    在深度神經網絡(DNN)模型與前向傳播算法中,我們對DNN的模型和前向傳播算法做了總結,這裡我們更進一步,對DNN的反向傳播算法(Back Propagation,BP)做一個總結。在了解DNN的反向傳播算法前,我們先要知道DNN反向傳播算法要解決的問題,也就是說,什麼時候我們需要這個反向傳播算法?
  • 大腦中的反向傳播_湃客_澎湃新聞-The Paper
    接下來,我們需要定義一個誤差函數(error function)。這樣一個誤差函數可以告訴我們:這個網絡目前表現如何?我們應該如何調整其中的神經元連接來減少誤差?當前,「backprop」(即back propagation,反向傳播之簡稱)是機器學習領域最常用、最成功的深度神經網絡訓練算法。
  • 乾貨 | 深度學習之CNN反向傳播算法詳解
    要套用DNN的反向傳播算法到CNN,有幾個問題需要解決:1)池化層沒有激活函數,這個問題倒比較好解決,我們可以令池化層的激活函數為σ(z)=z,即激活後就是自己本身。這樣池化層激活函數的導數為1.2)池化層在前向傳播的時候,對輸入進行了壓縮,那麼我們現在需要向前反向推導δl−1,這個推導方法和DNN完全不同。
  • Mini-patch:從零開始的反向傳播(附詳細代碼)
    文章將重點介紹mini-patch逐步實現的反向傳播算法。有許多教程和博客詳細介紹了反向傳播算法,以及演算和代數背後的所有邏輯。因此,我將跳過這一部分,並在數學和使用Python的實現中切入方程式。關於為什麼我們應該從頭開始實現一個算法,即使幾乎所有框架都已經可以使用它,這也是一個長期存在的普遍問題。
  • 人人都能看懂的LSTM介紹及反向傳播算法推導(非常詳細)
    LSTM的變種以及前向、反向傳播目前所描述的還只是一個相當一般化的 LSTM 網絡。但並非所有 LSTM 網絡都和之前描述的一樣。事實上,幾乎所有文章都會改進 LSTM 網絡得到一個特定版本。差別是次要的,但有必要認識一下這些變種。
  • BP反向傳播矩陣推導圖示詳解​
    >BP(反向傳播)是有 Geffrey Hinton 在 1988 年發表的論文《Learningrepresentations by back-propagating errors》中首次被提出來。▲ 圖1:4層無激活函數的前向傳播過程圖 1 表示的是 4 層無激活函數神經網絡的前向傳播過程,其中損失函數如下所示: