文章目录
1 为什么使用深层网络
对于人脸识别等应用,神经网络的第一层从原始图片中提取人脸的轮廓和边缘,每个神经元学习到不同边缘的信息;网络的第二层将第一层学得的边缘信息组合起来,形成人脸的一些局部的特征,例如眼睛、嘴巴等;后面的几层逐步将上一层的特征组合起来,形成人脸的模样。随着神经网络层数的增加,特征也从原来的边缘逐步扩展为人脸的整体,由整体到局部,由简单到复杂。层数越多,那么模型学习的效果也就越精确。
随着神经网络的深度加深,模型能学习到更加复杂的问题,功能也更加强大。
2 四层网络的前向传播与反向传播
在这里首先对每层的符号进行一个确定,我们设置L为第几层,n为每一层的个数,L=[L1, L2, L3, L4]
,n=[5, 5, 3, 1]
2.1 前向传播
首先还是以单个样本来进行表示,每层经过线性计算和激活函数两步计算
z [ 1 ] = W [ 1 ] x + b [ 1 ] , a [ 1 ] = g [ 1 ] ( z [ 1 ] ) , 输 入 x , 输 出 a [ 1 ] z^{[1]} = W^{[1]}x+b^{[1]},a^{[1]}=g^{[1]}(z^{[1]}),输入x,输出a^{[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^{[2]} = W^{[2]}a^{[1]}+b^{[2]},a^{[2]}=g^{[2]}(z^{[2]}),输入a^{[1]},输出a^{[2]} 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^{[3]} = W^{[3]}a^{[2]}+b^{[3]},a^{[3]}=g^{[3]}(z^{[3]}),输入a^{[2]},输出a^{[3]} 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 ] z^{[4]} = W^{[4]}a^{[3]}+b^{[4]},a^{[4]}=\sigma(z^{[4]}),输入a^{[3]},输出a^{[4]} z[4]=W[4]a[3]+b[4],a[4]=σ(z[4]),输入a[3],输出a[4]
我们将上式简单的用通用公式表达出来,x = a[0]
z [ L ] = W [ L ] a [ L − 1 ] + b [ L ] , a [ L ] = g [ L ] ( z [ L ] ) , 输 入 a [ L − 1 ] , 输 出 a [ L ] z^{[L]} = W^{[L]}a^{[L-1]}+b^{[L]},a^{[L]}=g^{[L]}(z^{[L]}),输入a^{[L-1]},输出a^{[L]} z[L]=W[L]a[L−1]+b[L],a[L]=g[L](z[L]),输入a[L−1],输出a[L]
那么m个样本的向量表示:
Z [ L ] = W [ L ] A [ L − 1 ] + b [ L ] , A [ L ] = g [ L ] ( Z [ L ] ) , 输 入 A [ L − 1 ] , 输 出 A [ L ] Z^{[L]} = W^{[L]}A^{[L-1]}+b^{[L]},A^{[L]}=g^{[L]}(Z^{[L]}),输入A^{[L-1]},输出A^{[L]} Z[L]=W[L]A[L−1]+b[L],A[L]=g[L](Z[L]),输入A[L−1],输出A[L]
2.2 反向传播
因为涉及到的层数较多,所以我们通过一个图来表示反向的过程
- 反向传播的结果
单个样本的反向传播:
d Z [ l ] = d J d a [ l ] d a [ l ] d Z [ l ] = d a [ l ] ∗ g [ l ] ′ ( Z [ l ] ) dZ^{[l]}=\frac{dJ}{da^{[l]}}\frac{da^{[l]}}{dZ^{[l]}}=da^{[l]}*g^{[l]}{'}(Z^{[l]}) dZ[l]=da[l]dJd