关于作者

 一个毕业于北京大学数学力学系,在中国科学院计算所、计算中心和网络中心工作过,在澳大利亚科工组织DMS、香港浸会学院数学系和中国21世纪议程管理中心等处工作过,多次获国家和中科院科技奖并享受政府特殊津贴的退休老头。现在在【中国科普博览】网“科学新语林”栏目里开设一个《数学与计算机》的个人专栏,愿和爱好数学与计算机的各界网友和青少年朋友,谈谈对数学与计算机的看法、想法。

《常用算法之智能计算 (二) 》:神经网络计算

张建中
2018年10月23日
神经网络计算?(Neural Network Computing ?NNC)是通过对人脑的基本单元——神经元的模拟,经过输入层、隐层、输出层等层次结构,对数据进行调整、评估和分析计算,得到的一类具有学习、联想、记忆和模式识别等功能的智能算法。

神经网络计算示意图(摘自互联网)

要想比较深入的理解神经网络计算,就必须对神经网络系统有一定的理解,下面对其进行一些简单介绍。
神经网络(Neural Network,NN)是由大量的、简单的处理单元(简称为神经元)经广泛互连而形成的一个复杂网络系统,反映了人脑功能的许多基本特征,是一个高度复杂化的非线性动力学系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学习等能力,特别适合处理需要同时考虑众多因素和条件的、含不精确和模糊信息的实际问题。神经网络的发展与神经科学、数理科学、认知科学、计算机科学人工智能控制论、机器人学、心理学、分子生物学等诸多学科有关,是一门新兴的边缘交叉学科

神经网络示意图(摘自互联网)

神经网络是脑科学、神经心理学和信息科学等多学科的交叉研究领域,也是近年来高科技领域的一个新的研究热点,其目的是想通过对人脑的组成机理和思维方式等的研究,进而通过模拟人脑的结构和工作模式使机器具有类似人类的智能。
神经网络就是通过神经元、细胞、触突等结构组成的一个大型网络结构,用来帮助生物进行思考和行动。那么人们就想到了计算机是不是也可以像人脑一样具有这种结构,这样是不是就可以进行类似的思考。

神经元示意图(摘自互联网)

神经网络结构图(摘自互联网)

人脑神经网络系统的基本构造是神经元(神经细胞),是处理人体内各部分之间相互信息传递的基本单元。神经生物学家研究的结果表明,人的一个大脑一般有一千个以上的神经元,每个神经元都由一个细胞体,一个连接其他神经元的轴突和一些向外伸出的其它较短分支——树突组成。轴突的功能是将神经元的输出信号传递给别的神经元,其末端的许多神经末梢使得信号可以同时传送给多个神经元。树突的功能是接受来自其它神经元的信号,神经元细胞体将接受到的所有信号进行简单处理后再由轴突输出。神经元的树突与另外的神经元的神经末梢相连的部分称为突触,这一结构的特点决定着人工神经网络具有高速信息处理的能力。人脑的每个神经元大约有上百个树突及相应的突触,一个人的大脑形成一千个左右的突触。虽然每个神经元的运算功能十分简单,且信号传输速率也较低,但由于各神经元之间的极度并行互连功能,最终使得一个普通人的大脑在约1秒内就能完成现行计算机至少需要数10亿次运算处理能力才能完成的任务。
人脑神经网络的知识存储容量很大。在神经网络中,知识与信息的存储表现为神经元之间分布式的物理联系,分散地表示和存储于整个网络内的各神经元及其连线上。每个神经元及其连线只表示一部分信息,而不是一个完整的具体概念,只有通过各神经元的分布式综合效果才能表达出特定的概念和知识。
由于人脑神经网络中神经元个数众多以及整个网络存储信息容量巨大,使得它具有很强的不确定性信息的处理能力,即使输入信息不完全、不准确或模糊不清,神经网络仍然能够通过联想思维得到存在于记忆中事物的完整图象,只要输入的模式接近于训练样本,系统就能给出正确的推理结论。
下图中的x1、x2、x3等表示输入值,构成第一层L1,组成输入层;中间的圆形成L2、 L3?、L4等多个层次,组成隐层;神经元经过多层的调整、评估和分析计算处理后得出hw,b(x)的结果作为神经元的输出值,构成输出层,组成人们常说的人工神经网络。

