1、人工神经网络在 ARM 平台上的应用引言人工神经网络 ANN(Artificial Neural Network)是在对人脑组织结构和运行机制的认识理解基础之上,模拟其结构和智能行为的一种工程系统。作为一门多学科、综合性的研究领域,于 20 世纪 80 年代初复兴以来, 在全世界掀起了一股空前广泛的研究热潮。目前,人工神经网络已被广泛应用于各个领域,包括商业及经济估算、自动检测和监视、计算机视觉、语音处理、机器人及自动控制、优化 ARM/ANN/BP 网络/人工神经网络问题、航空航天、银行金融业和工业生产等。多数情况下,人工神经网络都是在内存大、运算快的计算机上应用。这是因为人工神经网络一般都
2、要先针对特定的问题进行学习训练;而学习训练运算量相当大,往往会花费很长的时间(几小时、几天甚至更长时间),并且嵌入式系统中的内存大小和通用微处理器处理速度都无法与计算机相比,所以要照搬计算机的处理方法会花费更长的时间。这一点就限制了人工神经网络在时效性要求较高的嵌入式系统中应用。事实上,人工神经网络技术很早就在嵌入式系统中得到了应用,但大多都是针对特定的问题在专用的芯片中应用,而通用芯片却达不到要求。当然,也有专业的神经网络芯片,但价格较贵,不能满足成本要求。针对这个矛盾, 提出一种在 ARM 芯片上应用神经网络技术的方案。32 位的ARM(Advance RISC Machines)微处理器
3、 ,以其低成本、低功耗、高性能的特点在嵌入式领域被广泛使用。本方案已经在 Motorola 公司的龙珠 MC9328MX1(ARM920T)上成功实现。该方案能在 ARM/ANN/BP 网络/人工神经网络不增加硬件成本的基础上,仅通过软件编写,就能把神经网络建立在嵌入式系统上,并且快速高效地发挥神经网络的作用。1 人工神经网络介绍人工神经网络是根据人们对生物神经网络的研究成果设计出来的,由一系列的神经元及相应的连接构成,具有良好的数学描述;不仅可以用适当的电子线路来实现,更可以方便地用计算机程序加以模拟。早在 20 世纪 40 年代初期,心理学家McCulloch、数学家 Pitts 就提出了
4、人工神经网络的第一个数学 ARM/ANN/BP 网络/人工神经网络模型,从此开创了神经科学理论的研究时代。其后,学者们又先后提出了感知器网络、BP 网络、自组织网络、Hopfiled 网络、Elman 网络等各种模型,目前已有 200 多种网络模型, 十几种常用算法,使得人工神经网络技术得以蓬勃发展。它的应用领域也十分广阔,特别是在信息、汽车、军事、化学、水利等工程领域,神经网络的作用越来越显著。1 1 人工神经网络的特点人工神经网络在结构上并行处理、分布式存储,因此运算速度快,具有较理想的容错性; 同时 ARM/ANN/BP 网络/ 人工神经网络还具有自学习、自组织、自适应能力。它是由大量的
5、神经元广泛互连而成的系统,这个结构特点决定着人工神经网络具有高速信息处理的能力。人工神经网络的知识存储容量很大。在神经网络中,知识与信息的存储表现为神经元之间分布式的物理联系。它分散地表示和存储于整个网络内的各神经元及其连线上。每个神经元及其连线只表示一部分信息,而不是一个完整的具体概念。只有通过各神经元的分布式综合效果才能表达出特定的概念和知识。由于人工神经网络中神经元个数众多以及整个网络存储信息容量的巨大,使得它具有很强的不确定性信息处理能力。即使输入信息不完全、不准确或模糊不清,神经网络仍然能够联想思维存在于记忆中的事物的完整图像。只要输入的模式接近于训练样本,系统就能通过联想记忆给出正
6、确的推理结论。正是因为人工神经网络的结构特点和其信息存储的分布式特点,使得它相对于其他的判断识别系统,如专家系统等, 具有另一个显著的优点健壮性。生物神经网络不会因为个别神经元的损失而失去对原有模式的记忆。最有力的证明是,当一个人的大脑因意外事故受轻微损伤之后,并不会ARM/ANN/BP 网络/人工神经网络失去原有事物的全部记忆。人工神经网络也有类似的情况。因某些原因,无论是网络的硬件实现还是软件实现中的某个或某些神经元失效,整个网络仍然能继续工作。人工神经网络同现行的计算机不同,是一种非线性的处理单元。只有当神经元对所有的输入信号的综合处理结果超过某一门限值后才输出一个信号,因此神经网络是一
7、种具有高度非线性的超大规模连续时间动力学系统。它突破了传统的以线性处理为基础的数字电子计算机的局限,标志着人类智能信息处理能力和模拟人脑智能行为能力的一大飞跃。1 2 人工神经网络的基本功能(1 ) 联想记忆可以从不完整的信息和噪声干扰中恢复原始的完整信息,并对从未遇到过的新情况能根据以往的经验作出合理的分析和判断。这一能力使其在图像复原、图像和语音处理、模式识别、分类等方面具有巨大的应用价值。(2 ) 非线性映射可以用独特的方式对很复杂的非线性问题作分析、归纳和表述,并作出合适的处理。(3 ) 分类与识别神经网络可以很好地解决对非线性曲面的逼近,可以以任意精度逼近任意曲线,因此比传统的分类器
8、具有更好的分类与识别能力。(4 ) 优化计算神经网络经过动态演变过程达到稳定状态时,对应的能量函数最小,从而其稳定状态就是问题的最优解。(5 ) 知识处理主要优点是能够自适应样本数据。当数据中有噪声、形变和非线性时,它能够正常地工作。2 BP 网络原理误差逆传播神经网络,简称 BP(Back Propagation)网络,是应用最广的一种人工神经网络。人工神经网络模型可分为三类:前向网络、反馈网络和自组织网络。BP 网络属于前向网络。主要用于函数逼近、模式识别、分类及数据压缩等方面。2 1BP 神经网络结构BP 神经网络是一种具有三层或三层以上阶层结构的神经网络。层间各种神经元实现全连接,即下
9、层的每一个单元与上层的每个单元都实现权连接,而每层各神经元之间不连接,如图 1 所示。由于 BP 神经网络及其算法增设了中间隐含层而且有相应的学习规则可循,使其具有对非线性模式的识别能力;尤其是其数学意义明确、算法步骤分明,更使其具有广泛的应用前景。一个典型的 BP 神经网络由三层构成:输入层、隐含层和输出层。各阶层之间实行全互连方式。BP 网络是一种单向传播的多层前向网络。它通过大量样本进行有导师学习,不断减小网络输出与用户要求间的距离,逼近要求。其学习训练由四个过程组成: 输入模式由输入层经中间层向输出层的“模式顺传播”过程,得到了最初网络的输出; 由网络的期望输出与网络实际输出之差得到的
10、误差信号,从输出层经中间层向输入层逐渐修正连接权的“误差逆传播”过程; “模式顺传播” 与“误差逆传播”的反复交替进行的网络 “记忆训练”过程,用各样本反复迭代 ,不断修正连接权 ; 网络趋向收敛,即网络的全局误差趋向极小值的“学习收敛”过程。网络收敛后,就达到用户的要求, 训练过程结束。可以看出,BP 网络的训练过程归结起来为: 模式顺传播误差逆传播记忆训练学习收敛。2 3BP 神经网络训练算法图 1 中输入层、隐层和输出层的单元数分别为 N、L 和 M。输入层各神经元输入为 I0,I1,IN-1;隐层各神经元的输出为M0,M1,ML-1;网络实际输出层各神经元输出为O0,O1,OM-1;训
11、练样本期望各神经元输出值为E0,E1,EM-1;输入单元 i 到隐层 j 的权值为 Vij,隐层 j 到输出单元 k 的权值为 Wjk。BP 网络训练过程具体算法如下: 将权值初始化为 -1.01.0 之间的随机数; 从样本中提取特征,取出 I0,I1,IN-1 输入网络,指定期望输出 E0,E1,EM-1; 计算隐层输出 M0,M1,ML-1 和网络实际输出O0,O1,OM-1; 计算实际输出与期望输出的误差; 调整权值 W(n+1)jk=W(n)jk+kMj(1)W(n+1)ij=V(n)ij+jIi(2)式中 为学习步长, 为局域梯度。 返回,用所有训练样本反复训练网络,多次迭代, 直到
12、权值达到稳定。实际训练时,定义出反映实际输出与期望输出误差平方和的度量值为 EP=12M-1k=0(Ek-Ok)2(3 )收敛条件为 Error=1PP-1P=0EP(4 )式中 P 为训练样本数, 为给定的误差范围。当满足此条件时训练结束。3 方案设计大多人工神经网络程序都是在计算机上运行的,但在嵌入式领域中,更多应用都是针对便携式设备的;而目前嵌入式系统中,内存容量和通用处理器 ARM/ANN/BP 网络/人工神经网络的处理能力都无法与计算机相比。这就限制了其处理能力,导致了嵌入式系统在应用人工神经网络时有时效性不好的先天缺陷。在暂时不能提高芯片处理能力的情况下,为了克服这个缺陷,就要让嵌
13、入式系统尽量少参加运算,集中资源仅处理必要的任务来提高时效性。也就是说,在应用神经网络技术时,把运算量大的、耗时多的任务 ARM/ANN/BP 网络/人工神经网络交给 PC 机先完成,而仅把用户要使用的应用程序部分载入嵌入式系统,这样可以大大地提高嵌入式系统在应用人工神经网络时的时效性。于是,可以把整体工作分为两部分。第一部分包括网络的建立、学习训练以及检测。这部分应该在 PC 机上实现, 当网络经过训练,收敛后,计算得到了合适的各网络参数,将这些参数存入一个文件。第二部分 ARM/ANN/BP 网络/人工神经网络包括重新复原网络、用户使用界面及其他对用户进行各种服务的应用程序。这部分程序将在
14、嵌入式系统上运行。需要注意的是,在嵌入式系统使用神经网络处理问题之前,必须把预先在 PC 机上经过长时间学习训练得到的网络参数文件先装入嵌入式系统。因为嵌入式系统要根据这些网络参数在嵌入式系统中重新复原出结构合理的神经网络。也可以直接把网络参数文件与第二部分的应用程序放在一起,编译生成在 ARM 上运行的可执行代码,然后下载到嵌入式系统中运行。4 人工神经网络在 ARM 平台上的实现目前,成熟的 BP 网络算法代码很多。设计者只需要针对处理的特定问题而确定网络的规模,即确定网络层数和每层神经元数目。也可以再选择适当的动量因子、学习步长等极少的几个参数,然后调用 BP 网络算法代码进行迭代运算。
15、直到网络收敛后,将得到的网络各权值等参数存入网络参数文件就可以了。这第一部分的工作在 PC 机上完成,比较简单。第二部分是嵌入式系统中运行的程序,应该按照实际问题的要求,在需要时从第一部分生成的网络参数文件中取出各个网络参数复原网络。然后根据用户要求,将输入模式输入神经网络,由网络进行前向计算得出结果,从而快速合理地解决问题。因为在嵌入式系统中,只对网络进行前向运算,所以运算量相当小,瞬间即可完成。对于处理较复杂的非线性问题,这种处理方法会比普通算法快, 并且因为它使用了第一部分在 PC 机上训练好的神经网络 ,所以具有普通算法不具备的容错、联想、自适应能力,而且整个应用具有非常好的健壮性。人
16、工神经网络的应用部分只是作为解决问题的一种方法,应该包含在应用程序内。应用程序代码编写完毕后,可以在 PC 上使用 GNU 提供的交叉编译工具编译出 ARM平台上的可执行代码。如果在 ARM 平台上移植了嵌入式Linux 操作系统,还可以使用 GNU 的调试工具,如gdb、gdbserver、kgdb 等,方便地对目标板上 Linux 下应用程序进行调试。5 试验在 MC9328MX1 处理器(ARM920T )的硬件平台上, 移植嵌入式 Linux 操作系统。在该系统中加入运用神经网络进行文字识别的应用程序,对国家 863 字库中的前 100 个字进行识别。先在 PC 机上进行了 10 个小时训练,识别率达到 99%。运用得到的神经网络参数文件,在嵌入式系统中重新复原网络,进行识别应用,会有同样的识别率。识别过程在瞬间完成,具有非常好的时效性。该技术可以方便地应用在 PDA 等嵌入式产品中进行快速高效的文字或者其他用途的模式识别。结语人工神经网络作为一种交叉学科正受到人们的关注,同时也正被广泛应用于各个领域。在嵌入式领域的应用中,必须要克服时效性不好的缺点。文中提出的将训练和应用两部分分离的方法是一个有效的方法。该方法会推动人工神经网络在嵌入式领域更广泛地应用,特别是对于时效性、可靠性要求都很高的便携式设备,具有更广阔的应用前景。