深度學習,讀懂反向傳播

2020-08-29 青峰科技

背景

深度學習屬於機器學習,機器學習的三個步驟就是:模型,策略和計算方法。比如LR,模型使用的LR模型(LR是基於伯努利假設,伯努利屬於指數分布族,指數分布族屬於廣義線性模型),策略使用的是聯合概率分布最大,計算方法是梯度下降法或擬牛頓法等。

深度學習的模型是神經網絡,如下圖:

策略就是我們說的損失函數,cost function,反映了模型的預測誤差,如交叉熵、均方誤差等。給定N個訓練數據集:

基於訓練集找到一組最佳的參數

使得C(θ)最小;

具體表示方法是什麼?這就需要明白神經網絡模型如何表示的,如下圖所示,對於l層來說:

第l層的第i個神經元的輸入Zi,它是上一層所有神經元的輸入之和:

第l層的第i個神經元的輸出ai,是zi經過非線性變化(我們稱為激活函數,如ReLu,sigmoid等):

因此,我們說的θ就是所有的

,則損失函數的偏導

就是求出所有的

一般地,我們求出

,會更新參數,即

。但神經網絡的參數非常多,比如很簡單的alexnet的參數個數在千萬級別,一個一個地求是不切實際的,所以,這裡需要用到反向傳播:back propagation!

反向傳播優化模型參數

求解之前,需要了解一下鏈式法則,就是g(f(x))對x的求導,會等於 g對f的求導 乘 f對x的求導。由於z是w的函數,所以:

可以通過前向傳播求出(即,是已知的不用求)

接下來求解

。令

表示

,(不表示也可以,它有對應的實際的意義,不知道實際的意義也沒關係,因為這是我們一步一步推導下來的)。求解

會比較困難,因為

-->

-->...-->

。這是層層傳遞下去的。

如果,我們能夠知道如何層層傳遞,即l層第i個神經元

和l+1層

(會影響所有神經元)的關係,然後又能算出最後一層L的

,是不是就可以了?所以,我們需要解決2個問題:

(1)最後一層L的

如何計算?

(2)

的關係?

對於問題(1),

是一個向量,我們看看如何求其中一個值n,

, 而

就是最後的輸出值

(對於多分類問題,比如分10類,最後一層的節點數是10個,激活函數是softmax)

,

為最後一層採用的激活函數(多分類一般是softmax),

是激活函數的一級導數。

取決於採用的損失函數,如果採用的是均方誤差,則

(能夠直接得到)

綜上:

可以求得。

對於問題(2),第l層的第i個神經元是如何影響到l+1層所有的神經元呢?

為激活函數(一般是ReLu),

是激活函數的一級導數,可以直接求得。

如何求?可以這麼理解,

會影響[

],而[

]影響C(θ)。

綜上:

總結

額?辛苦碼的那麼多,不知道怎麼沒了,好吧,再打一遍吧~

神經網絡的訓練說白了就是給你N個訓練集,然後讓你選擇一組參數θ使得在這N個訓練集上的損失C(θ)最小。如果找到這組參數呢?用梯度下降法找到這些參數。

梯度下降法就是隨機取一組參數,然後每次迭代都朝下降最快的方向更新,即:

有因為θ其實是由很多的參數組成,這些參數分別是權重w和偏差b,權重

表示第l-1層的第j個神經元的輸出,對第l層的第i個神經元的輸入的貢獻。

根據推導,前者等於

,可通過反向傳遞求得,後者等於

後者通過前向傳播求得,如下圖所示:

