深度学习 前向后向传播公式推导

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/laojiaqi/article/details/78133483

假设,该样本3种特征,分别为 x1 , x2 , x3 ,

1.1单个样本,用标量表示

那么对于向前传播的公式可以得到:
z=w1x1+w2x2+w3x3+b ,

激活函数用( activation function ):
a=g(z) (其中 g 可以为 relu 或者 sigmoid 函数)

损耗函数( cost function ):
(a,y)=ylog(a)(1y)log(1a)

反向传播需要用到的导数可以为:

dz=dag(z)
dw1=x1dz
dw3=x2dz
dw2=x3dz
db=dz
dx1=w1dz
dx2=w2dz
dx3=w3dz

根据以上公式就可以对 w,b 进行梯度下降的计算( a 为学习速率)
w=wadw
b=badb

1.2 多个样本,向量表示

假设向量
W=w11w12w13w21w22w23w31w32w33...wh1wh2wh3 维度为 h3 , h 为隐藏层节点数,下同,
并且 X=x11x21...xm1x12x22...xm2x13x23...xm3 ,维度为 3m

损耗函数为

J=1mi=0m(y(i)log(a[L](i))+(1y(i))log(1a[L](i)))

那么对于向前传播的公式可以得到:
Z=WX+B

激活函数用( activation function ):
A=g(Z)

损耗函数( cost function ):
(A,Y)=Ylog(A)(1Y)log(1Y)

从上面看,和之前用标量表示的方法形式上很相似,再来看下用反向传播需要用到的导数

dZ=dAg(Z)
dZ=dz11dz21dz31...dzm1dz12dz22dz32...dzm2...dz1hdz2hdz3h...dzmh

Z矩阵的维度为 hm

下面计算 dW ,这个略有点复杂,先来看下单个 dw11 ,由于有m个样本,则 dw11=1/m(x11dz11+x21dz21+x31dz31+...+xm1dzm1) ,那么
dW=1/mi=1mdZXT ,为什么不是 XdZT ?是因为 W 的维度为 hm ,
同理可以得到
dB=1/mi=1mdZ ,
再来看下 dX 如何计算,其实和计算 dW 非常相似,只不过现在把 X 看成是自变量,来看下 dx11 的计算公式
dx11=(w11dz11+w21dz21+...+wh1dzh1)
所以 dX=WTdZ

下面推广到对于L层的公式

dW[l]=W[l]=1mdZ[l]A[l1]T

db[l]=b[l]=1mi=1mdZ[l](i)

dA[l1]=A[l1]=W[l]TdZ[l]

猜你喜欢

转载自blog.csdn.net/laojiaqi/article/details/78133483