深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

1 深层神经网络

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

严格上来说逻辑回归也是一个一层的神经网络,有一个隐藏层的神经网络,就是一个两层神经网络,当我们算神经网络的层数时,我们不算输入层,我们只算隐藏层和输出层。

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

上图是一个四层的神经网络,有三个隐藏层,我们可以看到,第一层(即左边数过去第二层,因为输入层是第 0 层)有 5 个神经元数目,第二层 5 个,第三层 3 个。我们用 L 表示层数,上图:L = 4,输入层的索引为“0”,第一个隐藏层n[1] = 5,表示有 5个隐藏神经元,同理n[2] = 5,n[3] = 3,n[4]=n[L] = 1(输出单元为 1),而输入层,n[0] =nx = 3。在不同层所拥有的神经元的数目,对于每层 l 都用a[l]来记作 l 层激活后结果,我们会在后面看到在正向传播时,最终能你会计算出a[l]。通过用激活函数 g 计算z[l],激活函数也被索引为层数l,然后我们用w[l]来记作在 l 层计算z[l]值的权重。类似的,z[l]里的方程b[l]也一样。输入的特征记作x,但是x同样也是 0 层的激活函数,所以x = a[0],最后一层的激活函数,所以a[L]是等于这个神经网络所预测的输出结果。

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

前向传播,输入a[l−1],输出是a[l],缓存为z[l];从实现的角度来说我们可以缓存下w[l]和b[l],这样更容易在不同的环节中调用函数。

前向传播的步骤可以写成:

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

 

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation)) 

向量化实现过程可以写成:

  深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

 

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

 

 前向传播需要喂入A[0]也就是X,来初始化;初始化的是第一层的输入值,a[0]对应于一个训练样本的输入特征,而A[0]对应于一整个训练样本的输入特征,所以这就是这条链的第一个前向函数的输入,重复这个步骤就可以从左到右计算前向传播。

 

反向传播的步骤:输入为da[l],输出为da[l−1],dw[l], db[l]

反向传播的步骤可以写成:

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

向量化实现过程可以写成:

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

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

前向传播可以归纳为多次迭代:

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

向量化实现过程可以写成:

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

1.4 核对矩阵的维数(Getting your matrix dimensions right)

w的维度是(下一层的维数,前一层的维数):

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

b的维度是(下一层的维数,1):

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

 

 深层神经网络(Deep L-layer neural network)--(前向传播和反向传播(Forward and backward propagation))

 

 dw[l]和w[l]维度相同,db[l]和b[l]维度相同,且w和b向量化维度不变,但z,a以及x的维度会向量化后发生变化。

向量化后:Z[l]可以看成由每一个单独的Z[l]叠加而得到,Z[l] = (z[l][1],z[l][2],z[l][3],…,z[l][m]),m为训练集大小,所以Z[l]的维度不再是(n[l], 1),而是(n[l], m)。

A[l]:(n[l], m),A[0] = X = (n[l], m)

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

如果你在建一个人脸识别或是人脸检测系统,深度神经网络所做的事就是,当你输入一张脸部的照片,然后你可以把深度神经网络的第一层,当成一个特征探测器或者边缘探测器,隐藏单元就是这些图里这些小方块,可以先把神经网络的第一层当作看图,然后去找这张照片的各个边缘。我们可以把照片里组成边缘的像素们放在一起看,然后它可以把被探测到的边缘组合成面部的不同部分,比如说,可能有一个神经元会去找眼睛的部分,另外还有别的在找鼻子的部分,然后把这许多的边缘结合在一起,就可以开始检测人脸的不同部分。所以深度神经网络的这许多隐藏层中,较早的前几层能学习一些低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。

 

上一篇:layer.open()关闭事件


下一篇:Core Web API上使用Swagger提供API文档