神经网络入门篇之深层神经网络:详解前向传播和反向传播(Forward and backward propagation)

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

复习下前面的内容:

1.逻辑回归,结构如下图左边。一个隐藏层的神经网络,结构下图右边:

注意,神经网络的层数是这么定义的:从左到右,由0开始定义,比如上边右图,x1x2x3,这层是第0层,这层左边的隐藏层是第1层,由此类推。如下图左边是两个隐藏层的神经网络,右边是5个隐藏层的神经网络。

严格上来说逻辑回归也是一个一层的神经网络,而上边右图一个深得多的模型,浅与深仅仅是指一种程度。记住以下要点:

有一个隐藏层的神经网络,就是一个两层神经网络。记住当算神经网络的层数时,不算输入层,只算隐藏层和输出层。

但是在过去的几年中,DLI(深度学习学院 deep learning institute)已经意识到有一些函数,只有非常深的神经网络能学会,而更浅的模型则办不到。尽管对于任何给定的问题很难去提前预测到底需要多深的神经网络,所以先去尝试逻辑回归,尝试一层然后两层隐含层,然后把隐含层的数量看做是另一个可以自由选择大小的超参数,然后再保留交叉验证数据上评估,或者用开发集来评估。

再看下深度学习的符号定义:

上图是一个四层的神经网络,有三个隐藏层。可以看到,第一层(即左边数过去第二层,因为输入层是第0层)有5个神经元数目,第二层5个,第三层3个。

用L表示层数,上图:L=4,输入层的索引为“0”,第一个隐藏层n[1]=5,表示有5个隐藏神经元,同理n[2]=5n[3]=3n[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]是等于这个神经网络所预测的输出结果。

前向传播和反向传播

  • 之前的神经网络入门篇都是基于浅层神经网络进行的,此篇开始基于深层神经网络进行

之前学习了构成深度神经网络的基本模块,比如每一层都有前向传播步骤以及一个相反的反向传播步骤,这次讲讲如何实现这些步骤。

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

所以前向传播的步骤可以写成: z[l]=W[l]a[l1]+b[l]

a[l]=g[l](z[l])

向量化实现过程可以写成: z[l]=W[l]A[l1]+b[l]

A[l]=g[l](Z[l])

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

下面讲反向传播的步骤:

输入为da[l],输出为da[l1]dw[l], db[l]

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

(1)dz[l]=da[l]g[l](z[l])

(2)dw[l]=dz[l]a[l1] 

(3)db[l]=dz[l]  

(4)da[l1]=w[l]Tdz[l]

(5)dz[l]=w[l+1]Tdz[l+1] g[l](z[l]) 

式子(5)由式子(4)带入式子(1)得到,前四个式子就可实现反向函数。

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

(6)dZ[l]=dA[l]g[l](Z[l])  

(7)dW[l]=1mdZ[l]A[l1]T

(8)db[l]=1m np.sum(dz[l],axis=1,keepdims=True)

(9)dA[l1]=W[l]T.dZ[l]

总结一下:

第一层可能有一个ReLU激活函数,第二层为另一个ReLU激活函数,第三层可能是sigmoid函数(如果做二分类的话),输出值为,用来计算损失;这样就可以向后迭代进行反向传播求导来求dw[3]db[3]dw[2]db[2]dw[1]db[1]。在计算的时候,缓存会把z[1] z[2]z[3]传递过来,然后回传da[2]da[1] ,可以用来计算da[0],但不会使用它,这里讲述了一个三层网络的前向和反向传播,还有一个细节没讲就是前向递归——用输入数据来初始化,那么反向递归(使用Logistic回归做二分类)——对A[l] 求导。

忠告:补补微积分和线性代数,多推导,多实践。

posted @   Oten  阅读(383)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示