5.4 神经网络与遗传算法简介在本节中,我们将着重讲述一些在网络设计、优化、性能分析、通信路由优化、选择、神经网络控制优化中有重要应用的常用的算法,包括神经网络算法、遗传算法、模拟退火算法等方法。
用这些算法可以较容易地解决一些很复杂的,常规算法很难解决的问题。
这些算法都有着很深的理论背景,本节不准备详细地讨论这些算法的理论,只对算法的原理和方法作简要的讨论。
5.4.1 神经网络1. 神经网络的简单原理人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model),是对人脑或自然神经网络(Natural Neural Network)若干基本特性的抽象和模拟。
人工神经网络以对大脑的生理研究成果为基础的,其目的在于模拟大脑的某些机理与机制,实现某个方面的功能。
所以说, 人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入作出状态相应而进行信息处理。
它是根据人的认识过程而开发出的一种算法。
假如我们现在只有一些输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把输入与输出之间的未知过程看成是一个“网络”,通过不断地给这个网络输入和相应的输出来“训练”这个网络,网络根据输入和输出不断地调节自己的各节点之间的权值来满足输入和输出。
这样,当训练结束后,我们给定一个输入,网络便会根据自己已调节好的权值计算出一个输出。
这就是神经网络的简单原理。
2. 神经元和神经网络的结构如上所述,神经网络的基本结构如图5.35所示:隐层隐层21图5.35神经网络一般都有多层,分为输入层,输出层和隐含层,层数越多,计算结果越精确,但所需的时间也就越长,所以实际应用中要根据要求设计网络层数。
神经网络中每一个节点叫做一个人工神经元,他对应于人脑中的神经元。
人脑神经元由细胞体、树突和轴突三部分组成,是一种根须状蔓延物。
神经元的中心有一闭点,称为细胞体,它能对接受到的信息进行处理,细胞体周围的纤维有两类,轴突是较长的神经纤维,是发出信息的。
树突的神经纤维较短,而分支众多,是接收信息的。
一个神经元的轴突末端与另一神经元的树突之间密切接触,传递神经元冲动的地方称为突触。
经过突触的信息传递是有方向性的,不同的突触进行的冲动传递效果不一样,有的使后一神经元发生兴奋,有的使其发生抑制。
由人脑神经元的工作机理,人们构造了人工神经元的数学模型,它是人脑的模拟和简化,如图5.36所示。
2x nx y树突突触细胞体轴突图5.36 McCulloch-Pitts 网络在图中,i w 是表示神经元对信息i x 的感知能力,称为关联权,()f z 称为输出函数或激活函数,采用激活函数的人工神经网络也称阈网络。
McCulloch-Pitts 输出函数定义为()1sgn(),ni i i y fz w x θ===-∑其中,sgn()⋅为符号函数,θ称为阈值。
一般来说,一个人工神经元有多个输入和一个输出,另外有一个激活函数,不同的激发函数对应了不同的网络,也决定了网络的用途。
从方程可以看出,当 i w 确定时,任给一组输入1,,i x i n ∙∙∙=,,也就很容易得到输出。
而现在我们的想法是:对给定的输入,确定权数i w ,使得通过方程计算出来的输出尽可能与实际值吻合,这即是学习的过程。
学习也称为训练,指的是通过神经网络所在环境的刺激作用调整神经网络的权数i w ,使得神经网络对外部环境以一种新的方式作出反应。
学习分为有指导学习和无监督学习:在有正确输入输出数据条件下调整和确定权数i w 的方法称为有指导学习;而在只知输入数据不知输出结果的前提下确定权数的方法称为无监督学习。
人工神经网络的主要工作就是通过学习,建立模型和确定i w 的值。
神经网络按照网络结构和激发函数的不同可分为许多种,我们在此只对感知器、BP 网络及Hopfield 神经网络进行简介。
3.感知机首先介绍单层前向神经网络。
单层前向神经网络的模型结构如图5.37所示。
或用矩阵表示为()TY f W X θ=-其中,()ij m n W w ⨯=为权系数矩阵,X Y θ,,分别为输入向量、输出向量及阈值向量。
确定权数ij w 的基本思想是修正ij w 使得输入输出偏差尽可能小。
权的修正公式为:(1)()(),()(())ij W t W t W t W t w t δδδ+=+=,()()(()())()ij t j j i m nw t d t y t x t δε⨯=-,其中,()()1,,1,,i j x t d t i m j n ∙∙∙∙∙∙==,,,分别表示第t 组用于学习的输入和期望输出数据,tε称为学习效率,用于控制调整速度。
与权值修正原理类似,阈值修正公式可假设为:1(1)()(),()(()())t j j n t t t t d t y t θθδθδθε⨯+=+=-,通过更新权数和阈值使得输入输出偏差趋于零。
若将激活函数()f ⋅取为阶跃函数,上述思想即是感知机原理。
1x x x 1n2y 输入层输出层图5.37由此,我们给出感知机学习规则算法步骤为:用t 表示学习步骤的序号,0t =表示学习前的神经网络的初始状态。
第1步:赋初值。
给网络上权数和阈值赋初值,如00ij i w θ==,;第2步:计算样本实际输出。
选择一个样本作为网络输入,计算样本在目前神经网络中的实际输出。
如,对于第p 个样本,感知机输出为:1()(()())nY p Y p Y p ∙∙∙=,,, 其中,()()1,,i ij j i Y p f w x i n θ∙∙∙=-=∑,第3步:计算误差。
计算感知机输出的实际结果与期望输出之差:()()t D p Y p δ=- 第4步:权数修正。
如果0t δ=,则转第2步,否则调整权值:(1)()(),()i i i i t i W p W p W p W p x δδηδ+=+=第5步:若训练样本已完全输入或输出误差小于预设值,则学习结束;否则,转第2步继续学习。
如果对给定的两类样本数据(通常就是用于学习的输入数据),在空间中可以用一条直线(平面)将其分开,则称该样本数据是线性样本,否则称为非线性样本,对样本进行分类或识别即属于人工神经网络的重要应用之一。
感知机可以识别二值逻辑加问题,而不能识别异或问题。
对于非线性问题,可以用反向传播(BP )模型解决。
4. BP 网络k 第层1k +第层1k 第-层图5.38 多层前向神经网络结构BP 网络应用得最为广泛,最为重要的一种神经网络。
这种网络一般有多层,有输入层,输出层和隐含层,上一层的输出即是下一层的输入,输出层所在的层数就是神经网络的层数。
一般的多层前向神经网络结构如图5.38所示。
在实际应用中,BP 网络的激活函数一般采用S 型函数:1()1zf z e-=+, 这是因为S型函数有很好的函数特性,其效果又近似于符号函数,现主要讨论采用S 型函数的多层前向神经网络的学习方法。
假设有一个K 层的神经网络,从第0层到第1层的原始输入向量、权矩阵、第1层神经元接受向量和第1层输出向量以及它们之间的关系为:012n x x X x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦ ,0111()ij n n W w ⨯=,11112111T n z z Z W X z ⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎣⎦ ,11112111()n y y Y f Z y ⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎣⎦第1k -层到第k 层的权矩阵、神经元接受向量和输出向量以及它们之间的关系分别为:1()ij k kkk n n W w -⨯=,121kkk T k k k k n z z Z W Y z -⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎣⎦ ,12()k k k k kk n y y Y f Z y ⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎣⎦其中,()k ki i y f z =。
我们先讨论单样本学习规则。
学习规则是:确定W ,使得()()()TK K F W D Y D Y =--最小,其中12()KTn D d d d ∙∙∙=,,,为理想输出。
采用S 型函数的前向多层神经网络的反推学习(BP)算法步骤如下: 第1步:选定学习的数组{()()}1,2,,X t D t t T ∙∙∙=,,,随机确定初始权矩阵(0)W ;第2步:用学习数据()X t 计算12()()()k Y t Y t Y t ∙∙∙,,,; 第3步:计算① 1111121()2()K KK K K T K Kij n n K n y y F WB w y ----⨯-⎡⎤⎢⎥⎛⎫∂⎢⎥=-⎪ ⎪⎢⎥∂⎝⎭⎢⎥⎢⎥⎣⎦,121112,,,K K K K K n K K K K K K n dy dy dy B diag W B dz dz dz ++⎡⎤=⎢⎥⎢⎥⎣⎦其中,111221,,,,KKTK K KK n n K B d y d y d y W I ++⎡⎤=---=⎣⎦。
② 2112122212()2()K K K K K T K K ij n n K n y y F W B w y -------⨯-⎡⎤⎢⎥⎛⎫∂⎢⎥=- ⎪⎪⎢⎥∂⎝⎭⎢⎥⎢⎥⎣⎦,111112111112,,,KK K K K n K K K K K K n dy dy dy B diag W B dz dz dz --------⎡⎤=⎢⎥⎢⎥⎣⎦③ 2k K ≤-时,1111121()2()k kk k k T k kij n n k n y y F WB w y ----⨯-⎡⎤⎢⎥⎛⎫∂⎢⎥=-⎪ ⎪⎢⎥∂⎝⎭⎢⎥⎢⎥⎣⎦, 其中,121112,,,k kkk k nk k k k kk n dy dy dy B diag W B dz dz dz ++⎡⎤=⎢⎥⎢⎥⎣⎦。
第4步:反向修正()W t ,修正公式为:(1)()(),1,,1k k k W t W t W t k K K δ∙∙∙+=+=-,,其中,1111121()()1()()()(())2()k kk k k Tk t t k kijn n k n y t y t F W W t t B t w y t δεε----⨯-⎡⎤⎢⎥⎛⎫∂⎢⎥=-=⎪⎪⎢⎥∂⎝⎭⎢⎥⎢⎥⎣⎦。
第5步:循环利用T 个学习样本,重复第2步~第4步,对网络权数进行调整,直到整个训练集误差最小(网络达到稳定状态)。
当激活函数1()1xf x e-=+时,1()(1())1,,1,,kj k kj j k k k jdy f z f z i n j n dz∙∙∙∙∙∙-=-==,,,代入①、②、③使计算可以得以简化。