第一章 使用神经网络识别手写数字-3 神经网络架构

原文:http://neuralnetworksanddeeplearning.com/chap1.html#the_architecture_of_neural_networks

  

  下一节我会介绍一个能够很好地分类手写数字的神经网络。作为准备工作,解释一下我们对网络中不同部分的术语命名有助于后文的展开。假设我们有这样一个网络:

  前面提到过,这个网络最左边的层称为输入层,这层里面的神经元称为输入神经元;最右边的输出层包含着输出神经元(这个例子中是一个输出神经元);中间的层中,神经元既不是输入也不是输出,因此称为隐藏层。“隐藏”听起来也许有一些神秘——第一次听到的时候我以为这一定有着很深层的哲学或者数学上的意义。但它真的除了“不是输入也不是输出”之外再也没有别的意思了。上图中的网络只有一个隐藏层,不过很多网络都有多个隐藏层。比如下面的4层网络有两个隐藏层:

  由于一些历史上的原因,尽管多层网络由sigmoid神经元(而不是感知器)组成,它有时候被称为多层感知器(multilayer perceptrons)或者MLPs,令人费解。本书中我不使用MLP术语,因为我觉得它令人迷惑,但是还是想警告你这种说法是存在的。

  输入层和输出层的设计通常下都是直截了当的(由需求决定)。比如,假设我们正尝试确定一个手写图片是否表示“9”,很自然我们应该将图像每个像素的强度值编码进输入层神经元,如果图像是一个64*64的灰度图,那我们就有4096(64*64)个灰度从0-1适当缩放的输入神经元,输出层只包含一个神经元,小于0.5的输出值表示“输入图像不是一个9”,大于0.5的值表示“输入图像是一个9”。(原文里没有写等于0.5表示什么)

  虽然设计神经网络的输入层和输出层通常很简单,但是隐藏层的设计便是个艺术活儿了。尤其是,使用一些简单的经验法则来概括隐藏层的设计过程是不可能的。相反,神经网络研究者们为隐藏层开发了许多设计启发,帮助人们在他们的网络中得到他们想要的行为。比如,协助启发人们权衡减少隐藏层数和训练网络的时间,本书后面我们会遇到许多这种设计启发。(设计启发design heuristics是个什么东西?)

  现在,我们一直在讨论神经网络一层的输出作为下一层的输入,这样的网络被称为前馈神经网络。这意味着网络没有回路——信息总是向前传递、不曾回传的,如果我们确实有回路,我们会在基于输出的σ函数的输入的地方结束(自己的输出到头来又作为自己的输入,死循环,不会结束),这不存在,所以我们不允许这样的回路。

  然而,有一些其它的人工神经网络模型,其中可能有反馈回路,这些模型也被称为递归神经网络,这些模型的思路是神经元会在有限的时间内运作,然后停止。那些活动会刺激其它神经元,被刺激的神经元可能迟点也会启动,也是运行一小段时间。随着时间的推移,我们便获得了一个级联的神经活动。这种网络模型,回路不会造成问题,因为一个神经元的输出只会在以后某段时间内影响其输入,而不是瞬间影响。

  递归神经网络比前馈神经网络的影响力小,部分原因是递归神经网络的学习算法不够强大(至少目前如此)。但是递归神经网络依然十分有趣,它们比前馈神经网络更接近于我们大脑的运作方式,并且递归神经网络有可能可以解决一些前馈神经网络很难解决的重要问题。但是由于不是本书范围,我们将集中讨论更加常用的前馈神经网络。

猜你喜欢

转载自www.cnblogs.com/jlom/p/12503062.html