吴恩达深度学习第一课--第二周神经网络基础作业上正反向传播推导

正向传播推导

第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,里面均是点乘(矩阵对应位置相乘)。

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