神经网络的一般性介绍及局部搜神经网络的一般性介绍及局部搜索训练算法索训练算法报告人谭松波时间2004-3-18主要内容主要内容z人工神经网络的发展过程z人工神经网络的基本原理z前馈式神经网络模型及经典算法z局部搜索训练算法人工神经网络是目前国际上信息领域中迅速发展的前沿研究方向之一,具有广泛的应用前景。对它的研究已取得了很多丰硕的成果。神经网络系统是由大量简单的处理单元(即神经元)广泛连接而成的复杂网络系统。它反映了人脑功能的许多基本特性,但它并不完全是人脑神经网络系统的真实写照,而只是对其作某种简化、抽象和模拟。神经网络的发展历史神经网络的发展历史神经网络的研究已有50多年的历史,它的发展道路是曲折的,几经兴衰,目前已在许多领域得到了成功的应用。人工神经网络的研究始于本世纪40年代。1943年,心理学家McCulloch和数学家Pitts合作,融合了生物物理学和数学,提出了第一个神经元计算模型—MP模型。这种单个神经元模型功能较弱,但连接而成的网络记忆能力巨大。这种巨大的记忆能力存储在网络中足够多的神经元之间丰富的连接强度上。MP模型虽然简单,但它开创了神经网络模型的理论研究,为各种神经元模型及网络模型的研究打下了基础。1949年心理学家Hebb提出神经元之间突触联系强度可变的假设。他认为学习过程是在突触上发生的,突触的联系强度随其前后神经元的活动而变化。根据这一假说提出了改变神经元连接强度的Hebb规则。它对以后人工神经网络的结构及算法都有很大影响。直到现在,Hebb的学习算法仍在不少人工神经网络中应用。50年代末,Rosenblatt提出感知器模型。这是一种学习和自组织的心理学模型。这是第一个真正的人工神经网络,他给出了两层感知器的收敛定理。后来的一大类神经网络模型都是感知器模型的变形。60年代末,美国著名人工智能学者Minsky和Papart对Rosenblatt的工作进行了深入的研究,写了很有影响的《感知器》一书,指出感知器的处理能力有限,单层感知器只能作线性划分,对于非线性或其他分类会遇到很大的困难。这时应采用含有隐单元的多层神经网络,但引入隐单元后找到一个有效的学习算法非常困难,Minsky断言这种感知器无科学研究价值可言,包括多层的也没有什么意义。这个结论对当时的神经网络研究无疑是一个沉重的打击,客观上对神经网络的研究起了一定的消极作用。同时当时的微电子技术也无法为神经网络的研究提供有效的技术保障。故在其后的十几年内,从事神经网络研究的人数及经费支持大大下降,神经网络研究处于低潮。然而在此期间,仍有为数不多的学者致力于神经网络的研究,1969年Grossberg等提出了自适应共振理论模型。1972年Kohenen提出自组织映射的理论模型,并称神经网络为联想存贮器。所有这些理论为神经网络的进一步发展奠定了理论基础。1982年,美国加州工程学院物理学家Hopfield提出了一个用于联想记忆及优化计算的新途径—Hopfield模型,并于1984年进行修改,提出了利用模拟电路的基础元件构成了人工神经网络的硬件原理模型,为实现硬件奠定了基础。1985年Hopfield和Tank提出用神经网络解决优化问题。这一时期还有一个以Rumelhart和McClelland为首的并行分布处理(PDP)的研究小组,他们提出了多层网络学习的误差反向传播学习算法(BP算法),解决了多层网络的学习问题,从实践上证实了人工神经网络具有很强的学习能力,并不象Minsky等人预料的那样弱,相反它可以完成许多学习任务,解决许多实际问题,也因此推动了前馈式神经网络的研究。BP算法目前已成为迄今为止应用最普遍的神经网络学习算法。人工神经元的模型人工神经元的模型输入函数输入函数输入区的功能是将输入信号b的各分量以一定的规则综合成一个总输入值p,不同的网络和不同性质的神经元采用不同的综合规则,综合规则可以形式化为用某个输入函数表示,最常用的输入函数是“加权和”形式,如下所示:∑==jjjbwbWfp),(活化函数活化函数活化函数分为线性与非线性,最简单的线性活化函数就可以采用恒同函数;而非线性活化函数中的常用函数即是Sigmoid函数,具有这种活化功能的神经元组成的神经网络具有强大的表达能力。a=g(p)=1/(1+exp(-cp))前馈式神经网络前馈式神经网络各种神经元以层状方式组成前馈式神经网络。每一层由多个节点(神经元)组成,每层中的节点与相邻层中的节点通过权值连接;但与同层中的其他节点和非相邻层中的节点没有连接。第一层为输入层,最后一层为输出层,中间为隐层。神经元的输入函数为“加权和“的形式,活化函数为S型函数。前馈式神经网络的逼近能力前馈式神经网络的逼近能力前馈式神经网络的输入输出关系,可以看成是一种映射关系,即每一组输入对应着一组输出。由于网络中神经元的活化函数的非线性,使网络实现的是复杂的非线性映射。Hornik的等人的研究表明三层前馈式神经网络不仅能以任意精度逼近任意函数,还能以任意精度逼近其各阶导数。BPBP算法算法Rumelhart和McClelland领导的PDP小组提出了前馈式神经网络的学习算法,即BP算法,解决了多层网络的学习问题,从实践上证实了人工神经网络具有很强的运算能力,使BP算法成为前馈式神经网络的经典算法。BPBP算法算法BP算法采用的是经典优化理论中的最速下降法,它使期望输出与实际输出之间的误差平方和最小,即∑∑∑∑∑∑−=−=pipikpkjkjijppiiiybwgwgyOE22)))((()(权值修正公式权值修正公式)()()1(kijkijkijwEww∂∂−=+ηBPBP算法的不足算法的不足z1收敛速度非常缓慢z2初始值比较敏感z3权值调节路径常常呈现锯齿型局部搜索训练算法局部搜索训练算法z本算法的结构非常简单,收敛速度很快,而且不依赖于初始点。实验结果表明本算法不仅能有效地训练小样本问题,而且对大样本的训练问题也取得了很好的效果。局部搜索算法局部搜索算法z局部搜索算法是一类近似算法的通称,它从一个初始解开始,每一步在当前邻域内找到一个更好的解,使目标函数逐步优化,直到不能进一步改进为止。局部搜索算法通常得到的是局部最优解。为了得到全局最优解,需要从多个初始解进行搜索。实验表明,局部搜索算法对很多著名的NP难度问题,取得了很大的成功z局部搜索算法简单然而高效,究其原因在于它的多次重复搜索操作,虽然从某个初始点出发的成功的可能性较小,然而多次重复之后,却能以很大的概率求得问题的解。z因此,我们需要为算法设计一个随机扰动策略,以得到较好的初始点。z首先,需要判断是否已陷入局部极小,为此我们采用了两个标准来判断:(1)连续常数(比如10)个训练步内没有搜索到更好的解;(2)连续常数(比如100)个收敛步内收敛的程度太小。z基本算法在每一个训练步内只有一个变量的值在改变,对三层感知器来说,也就只有一个隐含层节点的隐含权或者输出层节点的输出权发生改变。z若是前者,就会导致一个隐含层节点的输出发生改变,其它隐含层节点的输出不变,但所有输出层节点的输出都会改变;z若是后者,则所有隐含层节点的输出不变,只有一个输出层节点的输出发生改变,其它输出层节点的输出不变。z因此,每一次搜索,我们没有必要对所有的节点都计算一次输出,而只需要计算发生改变的节点的输出。显然,计算量会大大降低。z实验数据均取自经典的神经网络训练样本数据。我们采用三层感知器网络。用来对比的算法有:BP算法和采用动量项的BP算法。对每一个实例的训练,我们选取相同的网络结构和激化函数。z我们选取五个实例,即数字识别问题、sin(x)函数拟和问题、TwoNorm问题、Building问题和MushRoom问题。在这些实验中,BP算法依赖于初始点,不同的初始点差距较大,我们就选取较好的结果进行比较。而局部搜索多次运算都能得到非常类似的结果,我们就任意选取一个结果进行比较。实验结果实验结果数字识别问题数字识别问题sin(x)sin(x)函数拟和问题函数拟和问题BuildingBuilding问题问题TwoNormTwoNorm问题问题TwoNormTwoNorm问题问题MUSHROOMPROBLEMMUSHROOMPROBLEMMUSHROOMPROBLEMMUSHROOMPROBLEM结论结论z本算法采用局部搜索来处理多层感知器的训练问题。实验结果表明本算法无论是小样本问题还是大样本问题,都取得了很好的效果。因此,我们认为局部搜索训练算法是一个简单而有效的多层感知器的训练算法。