神经网络(Neural Network, NN)一般也称为人工神经网络( Artificial Neural
Network , ANN)。通过借助数学和物理的方法从信息处理的角度对人脑神经网络进行抽象后建立的简化模型。
人工神经网络是由模拟神经元组成的,可把ANN看成是以处理单元(ProcessingElement,PE)为节点,用加权有向弧(链)相互连接而成的有向图。
图2.2中,x表示来自其他神经元的输人, ω \omega ωi表示相应的网络连接权重,各个输人乘以相应权重,然后相加。把所有总和与阈值电平 θ \theta θ(称为神经元的偏置)比较,当总和高于阈值时,其输出为1;否则,输出为0。大的正权对应于强的兴奋,小的负权对应于弱的抑制。其中有向弧的权重表示两处理元间相互作用的强弱。
人工神经网络有很多种不同的模型,通常可按以下5个原则进行归类。
单层感知器是最早使用的,也是最简单的神经网络结构,由一个或多个线性阈值单元组成,如图2.4所示。但由于这种网络结构相对简单,因此能力也非常有限,一般比较少用。作为最原始的、最简单的神经网络结构,单层感知器是其他很多网络结构的基本单元。
在前面的图2.2中可以看到,神经元所使用的激活函数是二值离散神经元模型,也就是如图2.5(a)所示的阈值型激活函数。但是这种函数对非线性的拟合程度非常有限。因此除了这种阈值型的激活函数,人们还采用了S形状的函数(例如指数、对数、双曲正切、Sigmoid函数等)或者是分段线性函数。图2.5给出了这3种不同激活函数的图像。其中图2.5©给出的是Sigmoid函数,其函数表达式如公式(2.1)所示,这是神经网络中使用最广泛的激活函数。
前馈型网络的信号由输人层到输出层单向传输,每层的神经元仅与其前一层的神经元相连,仅接受前一层传输来的信息,其网络结构如图2.6所示。
前馈型网络使用最为广泛的神经网络模型,方案也比较容易操作,而且由于采用了多层的网络结构,其求解问题的能力得到明显的加强,基本上可以满足使用要求。
这种网络结构从外部看还是一个前馈型的网络,但是内部有一些节点在层内互连。
这种网络结构在输人输出之间还建立了另外一种关系,就是网络的输出层存在一个反馈回路到输入层作为输人层的一个输人,而网络本身还是前馈型的。
此种网络经常用于系统控制、实时信号处理等需要根据系统当前状态进行调节的场合。
目前神经网络的学习方法有多种,按照有无监督来分类,可以分为有监督学习(Supervised Learning)或称有指导学习、无监督学习(Unsupervised Learning)或称无指导学习以及再励学习(Reinforcement Learning)等几类。
神经网络学习算法的另一个重点是学习规则。使用比较普遍的学习规则有以下7个:
所谓神经网络的学习,目前主要是指通过一定的学习算法实现对突触结合强度(连接权重)的调整,使其具有记忆、识别、分类、信息处理和问题优化求解等功能。
人工神经网络有很多种不同的类型,其中后向传播学习的前馈型神经网络(BPNN)应用最为广泛。下面以BPNN为例。
神经网络在实际的应用中分为训练阶段和使用阶段,BPNN也不例外。训练阶段根据给定的样本,使用适当的学习算法(例如后向传播学习算法)调整某种结构的网络(例如前馈型神经网络结构)的网络参数(例如网络结构的层数、每层的神经元数目、连接权重、神经:元偏置等),使得被训练的网络能够对样本有很好的拟合作用。使用阶段采用已经训练好的神经网络,对一些未知结果的输人进行运算,得到输出。
BPNN中的前馈型网络结构是指在处理样本的时候,从输入层输人,向前把结果输出到第一隐含层,然后第一隐含层将接收的数据处理后作为输出,该输出作为第二隐含层的输人,以此类推,直到输出层的输出为止;反向传播是指通过比较输出层的实际输出和预期的结果,得到误差,然后通过相关的误差方程式调整最后-个隐含层到输出层之间的网络权重,之后从最后–个隐含层向倒数第二隐含层进行误差反馈,调整它们之间的网络权重,以此类推,直到输人层与第–隐含层之间的网络权重调整为止。
步骤一:初始化网络权重
每两个神经元之间的网络连接权重 ω \omega ωij,被初始化为一个很小的随机数(例如-1. 0-1.0,或者-0.5-0.5,可以根据问题本身而定),同时,每个神经元有一个偏置 θ \theta θi,也被初始化为一个随机数。对每个输人样本x,按步骤2进行处理。
步骤二:向前传播输入(前馈型网络)
首先,根据训练样本x提供网络的输人层,通过计算得到每个神经元的输出。每个神经元的计算方法相同,都是由其输人的线性组合得到,具体的公式为
其中, ω \omega ωij是由上一层的单元i到本单元j的网络权重; O i O_i Oi是上一层的单元i的输出; θ \theta θj为本单元的偏置,用来充当阈值,可以改变单元的活性。从上面的公式可以看到,神经元j的输出取决于其总输人 S j S_j Sj= ∑ i \sum_{i} ∑i ω \omega ωij O i O_i Oi+ θ \theta θj,然后通过激活函数 O j O_j Oj= 1 1 + e − S j {1}\over{1+e^-S_j} 1+e−Sj1得到最终输出,这个激活函数称为logistic函数或者sigmoid函数,能够将较大的输人值映射为区间0~1之间的一个值,由于该函数是非线性的和可微的,因此也使得BP神经网络算法可以对线性不可分的分类问题进行建模,大大拓展了其应用范围。
步骤三:反向误差传播
由步骤2一路向前,最终在输出层得到实际输出,可以通过与预期输出相比较得到每个输出单元j的误差,如公式 E j E_j Ej= O j O_j Oj(1- O j O_j Oj)( T j T_j Tj- O j O_j Oj)所示,其中 T j T_j Tj是输出单元j的预期输出。得到的误差需要从后向前传播,前面一层单元j的误差可以通过和它连接的后面一层的所有单元k的误差计算所得,具体的公式为:
步骤四:网络权重与神经元偏置调整
调整权重的方法是从输入层与第一隐含层的连接权重开始,依次向后进行,每个连接权重 ω \omega ωij;根据公式 ω \omega ωij= ω \omega ωij + Δ \Delta Δ ω \omega ωij= ω \omega ωij +(l) O j O_j Oj E j E_j Ej进行调整。
神经元偏置的调整方法是对每个神经元j进行如公式 θ j \theta_j θj= θ j \theta_j θj+ Δ \Delta Δ θ j \theta_j θj= θ j \theta_j θj+(l) E j E_j Ej所示的更新。
其中l是学习率,通常取0~1之间的常数。该参数也会影响算法的性能,经验表明,.太小的学习率会导致学习进行得慢,而太大的学习率可能会使算法出现在不适当的解之间振动的情况,一个经验规则是将学习率设为迭代次数t的倒数,也就是1/l。
步骤五:判断结束
对于每个样本,如果最终的输出误差小于可接受的范围或者迭代次数t达到了一定的阈值,则选取下一个样本,转到步骤2重新继续执行;否则,迭代次数t加1,然后转向步骤2继续使用当前样本进行训练。
为了更加具体地说明BPNN的计算过程,我们将通过一个简单的分类训练的例子,说明BPNN的运行机理。
例2.1 已知一个前馈型神经网络例子如图2. 12所示。设学习率l为0.9,当前的训练样本为x={1,0,1},而且预期分类标号为1,同时,表2.3给出了当前该网络的各个连接权重和神经元偏置。求该网络在当前训练样本下的训练过程。
解:首先根据样本的输人,计算每个单元的输出。然后计算每个单元的误差,并后向传播。最后根据误差对网络连接权重和神经元偏置进行更新调整。这些计算过程分别如表2.4、表2.5和表2.6所示。
表2.5根据此公式计算:
表2.6根据 ω \omega ωij= ω \omega ωij +(l) O j O_j Oj E j E_j Ej, θ j \theta_j θj= θ j \theta_j θj+(l) E j E_j Ej计算:
为了解决造成资源的大量浪费和网络的性能低下这个问题,研究者提出了使用进化算法去优化神经网络,通过进化算法和人工神经网络的结合使得神经网络能够在进化的过程中自适应地调整其连接权重、网络结构、学习规则等这些在使用神经网络的时候难以确定的参数,从而形成了进化神经网络(Evolutionary Neural Networks, ENN/EANN)。
进化算法(Evolutionary Algorithms, EAs)是一种基于生物进化和演化的算法, 典型的有遗传算法(Genetic Algorithms,GA) 、进化策略( Evolution Strategy, ES)、遗传编程(Genetic Programming, GP)、进化规划( Evolutionary Programming, EP)、蚁群优化算法( Ant Colony Optimization, ACO)和粒子群优化算法(Particle Swarm Optimization,PSO)等。
由于进化算法不要求待解问题连续、可微,仅仅要求问题可计算,而且是一种全局的搜索算法,因此非常适合用于优化神经网络。
在本节,我们将从识别与聚类、神经优化、建模与预测、控制与处理等大的方面对人工神经网络的应用进行介绍。
人工神经网络的典型应用就是模式识别、分类与聚类。
一般来说,模式识别和分类是指通过使用一系列的训练数据对神经网络进行训练,在有教师指导学习方法下,让神经网络在训练数据的训练下调整网络的结构和权重,以达到正确识别的目的。
聚类和分类的区别在于聚类需要划分的类是未知的,它要求将数据对象分组为多个类或簇(cluster),在同一簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。
神经计算是人工神经网络的一个重要应用手段,也为各种优化问题提供了解决的方案。
优化问题就是需要在问题的解空间里面寻找一个最优的解,在满足一定约束条件下使得目标函数最大化或者最小化。
在使用人工神经网络进行优化计算的时候,一般都是选择Hopfield神经网络。例如,Hopfield和Tank在1985年就提出了一种使用神经网络求解离散组合优化问题的方法。他们提出的神经网络方法,对于不超过30个城市的TSP问题一般都能够找到最优解或者近似最优解,但是当城市规模变大的时候,效果就不大理想了。
人工神经网络的非线性处理能力使得它在各种系统建模上具有很大的优势。
神经网络用于函数逼近建模的现实应用主要包括两类: 一类是没有现实模型的问题,例如其数据都是通过实验或者观察的方法得到的;另一类是理论模型非常复杂,以至于很难使用该模型对已知数据进行计算和分析的问题,例如微生物学中的细菌生长预测等问题。
其实,在很多情况下,神经网络建模是为了预测。所谓神经网络预测就是根据一定数量的历史样本数据(一般为表征某一种现象时间序列的数据,例如交通流量、外汇走势等)对神经网络进行训练,然后用来对当前的,或者未来的时刻情景进行预测,如图所示。
《计算智能》张军 詹志辉等编著