1.1 前馈神经网络的结构示意图

下图 下 图 所示



神经网络拓扑结构是什么 神经网络构造_深度学习




图1. 图 1.

  ⽹络中最左边的称为输⼊层Input Layer),其中的神经元称为输⼊神经元;最右边的是输出层(Output Layer)包含有输出神经元;中间层的神经元既不是输⼊也不是输出,则被称为隐藏层(Hidden Layer)。上⾯的⽹络有多个隐藏层,但有些⽹络仅有⼀个隐藏层。
  由于历史的原因,尽管神经网络是由S型(sigmoid)神经元⽽不是感知器构成,但这种多层⽹络有时被称为多层感知器(Multilayer Perception,MLP)。但是这种叫法会产生歧义,因此不常使用。
  也有⼀些⼈⼯神经⽹络的模型,其中反馈环路是可⾏的,这些模型被称为递归神经⽹络。该模型的关键在于,神经元在变为非激活态之前会在一段 有限时间内均保持激活状态。这种激活状态可以激励其他的神经元,被激励的神经元在随后 一段有限时间内也会保持激活状态。如此就会导致更多的神经元被激活,一段时间后我们将 得到一个级联的神经元激活系统。在这个模型中环路并不会带来问题,因为神经元的输出只 会在一段之间之后才影响到它的输入,它并非实时的。

1.2 前馈神经网络的参数说明

图1. 图 1. 中可以看到,每一条连线就是一个权重,因此神经网络中具有十分庞大的参数。

  • 神经网络的层数(Layers)
    在图1. 图 1. 中,隐层的层数是L,但是在实际的编程过程中常常将输入层,输出层也计算在网络层数中,因此常常用L表示包含输入、隐藏、输出层在内的所有层数。
  • 神经网络的节点数(Nodes)
    每一层中神经元的个数
  • 权重(Weights)、偏置(Biases)&加权输入(Weighted Input)
    在神经网络中用 w ljk w j k   l 表示从第 l−1 l − 1 层的第 k k 个神经元到第 ll 层的第 j j 个神经元的连接的权重;
    用 b ljbj l 表示第 l l 层的第 jj 个神经元的偏置;
    用 z lj z j   l 表示第 l l 层的第 jj 个神经元的加权输入;
    用 a lj a j   l 表示第 l l 层的第 jj 个神经元的激活值;
    上述参数间的关系满足如下条件
    z lj=∑kw ljka l−1k+b lj z j   l = ∑ k w j k   l a k   l − 1 + b j   l
    a lj=σ(∑kw ljka l−1k+b lj) a j   l = σ ( ∑ k w j k   l a k   l − 1 + b j   l )
    其中的 z lj z j   l 可以写成如下两个向量相乘的形式
    a lj=σ⎛⎝⎜⎜[w lj1…w ljk]⋅⎡⎣⎢⎢a l−11…a l−1k⎤⎦⎥⎥+b lj⎞⎠⎟⎟ a j   l = σ ( [ w j 1   l … w j k   l ] ⋅ [ a 1   l − 1 … a k   l − 1 ] + b j   l )
    若考虑神经网络中所有的神经元,可以写成下式的矩阵形式
    a l=σ(w la l−1+b l) a   l = σ ( w   l a   l − 1 + b   l )
    我们仅仅将权重矩阵作用于上一层的激活值,然后加上偏置向量,最后用 σ σ 函数作用于这个结果, 就得到了本层的激活函数值。相比于之前我们采用的神经元到神经元的视角,这种全局的视角通常更加简明和容易理解,涉及到更少的下标,同时还能对正在进行的事情保持精确的阐释。这种表达式在实际操作中也非常有用,因 为大多数矩阵库提供了更快的方式来实现矩阵乘法,向量加法以及函数向量化操作。

  上述的参数中可以分为两类,一类是通过数据和学习算法得到的称之为参数,如权重(Weights)、偏置(Biases),而另一类参数是经过人工设置得到的称之为超参数,如神经网络的层数、节点数等。超此之外还有很多其他的超参数,将在训练神经网络的部分进行介绍。