神经网络神经元结构示意图(摘自互联网)

上图中的橙色圆都是用来计算hw,b(x)的,纵向我们叫做层(Layer),每一层都以前一层的结果做为输入,经过处理得到输出结果传递给下一层
如果我们把神经网络看做一个黑盒子,那么最左边的x1、x2、x3等是这个黑盒子的输入X,最右边的hw,b(x)是这个黑盒的输出Y,可以通过一个数学模型进行拟合,通过大量数据来训练这个模型,之后就可以通过训练好的模型预估新的样本X应该能得出什么样的结果Y。
以上简单说明神经网络的结构,通过较深的多个层次来模拟真实情况,从而构造出最能表达真实世界的模型,它的运作成本就是海量的训练数据和巨大的计算处理工作量。
正是因为人脑神经网络的结构特点和其信息存储的分布式特点,使得它相对于其它的判断识别系统,如专家系统、层次分析系统等,具有显著的稳健性优点。生物神经网络不会因为个别神经元的损失而失去对原有模式的记忆,最有力的证明是,当一个人的大脑因意外事故受轻微损伤之后,并不会失去原有事物的全部记忆。神经网络也有类似的情况。因某些原因,无论是网络的硬件实现还是软件实现中的某个或某些神经元失效时,整个网络仍然能继续工作。
人工神经网络是一种非线性的处理单元。只有当神经元对所有的输入信号的综合处理结果超过某一门限值后才输出一个信号,因此神经网络是一种具有高度非线性的超大规模连续时间动力学系统,突破了传统的以线性处理为基础的计算机的局限性,标志着人们智能信息处理能力和模拟人脑智能行为能力的一大飞跃。
神经网络经过多年的研究和发展,已经形成了几十种类型不同并各具特点的神经网络模型,分析处理算法也各具特点,所以下面只简单的介绍几种典型的常用神经网络。
1多层感知网络它是一类具有三层或三层以上的阶层型神经网络。典型的多层感知网络是三层、前馈型的阶层网络,即含有输入层、隐层(也称中间层、隐含层)和输出层。相邻层之间的各神经元实现全连接,即下一层的每一个神经元与上一层的每个神经元都实现全连接,而且每层各神经元之间无连接。但它并非十分完善,存在以下一些主要缺陷:学习收敛速度慢、网络的学习记忆具有不稳定性,当给一个训练好的网提供新的学习记忆模式时,将使已有的连接权值被打乱,导致已记忆的学习模式的信息的消失。
2竞争神经网络它是基于人的视网膜及大脑皮层对剌激的反应而引出的一类神经网络。神经生物学的研究结果显示生物视网膜中有许多特定的细胞,对特定的输入模式如图形比较敏感,并使得大脑皮层中的特定细胞产生大的兴奋,而其相邻的神经细胞的兴奋程度被抑制。对于某一个输入模式,通过竞争在输出层中只激活一个相应的输出神经元。许多输入模式,在输出层中将激活许多个神经元,从而形成一个反映输入数据的“特征图形”。竞争神经网络是一种以无教师方式进行网络训练的网络,通过自身训练,自动对输入模式进行分类。竞争型神经网络及其学习规则与其它类型的神经网络和学习规则相比,有其自己的鲜明特点。在网络结构上,它既不象阶层型神经网络那样各层神经元之间只有单向连接,也不象全连接型网络那样在网络结构上没有明显的层次界限。它一般是由输入层(模拟视网膜神经元)和竞争层(模拟大脑皮层神经元,也叫输出层)构成的两层网络。两层之间的各神经元实现双向全连接,而且网络中没有隐含层,有时竞争层各神经元之间存在横向连接。竞争神经网络的基本思想是网络竞争层各神经元竞争对输入模式的响应机会,最后仅有一个神经元成为竞争的胜利者,并且只将与获胜神经元有关的各连接权值进行修正,使之朝着更有利于它竞争的方向调整。神经网络工作时,对于某一输入模式,网络中与该模式最相近的学习输入模式相对应的竞争层神经元将有最大的输出值,即以竞争层获胜神经元来表示分类结果。这是通过竞争得以实现的,实际上也就是网络回忆联想的过程。
竞争型神经网络的缺点和不足之处在于它仅以输出层中的单个神经元代表某一类模式,所以一旦输出层中的某个输出神经元损坏,则导致该神经元所代表的该模式信息全部丢失。
3霍普菲尔网络(Hopfield networkHN)它是一个由非线性元件构成的全连接型单层反馈系统。网络中的每一个神经元都将自己的输出通过连接权传送给所有其它神经元,同时又都接收所有其它神经元传递过来的信息,即网络中的神经元t时刻的输出状态实际上间接地与自己的t-1时刻的输出状态有关。所以,霍普菲尔神经网络是一个反馈型的网络,状态变化可以用差分方程来表征。反馈型网络的一个重要特点就是它具有稳定状态。当网络达到稳定状态的时候,也就是它的能量函数达到最小的时候。这里的能量函数不是物理意义上的能量函数,而是在表达形式上与物理意义上的能量概念一致,表征网络状态的变化趋势,并可以依据霍普菲尔工作运行规则不断进行状态变化,最终能够达到的某个极小值的目标函数。网络收敛就是指能量函数达到极小值。如果把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,那么霍普菲尔神经网络就能够用于解决优化组合问题。
霍普菲尔神经网络的能量函数是朝着梯度减小的方向变化,但它仍然存在一个问题,那就是一旦能量函数陷入到局部极小值,它将不能自动跳出局部极小点,到达全局最小点,因而无法求得网络的整体最优解
4. BP(back propagation)神经网络它有一种按照误差逆向传播训练的算法、以此增强网络的分类和识别能力、解决非线性问题而采用多层前馈网络,即在输入层和输出层之间加上隐层,构成多层前馈感知器网络,是一种对非线性可微分函数进行权值训练的多层网络。BP神经网络算法就是以网络误差平方为目标函数、采用梯度下降法来计算目标函数的最小值。
BP神经网络是目前应用最广泛的神经网络,这里将对其算法进行一些进一步的介绍。
BP神经网络算法是一种有监督式的学习算法,由输入层、中间层、输出层组成的多阶层神经网络,中间层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接。网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值,然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能的接近。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。粗略的计算步骤如下:
(1)初始化,随机给定各连接加权值[wij],[vjt]及阈值 i,rt
(2)根据给定的输入输出模式,经计算隐层、输出层各单元的输出结果为:
bj=f(?wijai- j),?ct=f(?vjtbj-rt);
式中bj为隐层第j个神经元的实际输出;ct为输出层第t个神经元的实际输出;wij为输入层至隐层的连接权;vjt为隐层至输出层的连接权;
(3)选取下一个输入模式,返回第2步反复训练,直到网络的输出误差达到要求时结束训练。
传统的BP算法,实质上是把一组样本输入/输出问题转化为一个非线性优化问题,并通过梯度下降算法,利用迭代运算求解权值问题的一种学习方法,但其收敛速度慢且容易陷入局部极小,可用高斯消元法进行改进。欲了解更详细的算法,可参考其他有关文献。
BP神经网络最主要的优点是具有极强的非线性映射能力。理论上,对于一个三层和三层以上的BP网络,只要隐层神经元数目足够多,该网络就能以任意精度逼近一个非线性函数。其次,BP神经网络具有对外界刺激和输入信息进行联想记忆的能力。这是因为它采用了分布并行的信息处理方式,对信息的提取必须采用联想的方式,才能将相关神经元全部调动起来。这种能力使其在图像复原、语言处理、模式识别等方面具有重要应用。再次,BP神经网络对外界输入样本有很强的识别与分类能力。由于它具有强大的非线性处理能力,因此可以较好地进行非线性分类,解决了神经网络发展史上的非线性分类难题,使其具有优化计算的能力。BP神经网络本质上是一个非线性优化问题,它可以在已知的约束条件下,寻找一组参数组合,使该组合确定的目标函数达到最小。不过,其优化计算存在局部极小问题,必须通过改进才能进一步完善。
多层神经网络可以应用于线性系统和非线性系统中,对于任意函数模拟逼近。当然,感知器和线性神经网络能够解决这类网络问题。但是,虽然理论上是可行的,但实际上BP网络并不一定总能有解。
对于非线性系统,选择合适的学习率是一个重要问题。在线性网络中,学习率过大会导致训练过程不稳定;相反,学习率过小又会造成训练时间过长。和线性网络不同,对于非线性多层网络很难选择很好的学习率。
非线性网络的误差面比线性网络的误差面复杂得多,问题在于多层网络中非线性传递函数有多个局部最优解。寻优的过程与初始点的选择关系很大,初始点如果更靠近局部最优点,而不是全局最优点,就不会得到正确的结果,这也是多层网络无法得到最优解的一个原因。为了解决这个问题,在实际训练过程中,应重复选取多个初始点进行训练,以保证训练结果的全局最优性。网络隐层神经元的数目也对网络有一定的影响。神经元数目太少会造成网络的不适性,而神经元数目太多又会引起网络的过适性。
BP神经网络无论在网络理论还是在性能方面都已比较成熟,突出优点就是具有很强的非线性映射能力和柔性的网络结构。网络的中间层数、各层的神经元个数可根据具体情况任意设定,并且随着结构的差异其性能也有所不同。但BP神经网络也存在缺陷,主要表现在学习速度慢,容易陷入局部极小值,网络层数、神经元个数的选择还缺少相应的理论指导。
人工神经网络能较好的模拟人的形象思维,对信息具有很好的隐藏性,还具有容错性强、稳健性强和自学习性强等特点,是一个大规模自组织、自适应且具有高度并行协同处理能力的非线性动力系统。人工神经网络理论的应用已经渗透到多个领域,诸如信息处理、自动化、工程应用、经济发展评价和辅助决策及医学领域中的检测数据分析和医学专家系统等。
总起来看,神经网络模型与传统计算模型不同。从计算方式上讲,神经元网络计算把一些简单的、大量的计算单元连接在一起,形成网络计算,代替只用一个计算单元进行计算的传统模式,也就是用分布式、并行计算代替集中式、串行计算;从模型构建上讲,传统的计算方法采用从上到下的方式预先构建数学模型,在神经元网络中,系统通过采集数据并进行学习的方法在计算过程中构建数据模型,进而建立网络结构;综合讲来,神经元网络适应性较强,并行计算处理速度较快,对经验知识要求较少。
一般来讲,神经网络在规模比较小时效果不错。规模可用三个指标来衡量:特征数量(通常在二三百个左右)、训练样本数(通常由几千到几万)和分类数(通常有几十个)。当问题规模变大时,比如特征数过千、训练样本数达到了几万甚至几十万,特别是分类数达到几百、上千,这时的神经元网络计算可能会出现一些问题。
人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式、语音识别、非结构化信息处理方面的缺陷,使之在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。人工神经网络与其它传统方法相结合,将推动人工智能和信息处理技术不断发展。近年来,人工神经网络正向模拟人类认知的道路上更加深入发展,与模糊系统、遗传算法、进化机制等结合,形成计算智能,成为人工智能的一个重要的研究方向,将会在实际应用中得到进一步发展,将信息集合应用于人工神经网络研究,为人工神经网络的理论研究开辟了新的途径。
神经元网络计算越来越受到人们的关注,为解决大型复杂度高的问题提供了一种相对来说比较简单的有效算法,能较容易地解决具有上百个参数的分类和回归计算中一些常见的问题。