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

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

第二层计算如下

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]}),这个是作用于z[2]z^{[2]}的激活函数

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

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,此时输出就是预测值y^\hat y

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

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]})

接下来再看看如何用向量化方法训练整个训练集。其实就是把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]=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]},就是把所有样本从左到右横向叠在一起
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]}
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]}
A[4]=g[4](Z[4])=Y^A^{[4]}=g^{[4]}(Z^{[4]})=\hat YY^\hat Y就是把所有样本的预测值y^\hat y从左到右横向叠在一起

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章