1.3|1.3 浅层神经网络(One hidden layer Neural Network)1

从今天开始,本人将继续学习吴恩达教授的深度学习课程第一部分神经网络和深度学习第三周浅层神经网络的相关课程,这部分课程将分为两天进行学习,并整理学习笔记。
1. 神经网络概览(Neural Networks Overview) 本周主要学习如何实现神经网络,本节课主要对浅层神经网络这部分的课程做一个简单概述。
神经网络中间隐藏神经元同一层级的神经元称为一层。如下图所示:
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图1 神经网络计算图 2. 神经网络表示(Neural Network Representation) 1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图2 双层神经网络示例 图2为只有一个隐藏层的神经网络示例,神经网络各个部分的命名如下:

  • 输入特征向量称为神经网络的输入层;
  • 下一层级为若干个圆圈,称为神经网络的隐藏层。隐藏层的含义是在训练集中,这些中间节点的真正数值我们是不知道的,在训练集中找不到它们的数值;
  • 最后一层称为神经网络的输出层,负责输出预测值。
在一个神经网络中,当你使用监督学习训练它的时候,训练集包含了输入x及对应的目标输出y,一些无法在训练集中找到的中间过程神经元所在层即称为隐藏层。
在之前的课程中,我们将输入特征记为X,这里我们用一个新的符号a[0]来表示输入特征,即a[0]=X。a也表示“激活”的意思,它意味着神经网络中不同层的值会传递给后面的层,输入层会将x的值传递给隐藏层。因此我们将输入层的激活值记为a[0]。
下一层即隐藏层也会产生一些激活值,我们将其记为a[1]。则这一层的每一个节点依次记为a[1]1、a[1]2、a[1]3、a[1]4,将这四个节点的值按照竖向堆叠,形成一个4*1的矩阵或4维列向量。
最后一层输出层节点的值记为a[2],它是一个实数。
方括号中加数字的方式可以明确的指出这些值来自哪一层。
在传统的神经网络概念中,图2为双层神经网络。原因是:当我们计算神经网络的层数时,不将输入层算在内。根据这个命名规则,输入层为第0层,隐藏层为第1层,输出层为第2层。
隐藏层和输出层都是带有参数的,在本例中,隐藏层有两个相关的参数w[1]和b[1],之后我们可以看到,w是一个4*3的矩阵,而b是一个4*1的向量。
3. 计算神经网络的输出(Computing a Neural Network's Output) 本节课主要讲解了神经网络的输出究竟是如何计算出来的以及它计算的是什么。神经网络计算过程类似于logistic回归的运算过程,但整个过程需要重复很多遍。
我们将logistic回归的计算过程中间两个步骤用一个圆圈表示,如图3所示,圆圈中的两个步骤分别为:
  • 第一步:计算出z;
  • 第二步:计算激活函数,即函数sigmoid(z)
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图3 logistic回归计算图 神经网络的计算图如图4所示,从图中可以看出,实际上,神经网络的计算过程就是多次logistic回归计算的重复。
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图4 神经网络计算图 下面我们先来看一下隐藏层的第一个节点,先暂时将其他节点隐去(即节点颜色变为灰色),如图5所示。这样得到的图与图3非常相似。
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图5 隐藏神经网络计算图中的其他节点 神经网络第一隐藏层中节点计算过程的表达式与图3中的类似,只不过需要增加上角标和下角标用来区分节点所在层及所在层中节点顺序号,上角标记作[L],表示层数;下角标记作i,表示层中的第几个节点。
根据上述命名规则,将图4中的第一隐藏层每个节点中的计算公式列出来,如图6所示。我们将z、wT、x、b各自进行堆叠,构成一个个矩阵,将隐藏层中四个节点的计算过程进行向量化,最终形成图7所示的等式。其中,Z[1]代表z[L]i堆叠形成的列向量。
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图6 神经网络第一隐藏层计算公式 1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图7 第一层计算过程向量化结果
向量化经验法则:当神经网络一层中存在多个不同节点时,就将它们纵向堆叠起来,形成一个列向量,这个列向量即为这一层所有节点某个计算过程的结果。
将图7中的公式全部用另一种符号惯例表示为:
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
其中,W[1]为4*3矩阵,b[1]为4*1矩阵。根据第二节中神经网络各个层符号命名可知,上述矩阵公式也可写作:
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
按照这个思路,再继续将隐藏层的第二个步骤进行向量化,得到
如下公式:
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
同理,可以推导出,双层神经网络输出层节点的两个步骤的计算公式为:
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
总的来说,计算双层神经网络需要编程实现的为以下四个公式:
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
4. 多个例子中的向量化(Vectorizing across multiple examples) 本节课主要讲解了如何将不同训练样本向量化,输出结果与Logistic回归非常相似。下面我们来看下具体应该如何将训练集m个样本的计算过程向量化。
首先,对本节课中使用的符号做一个说明:
  • [L]:方括号代表神经网络第L层;
  • (i):圆括号代表训练集中的第i个样本。
【1.3|1.3 浅层神经网络(One hidden layer Neural Network)1】堆叠矩阵的规则为:从左到右,从上到下的顺序,横向的堆叠是按照训练集中的样本顺序排列,而竖向的堆叠是按照神经网络的隐藏单元进行排列。即横向对应不同的训练集样本,竖向对应不同的输入特征。神经网络的计算过程向量化的过程及结果如下图所示:
1.3|1.3 浅层神经网络(One hidden layer Neural Network)1
文章图片
图8 对神经网络的m个样本训练集计算过程向量化

    推荐阅读