一、深层神经网络
浅层神经网络和深层神经只是描述了神经网络的复杂程度。如逻辑回归就是一个只有一层的浅神经网络,下图是一个4层的深层神经网络
一些符号:
n[l] : 第l层的神经节点数
a[l] : 第l层的激活函数的输出
n[l] = nx
a[l] = X
二、前向和反向传播
对于第l层的前向传播:
输入:a[l-1]
输出:a[l],缓存z[l]
对于第l层的反向传播:
输入:da[l]
输出:da[l-1],dW[l],db[l]
向量化实现:
最后一层的反向传播dA[l]是损失函数对A的求导,
当问题是二元分类时:
多个样本时:
三、深层网络中的前向传播
对于4层神经网络的前向传播如下图所示:
总结后,正向传播公式:
向量化实现将上图的向量换成矩阵即可。如下图:
四、核对矩阵的维数
在实现过程应该在草纸上罗列各矩阵的维数:
写出各层的传导公式,标出或推导出正确的矩阵维数,公式左右维度要一致。
五、为什么要使用深层表示
为什么深层神经网络这么好用?先举一个例子:
如上图的脸部识别,神经网络的第一层可以看作是边缘检测函数,检测图像中的脸部边缘;第二层可以看作检测人物的脸部特征,嘴巴、鼻子和眼睛;第三层看作人物特脸部征的组合。
整个的过程是从比较小的细节入手,然后再一步步到更大更复杂的区域
。
六、搭建深层神经网络块
现在关注于深层神经网络的第l层,它的前向传播和反向传播如下图所示:
逻辑图如下:
正向传播中,第l层输入的是a[l-1],节点的边存储了w[l]和b[l],通过输入a[l-1]、权重w[l]和偏置b[l]计算输出a[l]。
反向传播中,第l层输入是da[l],可以分别对z、w和b进行求导,计算出dz[l]、dw[l]和db[l];这里的dz[l]就是da[l-1]。
【技巧:在反向传播编程实现中,将dz缓存下来会很方便】
总体过程:正向传播特征,反向传播误差
七、参数与超参数
在模型训练中使用到的参数:
-
W[1],b[1],W[2],b[2]……
-
学习率α,迭代次数iterations,隐藏层数L,隐藏层单元数n[i],激活函数的选择
2中的数字都需要我们来进行控制,这些数字实际上影响了最后的参数W和b。所以2中的参数都被称为超参数。
超参数的调整是一个迭代的过程,一开始都不知道什么是最好的选择,只有在实验后分析原因,选择合适的超参数使模型较优。