第四周:深层神经网络(Deep Neural Networks)

4.1 深层神经网络(Deep L-layer neural network)

LlayerNNL-layer\quad NN,则包含了L1L-1个隐藏层,最后的LL层是输出层

a[l]a^{[l]}W[l]W^{[l]}中的上标ll都是从11开始的,l=1,,Ll=1,\cdots,L

输入xx记为a[0]a^{[0]}​​,把输出层y^\hat y记为a[L]a^{[L]}

XX(12288,209)(12288, 209)(with m=209m=209 examples)

Shape of W

Shape of b

Activation

Shape of Activation

Layer 1

(n[1],12288)(n^{[1]},12288)

(n[1],1)(n^{[1]},1)

Z[1]=W[1]X+b[1]Z^{[1]} = W^{[1]} X + b^{[1]}

(n[1],209)(n^{[1]},209)

Layer 2

(n[2],n[1])(n^{[2]}, n^{[1]})

(n[2],1)(n^{[2]},1)

Z[2]=W[2]A[1]+b[2]Z^{[2]} = W^{[2]} A^{[1]} + b^{[2]}

(n[2],209)(n^{[2]},209)

\vdots

\vdots

\vdots

\vdots

\vdots

Layer L-1

(n[L1],n[L2])(n^{[L-1]}, n^{[L-2]})

(n[L1],1)(n^{[L-1]}, 1)

Z[L1]=W[L1]A[L2]+b[L1]Z^{[L-1]} = W^{[L-1]} A^{[L-2]} + b^{[L-1]}

(n[L1],209)(n^{[L-1]}, 209)

Layer L

(n[L],n[L1])(n^{[L]}, n^{[L-1]})

(n[L],1)(n^{[L]}, 1)

Z[L]=W[L]A[L1]+b[L]Z^{[L]} = W^{[L]} A^{[L-1]} + b^{[L]}

(n[L],209)(n^{[L]}, 209)

4.2 前向传播和反向传播(Forward and backward propagation)

正向传播过程

z[l]=W[l]a[l1]+b[l]z^{[l]}=W^{[l]}a^{[l-1]}+b^{[l]}
a[l]=g[l](z[l])a^{[l]}=g^{[l]}(z^{[l]})

mm个训练样本,向量化形式为:

Z[l]=W[l]A[l1]+b[l]Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]}
A[l]=g[l](Z[l])A^{[l]}=g^{[l]}(Z^{[l]})

反向传播过程

dz[l]=da[l]g[l](z[l])dz^{[l]}=da^{[l]}\ast g^{[l]'}(z^{[l]})
dW[l]=dz[l]a[l1]TdW^{[l]}=dz^{[l]}\cdot {a^{[l-1]}}^T
db[l]=dz[l]db^{[l]}=dz^{[l]}
da[l1]=W[l]Tdz[l]da^{[l-1]}=W^{[l]T}\cdot dz^{[l]}

得到:

dz[l]=W[l+1]Tdz[l+1]g[l](z[l])dz^{[l]}=W^{[l+1]T}\cdot dz^{[l+1]}\ast g^{[l]'}(z^{[l]})

mm个训练样本,向量化形式为:

dZ[l]=dA[l]g[l](Z[l])dZ^{[l]}=dA^{[l]}\ast g^{[l]'}(Z^{[l]})
dW[l]=1mdZ[l]A[l1]TdW^{[l]}=\frac1mdZ^{[l]}\cdot A^{[l-1]T}
db[l]=1mnp.sum(dZ[l],axis=1,keepdim=True)db^{[l]}=\frac1mnp.sum(dZ^{[l]},axis=1,keepdim=True)
dA[l1]=W[l]TdZ[l]dA^{[l-1]}=W^{[l]T}\cdot dZ^{[l]}
dZ[l]=W[l+1]TdZ[l+1]g[l](Z[l])dZ^{[l]}=W^{[l+1]T}\cdot dZ^{[l+1]}\ast g^{[l]'}(Z^{[l]})

4.3 深层网络中的前向传播(Forward propagation in a Deep Network )

对于第ll层,其正向传播过程的Z[l]Z^{[l]}A[l]A^{[l]}可以表示为:

Z[l]=W[l]A[l1]+b[l]Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]}
A[l]=g[l](Z[l])A^{[l]}=g^{[l]}(Z^{[l]})

其中l=1,,Ll=1,\cdots,L

4.4 为什么使用深层表示?(Why deep representations?)

人脸识别

随着层数由浅到深,神经网络提取的特征也是从边缘到局部特征到整体,由简单到复杂。如果隐藏层足够多,那么能够提取的特征就越丰富、越复杂,模型的准确率就会越高。

语音识别模型

浅层的神经元能够检测一些简单的音调,较深的神经元能够检测出基本的音素,更深的神经元就能够检测出单词信息。如果网络够深,还能对短语、句子进行检测。

神经网络从左到右,神经元提取的特征从简单到复杂。特征复杂度与神经网络层数成正相关。特征越来越复杂,功能也越来越强大

深层网络另外一个优点:减少神经元个数,从而减少计算量

使用电路理论,计算逻辑输出:

y=x1x2x3xny=x_1\oplus x_2\oplus x_3\oplus\cdots\oplus x_n

对于这个逻辑运算,深度网络的结构是每层将前一层的两两单元进行异或,最后得到一个输出

整个深度网络的层数是log2(n)log_2(n),不包含输入层。总共使用的神经元个数为:

1+2++2log2(n)1=112log2(n)12=2log2(n)1=n11+2+\cdots+2^{log_2(n)-1}=1\cdot\frac{1-2^{log_2(n)}}{1-2}=2^{log_2(n)}-1=n-1

输入个数是nn,这种深层网络所需的神经元个数仅仅是n1n-1

如果不用深层网络,使用单个隐藏层,需要的神经元个数将是指数级别那么大。由于包含了所有的逻辑位(0011),则需要2n12^{n-1}个神经元

处理同一逻辑问题,深层网络所需的神经元个数比浅层网络要少很多

4.5 搭建神经网络块(Building blocks of deep neural networks)

ll层的流程块图

对于神经网络所有层,整体的流程块图正向传播过程和反向传播过程如下所示:

4.6 参数 VS 超参数(Parameters vs Hyperparameters)

神经网络中的参数是W[l]W^{[l]}b[l]b^{[l]}

超参数则是例如学习速率α\alpha,训练迭代次数NN,神经网络层数LL,各层神经元个数n[l]n^{[l]},激活函数g(z)g(z)

叫做超参数的原因是它们决定了参数W[l]W^{[l]}b[l]b^{[l]}的值

如何设置最优的超参数:

通常的做法是选择超参数一定范围内的值,分别代入神经网络进行训练,测试cost function随着迭代次数增加的变化,根据结果选择cost function最小时对应的超参数值

Last updated