1. 引言
由浅到深的神经网络。
在实际应用中,是无法事先知道神经网络需要几层的,可以将层数当作超参数,通过交叉验证来确定需要几层。
- 符号标法与之前相同,不同的是多了一个表示层数的符号。如下图。
2. 正向传播
2.1 一个样本
与单隐层类似,可以得到如下的前向传播公式
2.2 个样本的训练集
所以无论是单样本还是训练集,都可以写成:
for i=1 to m:
2.3 矩阵维数检查
- : 要Debug程序,就要仔细系统的思考矩阵的维数!!!
- 在向量化过程不会改变维数的参数是.
的维数是,的维数是。函数的导数与函数有相同的维数,所以的维数与 的维数相同也是。所以的维数与 的维数相同也是。该维数在多个样本的向量化过程中不会发生变化,即与样本个数无关。 - 在向量化过程会改变维数的参数是
一个样本时,的维数是,的维数是,的维数是。个样本向量化之后变成了,的维数是,的维数是,的维数是。同理,的维数也是。
3. 为什么使用深层表示
- 神经网络可以不大(小或者不大指的是隐藏单元的数量,即每层的单元数),但得有深度,得有比较多的隐藏层。
- 以人脸检测,人脸识别为例,深度神经网络先识别简单特征,然后组合起来识别较复杂的特征,由简单到复杂。
- 神经网络有效的另一种说法,与电路元件依靠不同的逻辑门计算函数相似,如果不用多个隐层,那么单元数就会呈指数增长。如下图所示,左侧只需要个隐层,右侧需要即个隐藏单元。
- 深度学习其实就是多隐层神经网络,是一种名称的再包装。
- 解决实际问题时,不必要一上来就用深度神经网络,可以将隐层数看作是超参数,从Logistic回归开始,到一到二个隐层的神经网络,慢慢调整,找到最佳效果。虽然不能否认的是很多问题确实是多隐层神经网络的效果更好。
4. 搭建深层神经网络
如下图所示的神经网络,第层需要的计算有:
- 前向传播
- 输入:
- 输出;
- 计算过程:
- 缓存:
- 后向传播
- 输入:
- 输出:
- 计算过程:为了简便说明,只给出相邻的两步计算公式,以看清楚计算过程
根据公式
不妨假设就是输出,则有损失函数,从而可以得到,由第步的迭代公式,可以计算,进而计算,并可看出,每一步如果像计算导数,都得先有对的导数,再进入第步迭代,依次前推。 - 缓存:
即如下图所示
整个神经网络的计算如下图:
- 前向与后向传播的计算公式:
- 前向传播
- 后向传播
.
.
.
- 若做的是二分类问题,那么是sigmoid函数,从而有。
- 前向传播
- 算法的复杂性来源于数据,而不是代码!
5. 参数与超参数
- 参数的参数就是超参数。
- 一个原则: Try!Try!Try!