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

来源:互联网 发布:手机淘宝抢购页面刷新 编辑:程序博客网 时间:2024/06/05 11:43

假设,该样本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]

阅读全文
0 0
原创粉丝点击