神经网络算法与实现:基于Java语言
上QQ阅读APP看书,第一时间看更新

1.3 神经网络的构造

可以说人工神经网络是受自然启发的结构,它和人脑有很多相似之处。图1-1展示了一个自然神经元结构,它由神经元细胞核、树突和轴突组成,轴突分出很多分支来与其他神经元的树突相连而形成突触。

图1-1

所以,人工神经元有相似的结构,它也包含一个核(处理单元)、多个树突(类似于输入)以及一个轴突(类似于输出),如图1-2所示。

图1-2

在所谓的神经网络中,神经元之间的连接类似于自然神经结构中的突触。

1.3.1 基础元素——人工神经元

自然神经元被证实为一个信号处理器,这是由于它可以在树突端接收微信号,根据信号的强度或者大小,会在轴突触发一个信号。我们可以认为神经元在输入端有一个信号接收器,在输出端有一个响应单元,它可以根据不同的强度和量级触发一个可以向前传递至其他神经元的信号。因此,我们可以定义一个人工神经元结构,如图1-3所示。

图1-3

提示:

在自然神经元中,有一个阈值(threshold),当刺激达到这个阈值,就会产生神经冲动并沿着轴突把信号传递到其他神经元。我们用激活函数来模拟这种神经冲动,在表示神经元的非线性行为中,这是很有用的。

1.3.2 赋予神经元生命——激活函数

神经元的输出是通过激活函数得到的,激活函数为神经网络处理加入了非线性特征,由于自然神经元具有非线性行为,所以非线性特征是非常必要的。激活函数往往把输出信号限制在一定范围内,因此,激活函数常常是非线性函数,但是在一些特殊情况下,也可能是线性函数。

如下是4种最常用的激活函数:

• S函数(Sigmoid);

• 双曲正切函数(Hyperbolic tangent);

• 阈值函数(Hard limiting threshold);

• 纯线性函数(Purely linear)。

表1-2展示的是与这些函数对应的公式及图像。

表1-2

1.3.3 基础值——权值

在神经网络中,权值代表着神经元之间的连接并且它可以放大或减小神经元信号,例如扩大信号从而改变信号。因此,通过改变神经网络信号,神经系统权值有能力影响神经元的输出信号,所以一个神经元的激活依赖于输入和相应的权值。倘若输入信号来自其他神经元或外界,那么权值可以认为是在神经元之间建立的神经网络连接。由于权值是神经网络的内部因素并且可以影响它的输出,我们可以把权值当成神经网络的知识,只要更改了权值,将会改变神经网络的功能和相应动作。

1.3.4 重要参数——偏置

人工神经元可以拥有一个独立的元素,它可以把外部信号添加到激活函数,这个独立的元素被称为偏置。

就像输入信号有一个对应的权值,偏置也拥有一个对应的权值,这个特性可以使神经网络知识表示成一个更纯粹的非线性系统。

1.3.5 神经网络组件——层

自然神经元以层的方式组织,每一层都有自己的处理方式,例如输入层接受外界直接刺激,输出层产生可以影响外界的神经冲动。在这些层之间,有很多隐藏层,意味着它们不会和外界直接产生相互影响。在人工神经网络中,同一层的所有神经元共享相同的输入和激活函数,如图1-4所示。

图1-4

神经网络由多个相连接的层组成,形成多层网络。这些神经系统层可以分成以下3种基本类型:

• 输入层;

• 隐藏层;

• 输出层。

实际上,接受外界刺激的抽象神经系统层可以作为一个附加层,以此来增强神经网络对更加复杂的知识的表现力。

提示:

每个神经网络至少含有一个输入层/输出层,不管神经网络的层数是多少。在多层神经网络的情况下,在输入层和输出层之间的都被称为隐藏层。