1. 深层神经网络(Deep L-layer neural network )
2. 深层网络中的前向传播(Forward propagation in a Deep Network)
-
单个样本的前向传播(向量化)
对于上图的神经网络结构:
-
m个样本前向传播(向量化)
对单个样本前向传播的向量进行堆叠,形成相应的矩阵。对于上图的神经网络结构:
对于一般的神经网络结构:
上述过程在编码中可以表示为一个for循环:
注意:虽然之前讲过在代码中应尽可能避免显式for循环,不过上述情况可以使用显式for循环,因为它无法用向量化代替
3.核对矩阵的维数
在实现神经网络前向/反向传播时,可以记录每一个步运算前后矩阵或向量的维度,使维度对应起来,确保正确性。
以下图的神经网络结构(L=5)为例进行演示:
- 单个样本的前向传播(向量化)
其他前向传播的公式也可以按上述方法进行矩阵/向量的维度核对,
同维。
反向传播也有类似的维度核对,因为, dvar,var是同维的,如:
- m个样本的前向传播(向量化)
注意在加偏置参数时,要用到Python 中的广播,先把b{[l]}从(n{[l]},1)扩展为(n{[l]},m)再运算,相当于为每一列都加上b{[l]}。其他前向传播的公式也可以按上述方法进行矩阵/向量的维度核对,A{[l]},Z{[l]}同维。
反向传播也有类似的维度核对,因为dvar,var是同维的,如:
4.为什么使用深层表示
为什么深层网络(多隐层神经网络)会有效?本小节给出一些直观解释:
- Intuition about deep representation
首先看一个人脸检测的例子:
输入层是人脸图片的特征,第一个隐层可能做的工作是检测图像的边缘特征(边缘像素点);第二个隐层对第一个隐层检测的边缘特征进行组合,得到一些局部特征,如眼,鼻子等;第三个隐层再对第二个隐层检测的局部特征进行组合,得到全局特征,如人脸。由此,通过深层网络一步步实现从检测简单特征到复杂特征。
这种从简单到复杂的金字塔形的结构也可以用于其他方面,如语音识别:
5.搭建深层神经网络块
- 前向/反向函数
对于一个深层网络,任意取出其中的某一层,得到其前向/反向传播的通式(对于单个样本):
流程图:
深层网络前向/反向传播流程图(单个样本)
先前向传播得到,计算损失函数L(a^{[L]},y);再反向传播,先计算出
,在继续利用链式法则逐步计算出
6. 前向传播和反向传播(Forward and backward propagation)
- 第l层的前向传播
- 第l层的反向传播
- 深层神经网络的前向/反向传播过程
前向传播:
反向传播:
有了初始项和通项,就可以不断循环,实现前向传播计算代价,反向传播计算每层参数的梯度,完成梯度下降,更新参数。
7.参数 VS 超参数
参数:
超参数:
学习率; 梯度下降迭代次数;隐层的数量;每个隐层单元的数量;激活函数的选择(ReLU、tanh等)
Mometum;mini-batch大小;正则化等(下一专项课程会讲)
超参数就是控制实际参数的参数,超参数的不同取值可以影响模型的实际参数。比如,取不同的学习率,模型最后的学到的参数是不同的。
-
如何选择超参数
应用深度学习的迭代过程:
可以系统的在一定范围内尝试不同的超参数取值,然后训练模型,在预留的交叉验证集上查看模型效果(准确率等指标,对于学习率的选择,也可以绘制代价随梯度下降迭代次数的变化曲线进行选择)。重复这个过程直到找到一组合适的超参数取值。在实践过程中,要经常并敢于尝试,时间长了就可以形成一种选择超参数的直觉。
随着深度学习的发展,不存在不变的超参数经验法则,任何一种经验法则可能在一段时间后就不再适用,还是得不断的尝试。
面临许多不同的超参数选择是深度学习的一个难点和不足,相信随着深度学习的发展,这个问题会有改观。
8.这和大脑有什么关系
深度学习和大脑实际上关联不大。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190523173437436.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njk3MTk2,size_16,color_FFFFFF,t_70)
深度学习的出现或许是受大脑的启发,早期会把深度学习和大脑作类比,比如可以把逻辑回归和大脑的单个神经元作类比。但是大脑神经元究竟是怎么学习,怎么优化,是否也会使用梯度下降,反向传播等算法还是使用一种完全不同的原理和算法,这是不得而知的。所以,现在很少把深度学习和大脑作类比。
不过深度学习的出现,确实带来了巨大的改变,在监督学习问题中,他可以学习到一个从的复杂灵活的函数,在各个领域都有很大作用和影响。
也许未来如果能真的发现大脑的学习算法,那么真正的人工智能就会诞生了。