首页 理论教育Matlab设计BP神经网络,实现情感语义识别和检索

Matlab设计BP神经网络,实现情感语义识别和检索

【摘要】:Matlab语言是MathWorks公司推出的一套高性能计算机编程语言,集数学计算、图形显示、语言设计于一体,其强大的扩展功能为用户提供了广阔的应用空间[6]。它附带有30多个工具箱,神经网络工具箱就是其中之一,其中BP神经网络的训练使用了Neural Networks Toolbox for Matlab。打开Matlab软件,会看到软件界面。在BP神经网络训练时,参数不同,最后网络训练的性能都不同。

Matlab语言是MathWorks公司推出的一套高性能计算机编程语言,集数学计算、图形显示、语言设计于一体,其强大的扩展功能为用户提供了广阔的应用空间[6]。它附带有30多个工具箱,神经网络工具箱就是其中之一,其中BP神经网络的训练使用了Neural Networks Toolbox for Matlab。

理论已经证明,含有一个隐层和任意多的隐层节点数的多层感知器具有拟合任意非线性函数的能力。但没有任何理论指出对于给定问题,究竟需要多少隐层节点数。如果只含有一个输入,一般就使用一个隐层。

首先采用“试凑法”确定隐层节点数的大致范围。使用的公式为:

其中m为隐层节点数,n为输入层节点数,l为输出层节点数,α为1~10之间的常数。通过误差比较和设计经验,在下面因子训练的神经网络实验中,经过反复实验,因子1的训练中隐层节点数选为“10”,因子2的训练中隐层节点数选为“7”。

在BP神经网络创建中,根据经验与效果比对,各层使用传递函数分别为:

TF1='tansig',TF2='purelin'

两个函数数学公式分别为:

tansig(n)=2/[1+exp(-2*n)]-1

purelin(n)=n

然后使用newff函数创建网络。正确安装Matlab软件R2008a(即7.6)版本。打开Matlab软件,会看到软件界面。左上为文件窗口,可以看到当前工作文件夹下创建的Matlab文件,其中“.m”后缀的文件即为创建BP网络的代码文件,“.mat”后缀文件为保存下来的网络文件,其中记录了所有创建并训练好的网络参数。左下为历史命令即使用过的命令记录。

针对因子1的训练和学习,导入文件BPNET1.m,这个文件是神经网络训练因子1的代码,可以在里面修改BP神经网络的相关参数,运行可以查看三个曲线图(参见4.5节内容)。以训练因子1为例创建与训练BP神经网络代码如下:

设计网络的时候,要对输入数据进行归一化、数据乱序、分类处理,训练完成后经过仿真,数据再反归一化。本设计使用的Matlab 2008a(7.6)版本中,自动分配60%数据用作训练数据,20%数据用作变量数据,剩余20%数据用作测试数据,未进行乱序分类处理,也可自行通过类似以下设置来自行定义:

net.divideParam.trainRatio=100/100;

net.divideParam.valRatio=0/100;

net.divideParam.testRatio=0/100;

BP网络训练好后,需要知道训练的网络是否符合要求,经过仿真后,用图表形式显示结果。每次训练都要保存好网络,这样当出现训练效果很好的网络即可保留以后使用。

在BP神经网络训练时,参数不同,最后网络训练的性能都不同。本书中最后的实验数据是我们经过多次实验调整参数得到的比较好的网络。另外,训练好的网络可以保存下来。经过上面的神经网络训练,最终要得到的就是因子1的已经训练好的网络abc1.mat。

按同样的方法和步骤也可以完成因子2的文件名为abc2.mat的训练网络。这两个网络将在男西装图像情感语义识别和检索中使用。