1 引言
BP神经网络归类于前馈型神经网络,原始信息由输入单元输入,经输入单元分配到隐含层的各神经元,除输入层以外,每个神经元的信息是由上一层神经元状态与相对应的连接权值决定的,输出层可以认为是最后一层隐含层。除输出层外,每一个神经元都与下一层的各神经元相连,而同一层的神经元之间没有连接。
BP神经网络主要应用于非线性函数的逼近、数据压缩、模式识别、分类等领域。
在BP神经网络中选择合适的网络层数、各层神经元个数及训练函数就可以实现从输入到输出的非线性映射。其学习过程可分为工作信号的正向传播和误差的反向传播两个过程,传播过程如图1所示。
(1)工作信号的正向传播
信号由输入经过隐含层到输出层,在信号向前传播的过程中,网络的各层权值是固定不变的,每一层神经元的信息只影响下一层的神经元而不会影响同层或者上一层神经元。如果输出层的输出结果与期望值不同就转入误差的反向传播。
(2)误差的反向传播
网络的输出与期望值之间的差值就是误差信号。误差信号由输出层开始逐层向前传播,并且将误差分摊给各层的所有神经元,再由此获得各个层的误差信号,通过修正各神经元之间的连接权值,使误差减小。这个通过信号的正向传播和误差的反向传播来不断修正各神经元之间的连接权值的过程是不断进行的,一直运行到预先设定的训练步数或者达到设定的误差就停止。
2 BP神经网络的应用
2.1 基于BP神经网络函数逼近的实现
2.1.1 BP神经网络的函数逼近能力
BP神经网络是一个输入到输出的高度非线性映射,即F:Rn→Rm,f(x)=Y。对于样本集合:输入xi和yi输出都可认为存在某一映射g使得g(xi)=yi(i=1,2,3...)成立。求出一个映射f,使得在某种意义下,f是g的最佳逼近。
2.1.2基于BP神经网络函数逼近的Matlab实现
设要逼近的非线性函数是:y=5+2e(1-x)cos(2πx),-0.4?x?3.6。建立一个三层网络,设置隐含层神经元个数为20,最小误差为0.01最大训练步数为50。编写Matlab程序,得到误差曲线如图2所示。
由仿真结果图可以得出,经过训练后的曲线和原函数曲线非常接近,由此说明,训练后的神经网络函数逼近效果很好。
2.2 BP神经网络在图像压缩中的应用
图像是最重要的一种信息传递方式,然而,图像数据量大给信息传递带来了困难,当前的硬件技术所能提供的存储资源和网络宽带远不能满足日益增长的图像传递要求。图像作为一种重要的资源,对它进行压缩处理在一定程度上能够减缓它对硬件的要求。
2.2.1 图像冗余
图像数据压缩的根本方法是减小图像冗余,数据图像的冗余主要表现在以下几种形式:空间冗余、时间冗余、结构冗余、视觉冗余、知识冗余等,有了图像的这些冗余信息,就找到了图像压缩的根据。此外,根据大面积着色原理,图像必须在一定面积内存在相同或相近的颜色,图像中相邻像素间存在的相似性产生了图像预测编码。
2.2.2 图像压缩的分类及图像性能指标
图像压缩的实质就是去除多余数据,依据在压缩过程中是否有信息损失,可以将图像压缩分为两种,有损压缩和无损压缩。无损压缩没有信息的损失,解压后可以完全恢复,例如一些文件的压缩都可以完全恢复。有损压缩则不能完全恢复,有一定的信息损失,但不会影响对信息的理解。
目前比较流行的压缩方式有JPEG压缩,基于小波变换的图像压缩算法,分型压缩,矢量量化压缩。依据BP神经网络对非线性能够无限逼近的能力,可以保证在比较高的图像质量下尽可能实现较高的压缩比。
图像性能指标有图像的信噪比及峰值信噪比。
(1)图像的信噪比(SNR)是衡量图像质量高低的重要指标,见公式(5),其中M和N是图像长和宽上的像素点数,f(i,j)和g(i,j)分别是原始图像和重构图像在点(i,j)处的灰度值,信噪比越高说明图像质量越高。
SNR=10log
(1)
(2)峰值信噪比经常用作图像压缩等领域中信号重建质量的测量方法,见公式(6),其中M和N是图像长和宽上的像素点数,f(i,j)和g(i,j)分别是原始图像和重构图像在点(i,j)处的灰度值,其值越大,表示图像失真越小。
PSNR=10log
(2)
2.3 BP神经网络实现图像压缩
由上述可知,BP神经网络可以逼近非线性函数,而图像的各像素点之间是非线性关系,故运用BP神经网络,通过选取合适的网络层数和训练函数就可以实现图像压缩。
2.3.1 网络层数的选择
神经网络设计中,隐含层层数的确定要根据实际应用的需要。虽然隐含层层数多可以降低误差,提高精确度,但是也增加了神经网络的训练时间,而误差完全可以通过改变隐含层神经元个数或者使用合适的训练函数来减小。本文选择三层神经网络,实践证明,三层神经网络可以达到很好的效果。
2.3.2训练函数的选取
针对不同的应用,BP神经网络提供了多种训练方法。不同的训练函数对应结果如表1。
由此可见,traincgp(Polak-Ribiere变换梯度法)有较快的收敛速度,本文选择此训练函数。
2.3.3 基于BP神经网络图像压缩原理及仿真结果
网络结构的确定包括输入层、隐含层和输出层,隐含层的节点数小于输入节点数,输入节点数和输出节点数相同[8]。网络在进行学习时,输入会将网络数据通过隐含层映射到输出作为导师信号,在这个学习的过程中,输入层到隐含层称为网络的编码过程,隐含层到输出层称之为网络的解码过程。
将训练用图像的所有像素点作为压缩网络的输入,为控制网络的规模,对图像进行划分。设训练用图像由N×N个像素点构成,将其划分为M个子图像块,每个子图像块分别由p×p的子像素块构成。为了加快收敛速度,保证性能的稳定性,对图像进行归一化处理。归一化可以使用mapminmax函数进行,但是考虑到图像数据的特殊性,像素点灰度值为整数,且处于0-255之间,因此归一化处理就可以统一将数据除以255。
用Matlab创建一个三层网络,函数如下:
net=newff(minmax(P),[32 ,64],{'tansig','logsig'},'traindx','learngd','mse')。
其中,应用的激活函数为tansig和logsig,采用trainoss训练函数网络初始权值和阈
值均取随机数,然后开始训练网络,最小误差设置为0.001,最大训练步数设为10000。运行结果如下,Matlab程序流程图如图5所示,仿真结果如图7所示。
TRAINOSS-srchbac, Epoch 16997/20000, MSE 0.000998813/0.001, Gradient 0.00206669/1e-006
TRAINOSS, Performance goal met.
PSNR = 29.9979
SNR = 22.8039
由运行结果可得,图像压缩后峰值信噪比是29.997,信噪比是22.8039,误差已经达到要求。
训练网络误差曲线如图3所示。
由误差曲线可得,在训练步数达到1000左右的时候,误差下降趋势趋于平缓,因此选择训练步数为1000,然后改变隐含层神经元个数,比较不同的压缩比情况下的误差、信噪比及峰值信噪比,不同压缩比下的结果如表2。
由表可得,随着压缩比的增大,信噪比和峰值信噪比减小,误差增大。
2.4 BP网络的局限性
在实际应用中,BP神经网络存在的几个问题:(1)误差下降慢,训练次数多,影响收敛时间;(2)隐含层神经元个数是靠经验得来的,没有可靠的理论依据;(3)没有考虑到测试样本或者训练样本对算法的影响。
参考文献
[1] 钟珞,饶文碧,邹承明.人工神经网络及其融合应用技术[M].北京:科学出版社,2007: 23-27.
[2] 高隽.人工神经网络原理及仿真实例[M].北京:机械工业出版社,2007:2-78.
[3] 倪志伟,李锋刚,毛雪岷.智能管理技术与方法[M].北京:科学出版社,2007:12-33.
. Cambrigde University Press,2005:1-5.
.北京:机械工业出版社出版社,2002:3-17.
[6] 张立明.人工神经网络的模型及其应用[M].上海:复旦大学出版社,1993:7-99.
[7] 徐丽娜.神经网络控制[M].北京:电子工业出版社,2003:10-80.
[8] 钱海军.基于BP神经网络的图像压缩的Matlab实现[J].电脑开发与应用, 2011,24(12):77-79.
[9] 刘春艳.基于遗传算法—BP神经网络的主汽温控制系统的研究[D].太原:太原理工大学硕士研究生学位论文,2006.
基金项目:
山东省教育科学“十二五”规划课题,课题编号:2011GG256。
作者简介:
李艳英(1983-),女,山东东营人,毕业于天津大学,硕士学位,现任青岛工学院机电工程学院副院长,讲师;曾参与省级科研课题一项、省级教研课题一项,现主持省级科研课题一项;主要研究方向和关注领域:模式识别与人工智能。