Gradient Descent和Back propagation在做什么?
Gradient Descent梯度下降
實際上你要用一個Gradient Descent的方法來train一個neural network的話你應該要怎么做?
到底實際上在train neural network的時候Back propagation這個algorithm到底是怎么運作的?這個Back propagation是怎么樣 neural network training比較有效率的?
---------------------------------------------------------------------------------------------
Gradient Descent這個方法就是:假設你的network有一大堆參數,一堆w一堆b,先選擇一個初始的參數然后計算這個對你的loss function的Gradient即,也就是計算每一個network里邊的參數等等對你的的偏微分,
是初始化的。
計算出這個東西以后,這個Gradient其實是一個vector,計算出這個vector以后,你就可以去更新你的參數,?
是更新出來的。
?然后這個process就繼續的持續下去,再算一遍的gradient,然后減掉gradient即update成,依次計算:
?
?在neural network里邊當你用Gradient Descent方法的時候,跟我們在做Logistic Regression還有Linear Regression等等沒有太大差別,但是最大的問題是在neural network里面,我們有非常多的參數,所以下面的vector是非常長的,
這可能是一個上百萬維度的vector,
所以現在最大的問題是你要如何有效的把這個百萬維的vectot有效的把它計算出來,那么這個時候就是Back propagation在做的事情;所以Back propagation并不是一個和Gradient Descent不同的training的方法,他就是Gradient Descent,他只是一個比較有效的演算法,讓你在計算這個gradient,這個vector的時候是可以比較有效率的把這個vector計算出來;
在使用Back propagation沒有特別高深的數學,唯一需要知道的就是Chain Rule;
?------------------------------------------------------------------------------------------
前向傳遞輸入信號直至輸出產生誤差,反向傳播誤差信息更新權重矩陣。其根本就是求偏導以及高數中的鏈式法則;
梯度下降與反向傳播
梯度下降 是 找損失函數極小值的一種方法,
反向傳播 是 求解梯度的一種方法。
關于損失函數:
在訓練階段,深度神經網絡經過前向傳播之后,得到的預測值與先前給出真實值之間存在差距。我們可以使用損失函數來體現這種差距。損失函數的作用可以理解為:當前向傳播得到的預測值與真實值接近時,取較小值。反之取值增大。并且,損失函數應是以參數(w 權重, b 偏置)為自變量的函數。
訓練神經網絡,“訓練”的含義:
它是指通過輸入大量訓練數據,使得神經網絡中的各參數(w 權重, b 偏置)不斷調整“學習”到一個合適的值。使得損失函數最小。
如何訓練?
采用 梯度下降Gradient Descent?的方式,一點點地調整參數,找損失函數的極小值(最小值)
為啥用梯度下降?
由淺入深,我們最容易想到的調整參數(權重和偏置)是窮舉。即取遍參數的所有可能取值,比較在不同取值情況下得到的損失函數的值,即可得到使損失函數取值最小時的參數值。然而這種方法顯然是不可取的。因為在深度神經網絡中,參數的數量是一個可怕的數字,動輒上萬,十幾萬。并且,其取值有時是十分靈活的,甚至精確到小數點后若干位。若使用窮舉法,將會造成一個幾乎不可能實現的計算量。
第二個想到的方法就是微分求導。通過將損失函數進行全微分,取全微分方程為零或較小的點,即可得到理想參數。(補充:損失函數取下凸函數,才能使得此方法可行。現實中選取的各種損失函數大多也正是如此。)可面對神經網絡中龐大的參數總量,純數學方法幾乎是不可能直接得到微分零點的。
因此我們使用了梯度下降法。既然無法直接獲得該點,那么我們就想要一步一步逼近該點。一個常見的形象理解是,爬山時一步一步朝著坡度最陡的山坡往下,即可到達山谷最底部。(至于為何不能閃現到谷底,原因是參數數量龐大,表達式復雜,無法直接計算)我們都知道,向量場的梯度指向的方向是其函數值上升最快的方向,也即其反方向是下降最快的方向。計算梯度的方式就是求偏導。
這里需要引入一個步長的概念。個人理解是:此梯度對參數當前一輪學習的影響程度。步長越大,此梯度影響越大。若以平面直角坐標系中的函數舉例,若初始參數x=10,步長為1 。那么參數需要調整十次才能到達谷底。若步長為5,則只需2次。若為步長為11,則永遠無法到達真正的谷底。
深度學習筆記三:反向傳播(backpropagation)算法_謝小小XH-CSDN博客_backpropagati
總結
以上是生活随笔為你收集整理的Gradient Descent和Back propagation在做什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensor VS NumPy
- 下一篇: (一)神经网络训练不起来怎么办:局部最小