《matlab径向基神经网络》底层实现原理(上)
《老饼讲解神经网络》http://bp.bbbdata.com/teach#6
目录
一、思想
(一) 问题
(二) RBF的解决思路
二、模型的数学表达式
(一) 数学表达式
(二) 例子说明
三、统一径向基神经网络与一般神经网络的格式
(一) 网络拓扑图
(二) 网络表达式
四、径向基基本类:精确径向基网络
(一)精确径向基原理
(二)精确径向基代码实现
径向基神经网络(RBF)常见的有精确径向基,径向基,概率神经网络,广义回归神经网络.网上已经有非常多文章讲述这几种网络。
本文主要讲述径向基神经网络的思想,数学表达式,参数意义,和讲述matlab里的径向基是如何实现的(不是工具箱的使用方法,是自写代码重现工具箱的效果).
开始掌握径向基神经网络的原理吧!
一、思想
(一) 问题
有一组原始数据点:
x | 1 | 2 | 3 | 4 | 5 | 6 |
y(x*x/6) | 0.167 | 0.667 | 1.5 | 0.667 | 4.167 | 6 |
现在要找到一条光滑曲线拟合这6个数据点。
(二) RBF的解决思路
一图说明RBF的解决思路!:
从图中可以看到,RBF神经网络解决该问题的思想就是,以6个原始数据点(图中蓝色的点)为中心,生成了6个钟型函数(rbf)(实际只需要其中5个),6个钟型函数叠加后就是一条我们所需要的,能够光滑地拟合原始数据点的光滑曲线(绿色)。
参透此图,即参透了RBF的核心思想。
我们探究RBF的数学表达式,进一步更具体更形象深入理解径向基神经网络原理.
二、模型的数学表达式
(一) 数学表达式
径向基神经网的一般数学表达式为:
上式即多个钟形函数的叠加,再加上阈值b。
(二) 例子说明
例子:2个输入,1个输出,3个训练样本的径向基神经网络可写成三个钟型函数的叠加:
其中,
a:一个影响钟型函数肥瘦程度的常数.
:第(j)个样本中第i个变量的值.
w和b:分别是待解的权重和阈值.
三、统一径向基神经网络与一般神经网络的格式
上面的格式是为了直观,很难让我们将它与神经网络联想到一起。下面我们将上式转为与一般神经网络统一的格式 。
(一) 网络拓扑图
把每个钟型函数看作一个隐节点,那么上例的网络拓扑图如下(只有3个样本,所以隐节点也是3个,隐节点个数与样本个数一样):
(二) 网络表达式
对应的,数学表达式写成一般神经网络结构的形式则如下:
参数说明:
w和b的上标代表它属于第几层神经元的参数。例如:
:第2层(隐层)的第3个神经元与下一层(输出层)的第1个神经元的权值。
:隐层第3个节点的阈值。
注意:输入层到隐层的权值和隐层的阈值的计算方法不再与BP神经网络相同,权值和输入使用欧氏距离函数dist计算,隐层的阈值再与它们相乘。
径向基神经网络有几种,精确径向基神经网络、径向基神经网络、广义回归神经网络、概率神经网络等。
这里我们先介绍精确径向基神经网络,它是最简单最基本的径向基神经网络。在下张文章再介绍其它神经网络。
四、径向基基本类:精确径向基网络
(一)精确径向基原理
现在问题来了,式(1)中的w和b怎么求?
精确地求出径向基的待解参数,就是《精确径向基》模型的主要特点。
如何求得一组精确的w,b,使拟合误差为0?
很简单,因为当输入x知道时,在式中形如 的部分都可以计算成一个常数,所以上式就成了一个线性方程。
假设现在有3个样本,那么就会有3个这样的线性方程组成方程组:
只要解这个方程组就可以得到w和b的值了。因为未知数个数大于方程的个数,肯定能求得一组w满足上式。
可知精确径向基网络在训练数据上的预测误差会为0,正因如此,称它为"精确"径向基,它是最基本的径向基网络。
(二)精确径向基代码实现
代码主要重现matlab工具箱的精确径向基(newrbe)的实现逻辑,运行结果显示,自与代码实现精确径向基与调包结果一致。
%主流程:通过自写精确径向基重现工具箱的newrbe,并与工具箱调用结果作比较
function testNewrbe()%本代码来自《老饼讲解神经网络》%本代码模仿matlab神经网络工具箱的newrbe神经网络,%代码主旨用于教学,供大家学习理解newrbe神经网络原理%%----------生成训练数据-------------------x1 = 1:0.4:10;x2 = x1;X = [ x1; x2];Y = sin (X(1, :)) + X( 2, :);spread = 2; %扩展系数test_x = [2 3]'; %测试数据%--------使用自写代码建立精确径向基-------------[W1,B1,W2,B2] = myNewrbe( X,Y,spread );simY = mySim(W1,B1,W2,B2,test_x) %模型预测%---使用matlab神经网络工具箱求xx的预测值-----------net = newrbe(X, Y, spread);simYByBox = sim( net, test_x)%-----------------------------------------testResult = isequal( simY, simYByBox);disp(['testResult = ',num2str(testResult)]);
end%模型训练:精确径向基rbe
function [W1,B1,W2,B2] = myNewrbe(X,Y,spread)Q = size(X,2); %样本个数%输入层到隐层的权值和阈值W1 = X';B1 = ones( Q, 1)*sqrt( -log(.5))/spread;%求隐节点的值.h=zeros( Q, Q);for i = 1: Qfor j = 1 : Q%计算第i个样本,第j个隐节点的值h(i,j) = B1(j)*sqrt(sum((X(:,i)' -W1(j,:)).^2));endend%hRbf是每个节点经过径向基传递函数变换后的值hRbf = exp( -h.*h) ;%利用隐节点的值和输出的值,求解隐层到输出层的权值和阈值hRbf = [ hRbf; ones( 1,size( hRbf,2))];WB = Y /hRbf;W2 = WB( :, 1:end-1);B2 = WB( :, end);
end%模型预测:精确径向基rbe
function y = mySim(W1,B1,W2,B2,xx)hNode = length(B1); %样本个数%求隐节点h_xx = zeros(hNode,1);for i = 1 : hNodeh_xx(i) = B1(i) * sqrt(sum((xx' - W1(i,:)).^2));endhRbf_xx = exp( -h_xx .* h_xx );%网络的输出y = W2 * hRbf_xx + B2;
end
本文先介绍到这,下篇文章继续介绍径向基神经网络、广义回归神经网络、概率神经网络的原理和参数设置的技巧。
相关文章
《BP神经网络梯度推导》
《BP神经网络提取的数学表达式》
《一个BP的完整建模流程》
《matlab径向基神经网络》底层实现原理(上)相关推荐
- 【水位预测】基于matlab径向基神经网络地下水位预测【含Matlab源码 1939期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[水位预测]基于matlab径向基神经网络地下水位预测[含Matlab源码 1939期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...
- 径向基神经网络(RBF)回归预测MATLAB实现超详细
在机械学习算法的过程中,我们常用到一种神经网络就是径向基神经网络,这是一种使用径向基函数作为激活函数的人工神经网络.这种神经网络也有很多用途,比如时间序列预测.数据分类以及回归预测等等,今天主要讲解径 ...
- matlab rbe神经网络代码,径向基神经网络知识介绍
RBF网络原理 RBF网络,即径向基神经网络,也是前馈型网络的一种.它的设计思想和BP网络完全不一样. Cover定理:将复杂的模式分类问题非线性的投射到高维空间将比投射到低维空间更可能是线性可分的. ...
- 数据拟合 | MATLAB实现RBF径向基神经网络多输入数据拟合
数据拟合 | MATLAB实现RBF径向基神经网络多输入数据拟合 目录 数据拟合 | MATLAB实现RBF径向基神经网络多输入数据拟合 基本介绍 程序设计 模型差异 参考资料 基本介绍 RBF神将网 ...
- 回归预测 | MATLAB实现RBF径向基神经网络多输入单输出
回归预测 | MATLAB实现RBF径向基神经网络多输入单输出 目录 回归预测 | MATLAB实现RBF径向基神经网络多输入单输出 预测效果 基本介绍 模型结构 程序设计 参考资料 预测效果 基本介 ...
- 回归预测 | MATLAB实现RBF径向基神经网络非线性函数回归
回归预测 | MATLAB实现RBF径向基神经网络多非线性函数回归 目录 回归预测 | MATLAB实现RBF径向基神经网络多非线性函数回归 基本介绍 程序设计 学习总结 参考资料 基本介绍 RBF神 ...
- 时间序列分析 | RBF径向基神经网络时间序列预测(Matlab完整程序)
时间序列分析 | RBF径向基神经网络时间序列预测(Matlab完整程序) 目录 时间序列分析 | RBF径向基神经网络时间序列预测(Matlab完整程序) 预测结果 评价指标 模型介绍 完整程序 预 ...
- 径向基神经网络及MATLAB实现
应用背景:我们知道,在使用BP神经网络时,由于其采用负梯度下降法对权值进行调节而具有收敛速度慢和容易陷入局部最小值等缺点,为了克服这些缺点,人们提出了径向基神经网络(Radial Basis Fu ...
- 回归预测 | MATLAB实现RBF径向基神经网络多输入多输出预测
回归预测 | MATLAB实现RBF径向基神经网络多输入多输出预测 目录 回归预测 | MATLAB实现RBF径向基神经网络多输入多输出预测 预测效果 基本介绍 模型结构 程序设计 参考资料 预测效果 ...
最新文章
- [zz]libvirt中CPU和内存的细粒度管理机制
- 向STM32串口发送数据的标准函数
- 第三章 MongoDb Java应用 3.2
- C++工作笔记-C++中assert的作用
- mysql中什么是空集合_mysql 中使用笛卡尔积 避免其中一方为空集时结果就是空集的方法...
- GIS制图课程目录(持续整理)
- hdu 2736 Average distance
- 2022年iOS最新面试(底层基础)问题答案
- 模拟电子技术动画-PN结(动画是转的)内容再修改
- 数学建模优秀论文2(层次分析有关)
- malloc、calloc、realloc函数讲解
- 计算机协会游戏方案,计算机协会社团各月工作总结及工作计划
- 去除眼袋(画笔涂抹法)
- 拼多多之所以壮大,在于淘宝对利益过度痴迷
- s:if test标签出错,内容不显示
- STM32学习笔记——OLED的使用
- quilt的常用使用命令解释
- 空调器制冷系统故障-冷凝器脏堵
- Qt之旅---10 双缓冲绘图
- Windows提权方法