1、L层神经网络
将浅层神经网络的隐藏层的层数增多之后,可以得到更深层的神经网络结构。下图是一个L=4层的神经网络示意图:
之前浅层网络中定义的符号,在深层网络中同样适用,如n[l]表示第 l层的神经元个数, g[l]表示第 l l l层的激活函数, } a[l]表示第 l层的输出值。
生成神经网络的前向传播通用表达式如下所示:
在检查神经网络参数的维度时,通用检查公式如下所示:
在反向传播时dw和 d b db db的维度分别和bw,b的维度相同。
在不使用向量化和使用向量化时的参数 z(Z),a(A)的维度如下所示:
其中m时训练样本的个数,当 l l l等于0时, n[0]表示特征数量。
2、深层网络提出的原因
深层神经网络提出的原因是,使用浅层网络神经元来识别简单信息,之后将简单信息进行组合成为,由更深层次的神经元来识别复杂信息:
2.1 Lth层正向/反向传播的计算过程和输入/输出参数
在正向传播时, Lth层的输入参数为上一层的输出结果 al−1,系数 w(l)和偏置 b(l),输出结果首先计算 z(l)=w(l)al−1+b(l),之后得到 L t h L^{th} Lth层的输出a(l)=g(l)(z(l))。
在反向传播时, Lth层的输入参数为后一层计算的梯度 da(l)和一个cachez(l);输出结果为:d w(l),d b(l)
所有神经网络层的正向和反向传播的计算过程如下图所示:
反向传播的计算公式如下图所示:
其中,dal=−ay+1−a1−y
3、参数和超参数
神经网络的参数包括: w[1],b[1],w[2],b[2],w[3],b[3],...,这些参数是通过神经网络自己进行学习的;还有一些超参数(hyper parameters),需要人为地进行设定,如学习率 α,迭代次数 #iteration,隐藏层的数量L,隐藏单元的数量: n[1],n[2],...,激活函数的选择,如 sigmoid, ReLU, tanh,还有一些其他数据相关的超参数,如momentum,minibatch size,regulation terms, etc.
涉及到这么多参数,应用深度学习是一个比较经验主义的过程,在想到一个想法之后,设计代码进行实现,之后进行试验验证,之后再进行经验参数调整,如此循环最终得到比较好的效果。