吳恩達深度學習第一課--第二週神經網絡基礎作業上正反向傳播推導

正向傳播推導

第i個樣本

輸入x,通過計算得到z,然後再使用sigmoid函數得到預測值y
輸入x(i)x^{(i)},通過計算得到z(i)z^{(i)},然後再使用sigmoid函數得到預測值y^(i)\hat y^{(i)},我們需要判斷y^(i)\hat y^{(i)}與實際值y的關係。
第一,先判斷維度,x(i)x^{(i)}(nx1),w(nx1),z(i)z^{(i)}(1x1),y^(i)\hat y^{(i)}(1x1)。
接着,我們來計算z(i)z^{(i)}=(x1(i)w1+x2(i)w2++xn(i)wn)+b(x_{1}^{(i)}w_1+x_{2}^{(i)}w_2+\dots+x_{n}^{(i)}w_n)+b=(w1,w2,,wm)(x1(i)x2(i)...xn(i))+b(w_1,w_2,\dots,w_m)\begin{pmatrix} x_{1}^{(i)}\\ x_{2}^{(i)}\\ .\\.\\.\\\\ x_{n}^{(i)} \end{pmatrix} +b
其中,b是實數,python中有廣播功能,能使b擴展到與前式相同的維度並計算。

向量化(從個別到整體)

爲了與上面做區別,字母大寫。
Z=(w1,w2,,wm)(x11x21xm1x12x22xm2.........x1nx2nxmn)+b=wTX+bZ=(w_1,w_2,\dots,w_m)\begin{pmatrix} x_{11}& x_{21} &\dots & x_{m1}\\ x_{12} & x_{22} &\dots & x_{m2}\\ .& . & &.\\ .& . & &.\\ .& .& &.\\ x_{1n}& x_{2n} &\dots & x_{mn}\\ \end{pmatrix} +b=w^TX+b
Y^=δ(Z)=sigmoid(Z)=(y^(1),y^(2),,y^(m))\hat Y=\delta(Z)=sigmoid(Z)=(\hat y^{(1)},\hat y^{(2)},\dots,\hat y^{(m)})
此處使用sigmoid函數將預測值y^\hat y分佈在0~1之間,即二分法。

判斷向量維度

上面的維度是單個樣本的維度,下面的維度是m個樣本中向量的維度;在矩陣運算中,維度尤其重要,後面判斷轉置和累和都是基於矩陣維度。
X(nxm),其中n是特徵,m是樣本,w(nx1),b實數(1x1),Z(1xm),Y^\hat Y(1xm)。

將原始數據進行整合

吳恩達老師提供了訓練集和測試集,其中,train_data_org=(129,64,64,3)–>(129,64x64x3)–>(129,12288)->(129,12288)T>(12288,129)(129,12288)^{T} ->(12288,129)
其中,給出的訓練集數據格式是129個樣本,64x64的寬高,3原色(紅、綠、藍),我們需要將後面三位數相乘作爲特徵,然後再轉置得到特徵x樣本即nxm。
接下來處理標籤,train_labels_org=(129,)–>(1,129)。
其中,給出的訓練集數據格式是129個樣本,我們需要使用numpy庫將其轉換爲需要的格式。

反向傳播推導

第i個樣本

輸入x,通過計算得到z,然後再使用sigmoid函數得到預測值y
依舊使用這幅圖片,我們令a=y^(i)=δ(z(i))=11+ez(i)\hat y^{(i)}=\delta(z^{(i)})=\frac{1}{1+e^{-z^{(i)}}}。其中,xix_i(nx1),w(nx1),z(i)z^{(i)}(1x1),y^(i)\hat y^{(i)}(1x1),b實數(1x1)。
由前向傳播函數得,Z=wTX+bw^TX+b。其中,X(nxm),w(nx1),b(1x1),Z(1xm),Y^\hat Y(1xm),A(1xm)。

損失函數

loss function:對一個樣本中計算預測值和實際值的差距。L(a,y)=ylog10a(1y)log10(1a)-ylog_{10}a-(1-y)log_{10}(1-a)

代價函數

costs function:對m個樣本中的w和b累加和後求均值。J(a,y)=J(w,b)=1mi=1m[yloga+(1y)log(1a)]-\frac{1}{m}\sum_{i=1}^m[y*loga+(1-y)*log(1-a)]

梯度下降法(實則是多元函數求微分)

L(a,y)w=L(a,y)aazzw\frac{\partial L(a,y)}{\partial w}=\frac{\partial L(a,y)}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial w}
L(a,y)b=L(a,y)aazzb\frac{\partial L(a,y)}{\partial b}=\frac{\partial L(a,y)}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial b}
其中,
L(a,y)a=ya(1y)(1)1a\frac{\partial L(a,y)}{\partial a}=-\frac{y}{a}-\frac{(1-y)(-1)}{1-a}
az=ez(1)(1+ez)2=ez(1+ez)2=11+ez1+ez11+ez=a(1a)\frac{\partial a}{\partial z}=-\frac{e^{-z}(-1)}{(1+e^z)^2}=\frac{e^{-z}}{(1+e^z)^2}=\frac{1}{1+e^z}\frac{1+e^z-1}{1+e^z}=a(1-a)
所以,
L(a,y)aaz=ay\frac{\partial L(a,y)}{\partial a}\frac{\partial a}{\partial z}=a-y
最後,
L(a,y)w=(ay)x>x(ay)L(a,y)b=ay>np.sum(ay)\frac{\partial L(a,y)}{\partial w}=(a-y)x-->x(a-y);\frac{\partial L(a,y)}{\partial b}=a-y-->np.sum(a-y)
做點解釋,前面採用微積分中的鏈式求導法則來算,後面根據維度做變換,L(a,y)w\frac{\partial L(a,y)}{\partial w}維度是nx1,L(a,y)b\frac{\partial L(a,y)}{\partial b}維度是1x1,a-y維度是1x1。

向量化(從個別到整體)

L(A,Y)w=X(AY)>X(AY)T\frac{\partial L(A,Y)}{\partial w}=X(A-Y)-->X(A-Y)^T
L(A,Y)b=AY>np.sum(AY)\frac{\partial L(A,Y)}{\partial b}=A-Y-->np.sum(A-Y)
其中,A-Y的維度是1xm。
W=Wα1mX(AY)W=W-\alpha\frac{1}{m}X(A-Y)
b=bα1mnp.sum(AY)b=b-\alpha\frac{1}{m}np.sum(A-Y)
J(w,b)=1mnp.sum[YlogA+(1Y)log(1A)]J(w,b)=-\frac{1}{m}np.sum[YlogA+(1-Y)log(1-A)]
其中,J(w,b)維度是1xm,裏面均是點乘(矩陣對應位置相乘)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章