基于RBF神经网络的函数曲线拟合
作者:互联网
上次的微信小文中,我们通过在MATLAB中导入libsvm工具包,进行了函数拟合的实验。本次仿真实验中,我们使用RBF神经网络进行函数拟合。
1、RBF网络简介
径向基函数(Radical Basis Function, RBF)是多维空间插值的传统技术,是一种高效的前馈式神经网络,它具有其他前向网络所不具有的最佳逼近性能和全局最优特性,并且结构简单,训练速度快。其结构与多层前向网络类似,是一种三层的前向网络。第一层为输入层,由信号源结点组成;第二层为隐藏层,隐藏层节点数视所描述问题的需要而定,隐藏层中神经元的变换函数(径向基函数)是对中心点径向对称且衰减的非负非线性函数,该函数是局部响应函数;第三层为输出层,它对输入模式作出响应。
2、所用函数介绍
(1) newrb()
该函数可以用来设计一个近似(approximate)径向基网络。其调用格式为:
[net,tr]=newrb(P,T,GOAL,SPREAD,MN,DF)。
其中,P为Q组输入向量组成的R*Q维矩阵;T为Q组目标分类向量组成的S*Q 维矩阵;GOAL为均方误差目标(Mean Squared Error Goal),默认为0.0;SPREAD为径向基函数的扩展速度,默认为l;MN为神经元的最大数目,默认为Q;DF为两次显示之间所添加的神经元数目,默认为25;net与tr是该函数的返回值,前者为RBF网络,后者为训练记录。
(2)newrbe()
该函数用于设计一个精确径向基网络。其调用格式为:
net=newrbe(P,T,SPREAD)
其中,P为Q组输入向量组成的R*Q维矩阵;T为Q组目标分类向量组成的S*Q维矩阵;SPREAD为径向基函数的扩展速度,默认为1。
和newrb()不同,newrbe()能够基于设计向量快速、无误差地设计一个径向基网络。
(3) radbas()
该函数为径向基传递函数。其调用格式为:
A=radbas(N)
info=radbas(code)
其中,N为输入(列)向量的S*Q维矩阵;A为函数返回矩阵,与N一一对应,即N中的每个元素通过径向基函数得到A; info=radbas(code)表示根据code值的不同返回有关函数的不同信息。包括
derive——返回导函数的名称。
name——返回函数全称。
output——返回输入范围。
active——返回可用输入范围。
3、仿真结果
在仿真实验中,所使用的待拟合函数为:
F=20+x12-10*cos(2*Π*x1)+x22-10*cos(2*Π*x2);
图1 实验结果及误差
从实验结果来看,RBF神经网络拟合图像与原始的函数图像基本相同,将它们两者相减得到的结果作为误差,由误差图像可看出,RBF对非线性函数的拟合效果很好。
孙宁,重庆大学无线通信技术实验室硕士研究生,主研方向为AI在无线通信中的应用。
附:代码及注释
%%MATLAB标准三连
clc;clear;clear all
%%产生训练样本(训练输入,训练输出)
ld= 400;%ld 为样本例数
x = rand(2,ld);%产生2 *ld 的矩阵
x= (x - 0.5)*1.5 *2;%将x 转换到[-1.5 1.5]之间
x1 = x(1,:);%x 的第一行为x1,第二行为x2
x2 = x(2 ,:);
F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);%构建需要拟合的函数
%%建立RBF 神经网络
net=newrb(x, F);%采用approximate RBF神经网络。spread为默认值
%%产生测试样本
interval=0.1 ;%步长,用于产生样本
[i, j] = meshgrid( - 1.5:interval:1.5);
row= size( i);
tx1 = i(:);
tx1 = tx1';
tx2 = j(:);
tx2 = tx2';
tx=[tx1; tx2];
ty = sim(net, tx);
%%画出函数三维图
interval = 0.1 ;
[x1, x2]=meshgrid(-1.5:interval:1.5);
F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);
subplot(1, 3,1)
mesh(x1, x2, F);
zlim([0, 60] )
title('函数图像')
%%画出拟合的函数图像
v= reshape(ty, row);
subplot(1, 3, 2)
mesh(i,j,v);
zlim([0,60])
title('RBF拟合结果')
%%误差图像
subplot(1, 3, 3)
mesh(x1, x2, F-v);
zlim( [ 0,60])
title ('误差图像')
set(gcf, 'position', [300, 250, 900,400])
标签:曲线拟合,函数,神经网络,拟合,x2,RBF,x1,径向 来源: https://blog.51cto.com/15127585/2670713