實現反向傳播演算法的細節

2021-08-11 12:54:43 字數 2548 閱讀 8401

這兩天在看cs231n的課程,不得不感慨我國目前的教育制度確實很難培養出真正高階的人才,別人的課程有那麼多的精心準備的課件、筆記和供學生練習的任務和**,讓你從原理到工程的實現全過一遍,反觀我所在的所謂的雙一流大學的課程。。呵呵噠。。。不說閒話了,這裡講下反向傳播中的鏈式法則的實現細節。

我們以這個公式為例,實現反向傳播的鏈式法則,在神經網路中的反向傳播的方式是一樣的,只是函式比這個複雜些。

首先要把原函式拆解成與x,y有關的各部分的乘積與和,注意這裡一定要拆成和和積的形式,不然的話求解引數更新值dx,dy的時候規則就會不統一。

拆解如下,sigma(x)就是1/(1+e^(-x))這個函式

x = 3

# example values

y = -4

# forward pass

sigy = 1.0 / (1 + math.exp(-y)) # sigmoid in numerator #(1)

num = x + sigy # numerator #(2)

sigx = 1.0 / (1 + math.exp(-x)) # sigmoid in denominator #(3)

xpy = x + y #(4)

xpysqr = xpy**2

#(5)

den = sigx + xpysqr # denominator #(6)

invden = 1.0 / den #(7)

f = num * invden # done! #(8)

然後我們對拆解的部分根據鏈式法則倒著推回去

#對 f = num * invden 求偏導

dnum = invden # gradient on numerator #(8)

dinvden = num

#(8)

#這裡分成對num和對invden各自求偏導兩部分

#對 invden = 1.0 / den 求偏導

dden = (-1.0 / (den**2)) * dinvden #(7)

# 對den = sigx + xpysqr求偏導

dsigx = (1) * dden #(6)

dxpysqr = (1) * dden #(6)

# 對 xpysqr = xpy**2求偏導

dxpy = (2 * xpy) * dxpysqr #(5)

# 對xpy = x + y求偏導

dx = (1) * dxpy #(4)

dy = (1) * dxpy #(4)

# 對sigx = 1.0 / (1 + math.exp(-x))求偏導

dx += ((1 - sigx) * sigx) * dsigx # 注意這裡是+= #(3)

# 對 num = x + sigy 求偏導

dx += (1) * dnum #(2)

dsigy = (1) * dnum #(2)

# 對sigy = 1.0 / (1 + math.exp(-y))求偏導

dy += ((1 - sigy) * sigy) * dsigy #(1)

# 完成

這裡注意兩點:

1:不要忘記乘上原函式的值,這是鏈式法則的基本規則

2:注意多元函式求偏導,按照這種拆解的方法進行時,要將各個部分對變數更新的貢獻加起來,這就是為什麼我之前說要按乘積與和的形式進行拆解的原因,否則如果拆解的時候出現差的形式((a)+(-b)變成了(a)-(b)),那麼在計算引數值更新值的時候就會出現有的地方+=有的地方是-=的情況,很容易出錯。

反向傳播演算法實現

學習機器學習的過程中對梯度下降法有了一些了解,深度學習有乙個經典的反向傳播演算法,一直很想學習一下,今天讀到一本好書,裡面對於反向傳播演算法的解析很好理解。1 基本符號介紹 2 原始碼解析 coding utf 8 import numpy as np network sizes 3 4,2 初始化...

TensorFlow實現反向傳播演算法

反向傳播 bpn 演算法是神經網路中研究最多 使用最多的演算法之一,它用於將輸出層中的誤差傳播到隱藏層的神經元,然後用於更新權重。學習 bpn 演算法可以分成以下兩個過程 正向傳播 輸入被饋送到網路,訊號從輸入層通過隱藏層傳播到輸出層。在輸出層,計算誤差和損失函式。反向傳播 在反向傳播中,首先計算輸...

TensorFlow反向傳播演算法實現

tensorflow反向傳播演算法實現 反向傳播 bpn 演算法是神經網路中研究最多 使用最多的演算法之一,用於將輸出層中的誤差傳播到隱藏層的神經元,然後用於更新權重。學習 bpn 演算法可以分成以下兩個過程 正向傳播 輸入被饋送到網路,訊號從輸入層通過隱藏層傳播到輸出層。在輸出層,計算誤差和損失函...