吴恩达-深度学习(第四章)

回顾之前所学,我们学习了单隐藏层神经网络中的前向传播和反向传播,逻辑回归以及向量化,也了解了对权重参数进行随机初始化的重要性。我们已学过实现深度神经网络需要的大部分知识,本章的任务就是将所学的理念组合起来,利用他们来实现深度神经网络。

(部分参考帖子:红色石头的个人博客-机器学习、深度学习之路

  • 深L层神经网络

神经网络其实就是包含更多的隐藏层神经网络。下图分别列举了逻辑回归、1个隐藏层的神经网络、2个隐藏层的神经网络和5个隐藏层的神经网络它们的模型结构。

 我们一般认为逻辑回归时非常浅的模型,而上图右下角这个模型的层数更深。

当我们计算神经网络层数时,一般只考虑隐藏层和输出层,而不包括输入层。例如,上图中的逻辑回归又叫1 layer NN,1个隐藏层的神经网络叫做2 layer NN,2个隐藏层的神经网络叫做3 layer NN,以此类推。如果是L-layer NN,则包含了L-1个隐藏层,最后的L层是输出层。

以一个4层神经网络见下图为例来介绍描述深度网络所使用的符号。

 首先,总层数用L表示,L=4。输入层是第0层,输出层是第L层。n[l]表示第ll层包含的单元个数,l=0,1,⋯,L。这个模型中,n[0]=nx=3,表示三个输入特征x1,x2,x3。n[1]=5,n[2]=5,n[3]=3,n[4]=n[L]=1。第ll层的激活函数输出用a[l]表示,a[l]=g[l](z[l])。W[l]表示第ll层的权重,用于计算z[l]。另外,我们把输入x记为a[0],把输出层ŷ记为a[L]。其中a[l]和W[l]中的上标l都是从1开始的,l=1,⋯,L。

  • 深层网络中的正向传播

本小节将会讲述如何在深度神经网络中进行前向传播和反向传播。首先推导一下深层神经网络的正向传播过程

仍以第一小节讲过的4层神经网络为例,对于单独的训练样本X

第1层,l=1

 第2层,l=2

 第3层,l=3

 第4层,l=4

如果有m个训练样本其向量化矩阵形式为:

第1层,l=1:

第2层,l=2

第3层,l=3

 第4层,l=4

 综上所述,对于第l层,其正向传播过程的Z[l]A[l]可以表示为:

 其中l=1,···,L。

  • 正确的矩阵维数

对于单个训练样本,输入x的维度是(n[0],1)神经网络的参数W[l]b[l]的维度分别是:

 其中,l=1,···,Ln[l]n[l−1]分别表示第l层和l-1层的所含单元个数。

n[0]=nx,表示输入层特征数目。

反向传播过程中的dW[l]db[l]的维度分别是:

 注意到,W[l]dW[l]维度相同,b[l]db[l]维度相同。这很容易理解。

正向传播过程中的z[l]a[l]的维度分别是:

 z[l]和a[l]的维度是一样的,且dz[l]和da[l]的维度均与z[l]和a[l]的维度一致。

对于m个训练样本,输入矩阵X的维度是(n[0],m)。需要注意的是W[l]和b[l]的维度与只有单个样本是一致的:

 只不过在运算Z[l]=W[l]A[l−1]+b[l]中,b[l]会被当成(n[l],m)矩阵进行运算,这是因为python的广播性质,且b[l]每一列向量都是一样的。dW[l]和db[l]的维度分别与W[l]和b[l]的相同。

但是,Z[l]和A[l]的维度发生了变化:

 dZ[l]dA[l]的维度分别与Z[l]A[l]的相同。

  • 为什么深度这么有理

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

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

深层网络的另一个优势就是其可以减少神经元的个数,从而减少计算量。

  • 为深层神经网络构建模块

下面用流程块图来解释神经网络正向传播和反向传播过程。如下图所示,对于第l层来说,

正向传播过程中:

输入:a[l−1]

输出:a[l]

参数:W[l],b[l]

缓存变量:z[l]

反向传播过程中:

输入:da[l]

输出:da[l−1],dW[l],db[l]

参数:W[l],b[l]

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

 正反向传播

继续接着上一部分流程块图的内容,推导神经网络正向传播过程和反向传播过程的具体表达式

首先是正向传播过程,令层数为第l层,输入是a[l−1],输出是a[l],缓存变量是z[l]。其表达式如下:

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

 然后是反向传播过程,输入是da[l],输出是da[l−1],dw[l],db[l]。其表达式如下:

 由上述第四个表达式可得da[l]=W[l+1]T⋅dz[l+1],将da[l]代入第一个表达式中可以得到:

 该式非常重要,反映了dz[l+1]dz[l]的递推关系。

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

 ·参数vs超参数

该部分介绍神经网络中的参数(parameters)和超参数(hyperparameters)的概念。

机器学习模型中一般有两类参数:

一类需要从数据中学习和估计得到,称为模型参数(Parameter)---即模型本身的参数。比如,线性回归直线的加权系数(斜率)及其偏差项(截距)都是模型参数。

还有一类则是机器学习算法中的调优参数(tuning parameters),需要人为设定,称为超参数(Hyperparameter)。比如,正则化系数λ,决策树模型中树的深度。

区分两者最大的一点就是是否通过数据来进行调整,模型参数通常是有数据来驱动调整,超参数则不需要数据来驱动,而是在训练前或者训练中人为的进行调整的参数。

神经网络中的参数就是我们熟悉的W[l]和b[l]。而超参数则是例如学习速率α,训练迭代次数N,神经网络层数L,各层神经元个数n[l],激活函数g(z)等。之所以叫做超参数的原因是它们决定了参数W[l]和b[l]的值。

如何设置最优的超参数是一个比较困难的、需要经验知识的问题。通常的做法是选择超参数一定范围内的值,分别代入神经网络进行训练,测试cost function随着迭代次数增加的变化,根据结果选择cost function最小时对应的超参数值。这类似于validation的方法。

·小结

本节课主要介绍了深层神经网络,是上一节浅层神经网络的拓展和归纳。首先,我们介绍了建立神经网络模型一些常用的标准的标记符号。然后,用流程块图的方式详细推导正向传播过程和反向传播过程的输入输出和参数表达式。我们也从提取特征复杂性和计算量的角度分别解释了深层神经网络为什么优于浅层神经网络。接着,我们介绍了超参数的概念,解释了超参数与参数的区别。最后,我们将神经网络与人脑做了类别,人工神经网络是简化的人脑模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值