相關焦點

  • ...學習也靠反向傳播?Hinton等用新一代反向傳播算法模擬神經網絡
    新智元報導  來源:Nature  編輯:嘯林  【新智元導讀】反向傳播作為一種基本負反饋機制,極大地推動了深度學習神經網絡的發展  隨著更強的計算能力、更大的數據集和更多的技術改進,現在用反向傳播訓練的多層神經網絡已經足以與人類競爭。  問題提出:反向傳播適用於人腦嗎?  因此,很自然的一個問題就是,人腦也是通過修改神經元之間的突觸連結來學習的,那麼深度學習(Deep Learning)中的反向傳播在人腦神經網絡中也存在嗎?反向傳播的引入在神經科學界引起了興奮。
  • 人工智慧-深度學習-代價函數,梯度下降和反向傳播
    然後每個偏導數乘以預先設定的步長,以此為本次學習的參數調整量。原參數減去參數調整量,則參數可以得到修正。修正之後,本輪學習結束。可再進行前向傳播。(註:學習不止一輪)這個下山的人實際上就代表了反向傳播算法,下山的路徑其實就代表著算法中一直在尋找的參數Θ,山上當前點的最陡峭的方向實際上就是代價函數在這一點的梯度方向,場景中觀測最陡峭方向所用的工具就是微分 。在下一次觀測之前的時間就是有我們算法中的學習率α所定義的。
  • 離散優化代替反向傳播:Pedro Domingos提出深度學習新方向
    Friesen & Pedro Domingos機器之心編譯在改革深度學習、拋棄反向傳播的道路上我們不僅看到了 Geoffrey Hinton 的努力。近日,《終極算法》一書作者,華盛頓大學計算機科學教授 Pedro Domingos 也提出了自己的方法——離散優化。神經分類的原始方法是學習單層模型,比如感知機(Rosenblatt, 1958)。
  • caffe詳解之反向傳播
    從零開始,一步一步學習caffe的使用,期間貫穿深度學習和調參的相關知識!前向傳播與反向傳播反向傳播(back-propagation)是計算深度學習模型參數梯度的方法。對深度學習模型按照輸入層、靠近輸入層的隱含層、靠近輸出層的隱含層和輸出層的次序,依次計算並存儲模型的中間變量叫做正向傳播(forward-propagation)。
  • 用反向傳播算法解釋大腦學習過程?Hinton等人新研究登Nature子刊
    而反向傳播算法在深度神經網絡中解決了上述問題,不過長期以來人們一直認為反向傳播在生物層面上存在問題。儘管如此,神經科學的最新發展和神經網絡的成功激活了人們對反向傳播能否幫助進一步了解皮層學習的興趣。反向傳播算法使用反向連接(feedback connection)傳遞誤差信號,來計算突觸更新,從而實現快速學習。
  • 大腦是如何反向傳播的?
    當前,「backprop」(即back propagation,反向傳播之簡稱)是機器學習領域最常用、最成功的深度神經網絡訓練算法。用backprop訓練的網絡在最近的機器學習浪潮中佔據著中流砥柱的地位,承擔上了語音和圖像識別、語言翻譯等任務。
  • 深度學習神經網絡監督學習筆記2-反向傳播,損失函數,梯度下降
    監督學習比較好的一點就是輸入輸出都是確定的,我們進行學習,其本質就是猜權重。wa佔比2/(2+3)=0.4wb佔比3/(2+3)=0.6相比之前將輸入的值計算後輸出的正向傳播來說,這次是通過結果誤差反推權重,即為反向傳播。
  • 腦科學日報|大腦學習也靠反向傳播?炫耀性消費的可塑道德
    在給大鼠施加雷射疼痛刺激的同時,同步記錄大鼠ECoG和雙側S1和M1不同深度的神經電生理信號,通過分析腦內局部場電位(local field potential,LFP)和神經元放電與ECoG信號的關係來揭示GBO的神經起源,發現ECoG記錄到的疼痛誘發GBO來源於疼痛刺激對測S1的淺層中間神經元。研究成果已在線發表於神經科學領域國際知名期刊The Journal of Neuroscience。
  • 《自然綜述-神經科學》:大腦中的反向傳播
    當前,「backprop」(即back propagation,反向傳播之簡稱)是機器學習領域最常用、最成功的深度神經網絡訓練算法。用backprop訓練的網絡在最近的機器學習浪潮中佔據著中流砥柱的地位,承擔上了語音和圖像識別、語言翻譯等任務。
  • 深度學習神經網絡監督學習筆記4-正向、反向傳播公式推導與實例
    正向傳播設:真實值(T):t1=0.5434、t2=0.2784輸入值(I):i1=0.4245、i2=0.8448權重1(W1):wa=0.0047、wb=0.6707、wc=0.1216、wd=0.8259結果1(N1):n11=0.1047、n12=0.9824激活函數1(O1):
  • 知識卡片 反向傳播中的梯度
    前言:本文介紹神經網絡中通過反向傳播計算梯度的原理,並通過代碼演示計算正向和反向傳播中的矩陣相乘得出梯度。正向傳播計算出來的結果,誤差較大,因此通過反向傳播不斷迭代修改參數,使得誤差降低。 反向傳播從輸出層傳到輸入層,逐層自頂向下計算損失函數,計算神經元權值的梯度,作為修改神經元的依據。當誤差達到期望值時,或者迭代次數超過預設的閾值時學習結束。
  • 徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet
    機器之心報導參與:思、一鳴反向傳播是深度學習算法中必不可少的組成部分,但是其固有的梯度爆炸(消失),計算速度慢等問題一直困擾著學界。近日,紐西蘭維多利亞惠靈頓大學的研究者提出了一種新型的算法,可以讓深度學習在不依賴反向傳播的情況下進行收斂,徹底解決了梯度爆炸問題。同時,研究者表示,只需要額外訓練單層的網絡就可以達到圖像分類中的 SOTA 性能。
  • 你應該懂得的反向傳播(backprop)
    當我們在學習或者工作中使用tensorflow,pytorch之類去復現網絡的時候,一般沒人去單獨去寫backward,因為這些優秀的框架已經給我們打好了根基,它們的一句話即可自動的幫我們去反向傳播,我們負責寫好forward就可。
  • 深度學習面試寶典(含數學,機器學習,深度學習,計算機視覺等)
    深度學習面試寶典這是一個在 github 上開源的 深度學習面試寶典,收集和整理了很多相關的知識。相關收集內容 自我介紹 數學 機器學習 深度學習 強化學習 計算機視覺 傳統圖像處理 自然語言處理 SLAM 推薦算法 數據結構與算法 程式語言 深度學習框架 面試經驗 面試技巧 其它深度學習001 神經網絡中的Epoch、Iteration、Batchsize神經網絡中epoch與iteration是不相等的batchsize:
  • 深度學習架構
    最近二十年來,深度學習架構開始出現,這種架構極大地拓展了神經網絡能夠解決的問題的數量和類型。本文介紹了五種最熱門的深度學習架構,包括循環神經網絡 (RNN)、長短期記憶 (LSTM)/門控循環單元 (GRU)、卷積神經網絡 (CNN)、深度信念網絡 (DBN) 和深度堆棧網絡 (DSN),本文還探討了深度學習的開源軟體選項。
  • 學界| Andrej Karpathy:你為什麼應該理解反向傳播
    選自Medium作者: Andrej Karpathy機器之心編譯參與:吳攀、李亞洲、杜夏德當我們在斯坦福提供 CS231n(深度學習課程)時,我們有意設計編程任務來將涉及最底層的反向傳播的明確的計算包括進來。這些學生必須在原始的 numpy 的每一層中實現前向和反向傳播。然而,一些學生在黑板上留下這些抱怨。
  • 深度學習入門必看---吳恩達深度學習課程
    在五門課程中,將學習深度學習的基礎知識,了解如何構建神經網絡,並學習如何實踐機器學習項目,學習卷積網絡,RNN,LSTM,Adam,Dropout,BatchNorm,Xavier/He初始化等等。同時可以了解醫療,自動駕駛,手語閱讀,音樂創作和自然語言處理的案例研究,掌握深度學習的基礎理論,還會看到它在工業中的應用。課程的內容都將在Python和TensorFlow的練習中所實現。
  • 10分鐘帶你了解神經網絡基礎:反向傳播算法詳解
    它像人類的神經系統一樣工作,有助於理解圖像,像人類一樣學習,合成語音等等。什麼是反向傳播(Whatis backpropagation?)我們可以將反向傳播算法定義為在已知分類的情況下,為給定的輸入模式訓練某些給定的前饋神經網絡的算法。當示例集的每一段都顯示給網絡時,網絡將查看其對示例輸入模式的輸出反應。之後,測量輸出響應與期望輸出與誤差值的比較。
  • 深度學習乾貨|基於Tensorflow深度神經網絡(DNN)詳解
    如果文章感興趣,歡迎點擊上方「關注」深度神經網絡(Deep Neural Networks,簡稱DNN)是深度學習的基礎,想要學好深度學習,首先我們要理解DNN模型。多層神經網絡和深度神經網絡DNN其實也基本一樣,DNN也叫做多層感知機(MLP)。DNN按不同層的位置劃分,神經網絡層可以分為三類,輸入層,隱藏層和輸出層,如下圖示例,一般來說第一層是輸入層,最後一層是輸出層,而中間的層數都是隱藏層。
  • 超越反向傳播,LSTM登頂20世紀AI論文高引No.1,光今年就近7千次
    20世紀深度學習研究中,引用最多的論文不再是反向傳播。新的寵兒,是1997年Hochreiter和Schmidhuber發表的Long short-term memory。大名鼎鼎的LSTM。超越反向傳播LSTM的引用量,目前已經超過了26000。