深度学习与计算机视觉(四)反向传播及其直观理解
四、反向傳播及其直觀理解
4.1 引言
問題描述和動機(jī):
大家都知道,其實(shí)我們就是在給定的圖像像素向量x和對應(yīng)的函數(shù)f(x)f(x),然后我們希望能夠計算ff在x上的梯度?f(x)?f(x)
之所以要解決這個問題,是因為在神經(jīng)網(wǎng)絡(luò)中,ff對應(yīng)損失函數(shù)LL,而輸入xx則對應(yīng)訓(xùn)練樣本數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)的權(quán)重WW。通常我們認(rèn)為訓(xùn)練數(shù)據(jù)是給定的,而權(quán)重是我們可以控制的變量。因此我們?yōu)榱烁聶?quán)重的等參數(shù),使得損失函數(shù)值最小,我們通常是計算f 對參數(shù)W,b 的梯度。
4.2 高數(shù)梯度 、偏導(dǎo)基礎(chǔ)
假如f(x,y)=xyf(x,y)=xy,那么我們可以求這個函數(shù)對xx和yy的偏導(dǎo):
f(x,y)=xy→?f?x=y,?f?y=xf(x,y)=xy→?f?x=y,?f?y=x
解釋:偏導(dǎo)數(shù)的含義是一個函數(shù)在給定變量所在維度,當(dāng)前點(diǎn)附近的一個變化率,也就是:
df(x)dx=limh→0f(x+h)?f(x)hdf(x)dx=limh→0f(x+h)?f(x)h
每個維度/變量上的偏導(dǎo),表示整個函數(shù)表達(dá)式,在這個值上的『敏感度』。
我們說的梯度?f?f其實(shí)是一個偏導(dǎo)組成的向量,比如我們有?f=[?f?x,?f?y]=[y,x]?f=[?f?x,?f?y]=[y,x] 。即使嚴(yán)格意義上來說梯度是一個向量,但是大多數(shù)情況下,我們還是習(xí)慣直呼『x上的梯度』,而不是『x上的偏導(dǎo)』
4.3 復(fù)雜函數(shù)偏導(dǎo)的鏈?zhǔn)椒▌t
假設(shè)有一個較為復(fù)雜一點(diǎn)的函數(shù),比如f(x,y,z)=(x+y)zf(x,y,z)=(x+y)z,雖然我們可以直接求偏導(dǎo),但是我們用一個非直接的思路去求解一下偏導(dǎo),以幫助我們直觀理解反向傳播中,如果我們用換元法,把函數(shù)拆分為兩部分,q=x+yq=x+y和f=qzf=qz,對于這兩個部分,我們知道如何求解其變量上的偏導(dǎo):
當(dāng)然q是我們設(shè)定的一個變量,不關(guān)心其偏導(dǎo)值。
那『鏈?zhǔn)椒▌t』告訴我們一個對上述偏導(dǎo)公式『串聯(lián)』的方式,得到我們感興趣的偏導(dǎo)數(shù)
?f?x=?f?q??q?x?f?x=?f?q??q?x x = -2; y = 5; z = -4# 前向計算 q = x + y # q becomes 3 f = q * z # f becomes -12# 類反向傳播: # 先算到了 f = q * z dfdz = q # df/dz = q dfdq = z # df/dq = z # 再算到了 q = x + y dfdx = 1.0 * dfdq # dq/dx = 1 恩,鏈?zhǔn)椒▌t dfdy = 1.0 * dfdq # dq/dy = 1鏈?zhǔn)椒▌t的結(jié)果是,只剩下我們感興趣的[dfdx,dfdy,dfdz],也就是原函數(shù)在x,y,z上的偏導(dǎo)。這是一個簡單的例子,之后的程序里面我們?yōu)榱撕啙?#xff0c;不會完整寫出dfdq,而是用dq代替。
以下是這個計算的示意圖:
4.4 反向傳播的直觀理解
反向傳播的過程,實(shí)際上是一個由局部到全部的精妙過程。比如上面的電路圖中,其實(shí)每一個『門』在拿到輸入之后,都能計算2個東西:
輸出值
對應(yīng)輸入和輸出的局部梯度
而且很明顯,每個門在進(jìn)行這個計算的時候是完全獨(dú)立的,不需要對電路圖中其他的結(jié)構(gòu)有了解。然而,在整個前向傳輸過程結(jié)束之后,在反向傳播過程中,每個門卻能逐步累積計算出它在整個電路輸出上的梯度。
『鏈?zhǔn)椒▌t』告訴我們每一個門接收到后向傳來的梯度,同時用它乘以自己算出的對每個輸入的局部梯度,接著往后傳。
以上面的圖為例,來解釋一下這個過程。加法門接收到輸入[-2, 5]同時輸出結(jié)果3。因為加法操作對兩個輸入的偏導(dǎo)都應(yīng)該是1。電路后續(xù)的乘法部分算出最終結(jié)果-12。在反向傳播過程中,鏈?zhǔn)椒▌t是這樣做的:加法操作的輸出3,在最后的乘法操作中,獲得的梯度為-4,如果把整個網(wǎng)絡(luò)擬人化,我們可以認(rèn)為這代表著網(wǎng)絡(luò)『想要』加法操作的結(jié)果小一點(diǎn),而且是以4*的強(qiáng)度來減小。加法操作的門獲得這個梯度-4以后,把它分別乘以本地的兩個梯度(加法的偏導(dǎo)都是1),1*-4=-4。如果輸入x減小,那加法門的輸出也會減小,這樣乘法輸出會相應(yīng)的增加。
反向傳播,可以看做網(wǎng)絡(luò)中門與門之間的『關(guān)聯(lián)對話』,它們『想要』自己的輸出更大還是更小(以多大的幅度),從而讓最后的輸出結(jié)果更大。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的深度学习与计算机视觉(四)反向传播及其直观理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公积金怎么用来装修?
- 下一篇: 深度学习基础知识介绍