服用衍生物的概念是什麼?有趣的是,爲了教授一個系統,我們必須調整它的權重。但是,爲什麼我們要通過推導傳遞函數來做到這一點。推導中有什麼可以幫助我們。我知道推導是給定點上連續函數的斜率,但它與問題有什麼關係。爲什麼我們在計算反向傳播算法時採用傳遞函數的導數?
回答
反向傳播是Chain Rule在神經網絡中的應用。由於f(g(x))的導數爲f'(g(x)),所以如果正向通過涉及應用傳遞函數,則損失函數相對於權重的梯度將包括傳遞函數的導數G'(x)的。
你的問題是一個很好的問題!爲什麼我應該在錯誤的斜率爲wrt時將重量向一個方向移動?重量很高?這真的有意義嗎?事實上,如果錯誤函數是重要的,它是有意義的。重量是一個拋物線。然而,假設它是拋物線是一種瘋狂的猜測。正如rcpinto所說,假設誤差函數是一個拋物線,使用鏈規則推導出更新簡單。
但是,還有一些其他的參數更新規則實際上解決了這個非直觀的假設。您可以制定更新規則,將權重設定爲沿斜坡方向的固定大小步驟,然後稍後在訓練中稍後可以減小步長對數。 (我不確定這種方法是否有正式名稱。)
還有可以使用的替代錯誤函數。查看Cross Entropy在你的神經網絡課本中。這是對誤差函數的調整,使得更新規則中的(傳遞函數的)因子的抵消消除。請記住根據您的輸出傳遞函數選擇正確的交叉熵函數。
原因是我們正在儘量減少損失。具體來說,我們通過gradient descent method來做到這一點。它基本上意味着從我們當前的參數空間點(由完整的當前權重集合決定),我們希望沿着一個會減少損失函數的方向前進。想像站在山坡上,沿着斜坡最陡峭的方向走。
在數學上,從參數空間中當前點開始最陡下降的方向是負梯度。而梯度只不過是由每個單一參數的損失函數的所有導數組成的矢量。
當我剛開始進入神經網絡時,我也有這個問題。
這裏的其他答案已經解釋了這個數學,這個數學很清楚,當你試圖更新權重的時候,一個微分項會出現在你的計算中。 但是所有這些計算都是爲了實現反向傳播而完成的,這只是更新權重的一種方法!現在閱讀...
假設在一天結束時,所有的神經網絡都試圖做的是更新它的權重,以適應您輸入的數據。在這個聲明中也包含你的答案。你在這裏感到困惑的是後向傳播算法的想法。許多教科書默認使用backprop來更新神經網絡,但不要提到還有其他方法來更新權重。這導致了神經網絡和支柱是相同的事物並且本質上相互關聯的混淆。這也導致了錯誤的信念,即神經網絡需要逆向訓練。
請記住,反向傳播只是用來訓練你的神經網絡的方法之一(儘管它是最有名的)。現在,你一定已經看到了背投中的數學問題,因此你可以看到衍生術語來自哪裏(其他一些答案也解釋了這一點)。其他培訓方法可能不需要衍生工具,儘管其中大部分都可以。請仔細閱讀以找出原因......
直覺地想一想,我們談論的是改變權重,與改變有關的直接數學運算是一個導數,有意義的是,您應該需要評估導數以改變權重。
如果您仍然感到困惑,請告訴我,我會嘗試修改我的答案以使其更好。就像信息的一部分一樣,另一個常見的誤解是梯度下降是反向傳播的一部分,就像假設反向傳播是神經網絡的一部分一樣。漸變下降只是最大限度地降低成本功能的一種方式,還有很多可以使用的其他方法。上面的答案之一,當它說「具體梯度下降」時,也會做出錯誤的假設。這實際上是不正確的。 :)
訓練神經網絡意味着最小化與網絡權重相關的相關「錯誤」函數。現在有一些優化方法只使用函數值(Nelder和Mead的單純形法,Hooke和Jeeves等),另外使用一階導數(最速下降,準牛頓,共軛梯度)的方法和使用二階導數的Newton方法。所以如果你想使用一個微分方法,你必須計算誤差函數的導數,這反過來又涉及到傳遞或激活函數的導數。 反向傳播只是計算導數的一個很好的算法,僅此而已。
您必須已經知道成本函數是一個以權重爲變量的函數。 現在認爲它是f(W)。
我們這裏的主要動機是找到一個W,我們得到f(W)的最小值。
這樣做的一種方法是在一個軸上繪製函數f,在另一個軸上繪製W ......但請記住,這裏W不僅僅是一個變量,而是一組變量。
那麼可以採用其他方式? 它可以像改變W的值一樣簡單,看看我們是否得到一個較低的值或不是以前的W值。
但是對W中的所有變量取一個隨機值可能是一個單調乏味的任務。因此我們首先採用W的隨機值並且看到f(W)的輸出和每個變量的所有值的斜率(我們通過部分區分函數和第i個變量並放置第i個變量的值)。
現在,一旦我們知道空間中該點處的斜率,我們會向斜坡下方進一步移動(這個小因數在梯度下降中被定義爲α),並且這一直持續下去,直到斜率給出相反的值我們已經達到圖中的最低點(具有n維的圖,函數vs W,W是n個變量的集合)。
- 1. 反向傳播算法 - 誤差導數計算
- 2. 反向傳播算法
- 3. 傳遞函數不計算
- 4. 計算傳遞給函數
- 5. 計算傳遞函數係數
- 6. 反向傳播算法實現
- 7. 調試反向傳播算法
- 8. Knockoutjs計算傳遞參數
- 9. 計算而傳遞參數
- 10. 如何計算傳遞函數矩陣的符號計算?
- 11. 推導反向傳播算法的方程
- 12. 是反向傳播算法獨立算法
- 13. 有人可以向我解釋反向傳播算法嗎?
- 14. 什麼是反向傳播?
- 15. PHP函數計算傳遞給函數的參數數量
- 16. 我們什麼時候需要和何時傳遞函數?
- 17. 在AngularJS的$ http.post中作爲參數傳遞時未計算的計算屬性
- 18. 反向傳播算法(Matlab的):輸出值被飽和爲1
- 19. 爲什麼函數調用時無法正確傳遞參數?
- 20. 反應導航傳播運算符
- 21. 一個函數中的計算值;將它們傳遞給另一個函數
- 22. 爲什麼在傳遞迴調時,此對象調用函數的Javascript setInterval不計算內部參數?
- 23. 爲什麼我們想要將類傳遞給函數
- 24. 計算作爲數字傳遞小時的總工作時間
- 25. 計算傳遞閉
- 26. 行爲遞增運算符作爲參數傳遞給函數
- 27. 爲什麼我在AngularJs中的http.delete時無法傳遞參數?
- 28. 構造函數鏈接傳遞參數的計算值
- 29. 如何將參數傳遞給Knockout中的計算函數?
- 30. 爲什麼count($ array)函數不計算?