2020-5-11 吴恩达-NN&DL-w4 深层NN(4.1 深层神经网络-含符号约定,4.2 深层网络中的前向传播)

274 篇文章 24 订阅
233 篇文章 0 订阅

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

4.1 深层神经网络 Deep L-layer Neural network

前面的学习中我们了解了逻辑回归和向量化单隐层NN中的正向传播和反向传播,为什么要随机初始化权重,这些都是实现深度NN的基本理念。

本周的目标就是实现深度NN模型。

先来观察下面几个图。
在这里插入图片描述

上图左边是逻辑回归模型,右边是单隐藏NN。

在这里插入图片描述

上图是一个双隐层的NN。
在这里插入图片描述

上图是一个5隐层的NN。

第一个逻辑回归的模型,从技术层面上说,是单层NN,我们称之为“浅层”。而最后一个5隐层NN称之为“深层”。深层或者浅层是一个程度问题

有些函数只有非常深的NN可以学习。尽管对于任何给定的问题很难去提前预测到底需要多深的神经网络,我们可以先去尝试逻辑回归一层NN,然后两层NN(含一个隐层),依次增加隐藏层数,把隐藏层的数量看做是另一个可以自由选择大小的超参数,再在保留的交叉验证数据上评估,或者用你的开发集来评估。

符号约定
在这里插入图片描述

上图是一个含3隐层和1个输出层的4层NN。从左往右,隐层中单元数量是5,5,3。

  • 我们用L表示层数,L=4。
  • 用n[i]表示第i层的节点数,第一层n[1]=5,第二层n[2]=5,第三层n[3]=3,第四层n[4]=n[L]=1。
  • 输入层n[0]=3。
  • 用a[i]表示第i层的激活函数,a[i]=g[i](z[i])
  • 输入特征x是第0层的激活函数,x=a[0]
  • 预测值 y ^ \hat y y^=a[L]
  • 用w[i]表示第i层计算z[i]的权重值
  • 用b[i]表示第i层计算z[i]的偏置值

4.2 深层网络中的前向传播 Forward Propagation in a Deep Network

本节将介绍如何在深层NN中应用前向传播和反向传播。
在这里插入图片描述

我们先来看一个训练样本x的情况,如何计算第一层的激活单元。

z [ 1 ] = W [ 1 ] x + b [ 1 ] = W [ 1 ] a [ 0 ] + b [ 1 ] z^{[1]}=W^{[1]}x+b^{[1]}=W^{[1]}a^{[0]}+b^{[1]} z[1]=W[1]x+b[1]=W[1]a[0]+b[1],其中 W [ 1 ] W^{[1]} W[1] b [ 1 ] b^{[1]} b[1]是影响第一层激活单元的参数。特征向量x也是第0层的激活单元,即 x = a [ 0 ] x=a^{[0]} x=a[0]
a [ 1 ] = g [ 1 ] ( z [ 1 ] ) a^{[1]}=g^{[1]}(z^{[1]}) a[1]=g[1](z[1]),这个是作用于 z [ 1 ] z^{[1]} z[1]的激活函数

第二层计算如下

z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] z^{[2]}=W^{[2]}a^{[1]}+b^{[2]} z[2]=W[2]a[1]+b[2]
a [ 2 ] = g [ 2 ] ( z [ 2 ] ) a^{[2]}=g^{[2]}(z^{[2]}) a[2]=g[2](z[2]),这个是作用于 z [ 2 ] z^{[2]} z[2]的激活函数

后面几层依次类推,直到输出层

z [ 4 ] = W [ 4 ] a [ 3 ] + b [ 4 ] z^{[4]}=W^{[4]}a^{[3]}+b^{[4]} z[4]=W[4]a[3]+b[4]
a [ 4 ] = g [ 4 ] ( z [ 4 ] ) = y ^ a^{[4]}=g^{[4]}(z^{[4]})=\hat y a[4]=g[4](z[4])=y^,此时输出就是预测值 y ^ \hat y y^

可以发现,一个训练样本正向传播公式可以归纳为

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

接下来再看看如何用向量化方法训练整个训练集。其实就是把z和a向量从左到右横向叠起来。
例如:
Z [ 1 ] = [ ⋮ ⋮ ⋮ ⋮ ⋮ z [ 1 ] ( 1 ) z [ 1 ] ( 2 ) z [ 1 ] ( 3 ) ⋮ z [ 1 ] ( m ) ⋮ ⋮ ⋮ ⋮ ⋮ ] Z^{[1]}= \left[ \begin{array}{c} \vdots &\vdots & \vdots & \vdots & \vdots\\ z^{[1](1)} & z^{[1](2)} & z^{[1](3)} & \vdots & z^{[1](m)}\\ \vdots &\vdots & \vdots & \vdots & \vdots\\ \end{array} \right] Z[1]=z[1](1)z[1](2)z[1](3)z[1](m)

第一层

Z [ 1 ] = W [ 1 ] X + b [ 1 ] = W [ 1 ] A [ 0 ] + b [ 1 ] Z^{[1]}=W^{[1]}X+b^{[1]}=W^{[1]}A^{[0]}+b^{[1]} Z[1]=W[1]X+b[1]=W[1]A[0]+b[1],其中 X = A [ 0 ] X=A^{[0]} X=A[0],就是把所有样本从左到右横向叠在一起
A [ 1 ] = g [ 1 ] ( Z [ 1 ] ) A^{[1]}=g^{[1]}(Z^{[1]}) A[1]=g[1](Z[1])

第二层

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

后面几层依次类推,直到输出层

Z [ 4 ] = W [ 4 ] A [ 3 ] + b [ 4 ] Z^{[4]}=W^{[4]}A^{[3]}+b^{[4]} Z[4]=W[4]A[3]+b[4]
A [ 4 ] = g [ 4 ] ( Z [ 4 ] ) = Y ^ A^{[4]}=g^{[4]}(Z^{[4]})=\hat Y A[4]=g[4](Z[4])=Y^ Y ^ \hat Y Y^就是把所有样本的预测值 y ^ \hat y y^从左到右横向叠在一起

针对整个训练集正向传播的向量化公式归纳如下

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

此时要遍历所有层计算就需要一个显示for循环,for l=1,2…L,依次计算从输入层到输出层整个NN每层的Z和A值。

你可以发现深层NN正向传播实现过程和单隐层NN实现步骤是非常类似的,只不过多重复了几遍。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值