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