Chap2
反向轉(zhuǎn)播算法的目的是計算成本函數(shù)對于權(quán)重和偏置的偏導數(shù)资锰。
反向傳播的兩個前提假設(shè):
1. 成本函數(shù)可以寫成每個樣本成本的平均形式东臀,因為反向傳播實際上是先計算針對每個樣本的偏導數(shù)硫兰,再將他們平均篓冲。
2. 成本函數(shù)可以被看作是實際輸出的函數(shù)。
反向傳播的四個基本方程:
1. 最后一層誤差計算方程
2. 誤差的向前傳播方程
3. 針對偏置的梯度計算
4. 針對權(quán)重的梯度計算
思考過程實際上從4到1瘪弓,計算過程是從1到4垫蛆。反向傳播是怎樣的一個思考過程?實際我們想求的是損失函數(shù)對權(quán)重和偏置的梯度腺怯,而在計算過程中袱饭,我們發(fā)現(xiàn),權(quán)重和偏置的偏導取決于當前層的偏C偏z瓢喉,那就想計算當前層的偏C偏z宁赤。而在計算當前層的偏C偏z的時候,又發(fā)現(xiàn)它們?nèi)Q于后一層的偏C偏z栓票,一直推到輸出層决左。而輸出層的偏C偏z是可以顯式地計出來的,因此就總結(jié)出了反向傳播算法走贪。
反向傳播的代碼邏輯:
1. 輸入一批樣本
2. 對于每個樣本佛猛,計算
????? a:前向傳播:計算每個神經(jīng)元的加權(quán)和和activation
????? b:計算輸出神經(jīng)元誤差
????? c:利用基本方程反向傳播誤差
3. 梯度下降:對于每一個w利用誤差和activation計算權(quán)重梯度,然后每一個樣本的梯度平均值作為總梯度坠狡。利用誤差計算偏置梯度继找,同樣利用梯度平均值計算總梯度,然后更新權(quán)重和偏置逃沿。
之所以用偏c偏z而不是偏c偏a是因為發(fā)現(xiàn)在計算過程中前者更方便婴渡。為什么更方便?因為如果用偏c偏a來表示的話凯亮,中間相當于嵌套了一層a=sigma(z)边臼,更復雜。現(xiàn)在的后兩個方程實際上是相當于把這個嵌套分成了兩步假消。
為何反向傳播算法更好柠并?與之相比的傳統(tǒng)算法計算梯度需要計算函數(shù)的差分,意味著要計算函數(shù)值,而每改變一次w或b就要重新計算一次函數(shù)值臼予,如果有一百萬個w鸣戴,意味著為了計算梯度要計算一百萬次函數(shù)值,這太慢了粘拾。而實際上窄锅,各個w的梯度之間是相關(guān)的,可以通過鏈式法則一次性解決半哟,這就大大減少了計算量酬滤。