4 层神经网络:设置 L 为第几层,n 为每一层的个数,L=[L1,L2,L3,L4],n=[5,5,3,1]

1、前向传播
(1)单个样本向量表示
每层经过 线性计算 和 **函数 两步计算
z[1]=W[1]x+b[1],a[1]=g[1](z[1]),输入x,输出a[1];
z[2]=W[2]a[1]+b[2],a[2]=g[2](z[2]),输入a[1],输出a[2];
z[3]=W[3]a[2]+b[3],a[3]=g[3](z[3]),输入a[2],输出a[3];
z[4]=W[4]a[3]+b[4],a[4]=σ(z[4]),输入a[3],输出a[4];
其中g[L]、σ为激活函数。
上式的通用公式表达:
z[L]=W[L]a[L−1]+b[L],a[L]=g[L](z[L]),原始输入x=a[0],输入a[L−1],输出a[L]
(2)m个样本的向量表示
Z[L]=W[L]A[L−1]+b[L],A[L]=g[L](Z[L]),原始输入X=A[0],输入a[L−1],输出a[L]
2、反向传播
通过一个图来表示反向的过程

(1)单个训练样本的反向传播
dZ[l]=∂Z[l]∂J=∂a[l]∂J⋅∂Z[l]∂a[l]=da[l]⋅g[l]′(Z[l])
dW[l]=∂W[l]∂J=∂a[l]∂J⋅∂Z[l]∂a[l]⋅∂W[l]∂Z[l]=dZ[l]⋅a[l−1]
db[l]=∂b[l]∂J=∂a[l]∂J⋅∂Z[l]∂a[l]⋅∂b[l]∂Z[l]=dZ[l]
da[l−1]=∂a[l]∂J=W[l]T⋅dZ[l]
- dW[l]、db[l]用于该层参数更新;da[l]用于向前层反向传播误差信号
- 单个训练样本,参数W和b的更新公式为:
W:=W−α∂W∂J(W,b);b:=b−α∂b∂J(W,b),其中J(W,b)为损失函数,α为学习率/步长。
(2)全体训练样本的反向传播
dZ[l]=dA[l]⋅g[l]′(Z[l])
dW[l]=m1dZ[l]⋅A[l−1]T
db[l]=m1np.sum(dZ[l],axis=1)
dA[l−1]=W[l]T⋅dZ[l]
- 全体训练样本,参数W和b的更新公式为:
W:=W−αdW,b:=b−αdb