4.1 深层神经网络(Deep L-layer neural network)
L−layerNN,则包含了L−1个隐藏层,最后的L层是输出层
a[l]和W[l]中的上标l都是从1开始的,l=1,⋯,L
输入x记为a[0],把输出层y^记为a[L]
X:(12288,209)(with m=209 examples)
| | | | |
| (n[1],12288) | (n[1],1) | Z[1]=W[1]X+b[1] | (n[1],209) |
| (n[2],n[1]) | (n[2],1) | Z[2]=W[2]A[1]+b[2] | (n[2],209) |
| | | | |
| (n[L−1],n[L−2]) | (n[L−1],1) | Z[L−1]=W[L−1]A[L−2]+b[L−1] | (n[L−1],209) |
| (n[L],n[L−1]) | (n[L],1) | Z[L]=W[L]A[L−1]+b[L] | (n[L],209) |
4.2 前向传播和反向传播(Forward and backward propagation)
正向传播过程
z[l]=W[l]a[l−1]+b[l] a[l]=g[l](z[l]) m个训练样本,向量化形式为:
Z[l]=W[l]A[l−1]+b[l] A[l]=g[l](Z[l]) 反向传播过程
dz[l]=da[l]∗g[l]′(z[l]) dW[l]=dz[l]⋅a[l−1]T db[l]=dz[l] da[l−1]=W[l]T⋅dz[l] 得到:
dz[l]=W[l+1]T⋅dz[l+1]∗g[l]′(z[l]) m个训练样本,向量化形式为:
dZ[l]=dA[l]∗g[l]′(Z[l]) dW[l]=m1dZ[l]⋅A[l−1]T db[l]=m1np.sum(dZ[l],axis=1,keepdim=True) dA[l−1]=W[l]T⋅dZ[l] dZ[l]=W[l+1]T⋅dZ[l+1]∗g[l]′(Z[l]) 4.3 深层网络中的前向传播(Forward propagation in a Deep Network )
对于第l层,其正向传播过程的Z[l]和A[l]可以表示为:
Z[l]=W[l]A[l−1]+b[l] A[l]=g[l](Z[l]) 其中l=1,⋯,L
4.4 为什么使用深层表示?(Why deep representations?)
人脸识别
随着层数由浅到深,神经网络提取的特征也是从边缘到局部特征到整体,由简单到复杂。如果隐藏层足够多,那么能够提取的特征就越丰富、越复杂,模型的准确率就会越高。
语音识别模型
浅层的神经元能够检测一些简单的音调,较深的神经元能够检测出基本的音素,更深的神经元就能够检测出单词信息。如果网络够深,还能对短语、句子进行检测。
神经网络从左到右,神经元提取的特征从简单到复杂。特征复杂度与神经网络层数成正相关。特征越来越复杂,功能也越来越强大
深层网络另外一个优点:减少神经元个数,从而减少计算量
使用电路理论,计算逻辑输出:
y=x1⊕x2⊕x3⊕⋯⊕xn 对于这个逻辑运算,深度网络的结构是每层将前一层的两两单元进行异或,最后得到一个输出
整个深度网络的层数是log2(n),不包含输入层。总共使用的神经元个数为:
1+2+⋯+2log2(n)−1=1⋅1−21−2log2(n)=2log2(n)−1=n−1 输入个数是n,这种深层网络所需的神经元个数仅仅是n−1个
如果不用深层网络,使用单个隐藏层,需要的神经元个数将是指数级别那么大。由于包含了所有的逻辑位(0和1),则需要2n−1个神经元
处理同一逻辑问题,深层网络所需的神经元个数比浅层网络要少很多
4.5 搭建神经网络块(Building blocks of deep neural networks)
第l层的流程块图
对于神经网络所有层,整体的流程块图正向传播过程和反向传播过程如下所示:
4.6 参数 VS 超参数(Parameters vs Hyperparameters)
神经网络中的参数是W[l]和b[l]
超参数则是例如学习速率α,训练迭代次数N,神经网络层数L,各层神经元个数n[l],激活函数g(z)等
叫做超参数的原因是它们决定了参数W[l]和b[l]的值
如何设置最优的超参数:
通常的做法是选择超参数一定范围内的值,分别代入神经网络进行训练,测试cost function随着迭代次数增加的变化,根据结果选择cost function最小时对应的超参数值