RBF神经网络学习算法及与多层感知器的比较
对于RBF神经网络的原理已经在我的博文《机器学习之径向基神经网络(RBF
NN)》中介绍过,这里不再重复。今天要介绍的是常用的RBF神经网络学习算法及RBF神经网络与多层感知器网络的对比。
一、RBF神经网络学习算法
广义的RBF神经网络结构如下图所示:
N-M-L结构对应着N维输入,M个数据中心点centers,L个输出。
RBF 网络常用学习算法
RBF 网络的设计包括结构设计和参数设计。结构设计主要解决如何确定网络隐节点数的问题。参数设计一般需考虑包括3种参数:各基函数的数据中心和扩展常数,以及输出节点的权值 。 当采用Full RBF 网络结构时 ,隐节点数即样本数,基函数的数据中心即为样本本身,参数设计只需考虑扩展常数和输出节点的权值 。当采用广义RBF网络结构时 ,RBF网络的学习算法应该解决的问题包括 :如何确定网络隐节点数 ,如何确定各径向基函数的数据中心及扩展常数
, 以及如何修正输出权值 。
根据数据中心的取值方法 , RBF 网的设计方法可分为两类 。
第一类方法 : 数据中心从样本输入中选取 。 一般来说 , 样本密集的地方中心点可以适当多些 , 样本稀疏的地方中心点可以少些 ; 若数据本身是均匀分布的 ,中心点也可以均匀分布 。 总之 , 选出的数据中心应具有代表性 。 径向基函数的扩展常数是根据数据中心的
散布而确定的 , 为了避免每个径向基函数太尖或太平 , 一种选择方法是将所有径向基函数的扩展常数设为:max(d)/sqrt(2M),M为数据中心点数,max(d)为所选数据中心之间的最大距离 。
RBF 网的隐节点数对其泛化能力有极大的影响,所以寻找能确定聚类数目的合理方法,是聚类方法设计RBF网时需首先解决的问题。除聚类算法外还有梯度训练方法资源分配网络RAN等。
1. 数据中心的聚类算法
采用K-means聚类算法,得到M个数据中心点和点扩展常数;
采用K-means聚类算法,得到M个数据中心点和点扩展常数;
输入为 X p 时 , 第 j 个隐节点的输出为 φpj = φ( ‖ Xp - cj ‖ ) ,p = 1 , 2 ,… ,P ,j = 1 , 2 ,… ,
M , 则隐层输出矩阵为Φ1 = (φpj )P × M
W = (w1 ,w2 ,… ,w M ) , 则网络输出向量为F(X)= Φ1W
;令网络输出向量等于教师信号 d , 则 W 可用 Φ1的伪逆 Φ+ 求出:
2. 数据中心的监督学习算法
最一般的情况是 , 隐节点 RBF 函数的中心 、扩展常数和输出层权值均采用监督学习算法进行训练 , 即所有参数都经历一个误差修正学习过程 ,其方法采用 BP 算法训练多层感知器的原理类似 。 下面以单输出 RBF 网络为例 , 介绍一种梯度下降算法 。
定义目标函数为:
上式的输出函数中忽略了阈值 。
为使目标函数最小化 , 各参数的修正量应与其负梯度成正比 , 即
上述目标函数是所有训练样本引起的误差的总和 ,导出的参数修正公式是一种批处理式调整 , 即所有样本输入一轮后调整一次 。 目标函数也可定义为瞬时值形式 , 即当前输入样本引起的误差:E
= 0.5e*e。
3. 基于数据中心的监督学习算法的实现
/************************************************************************/
/*
用梯度下降法训练RBF网络,设η=0.001,M=10,初始权值为[-0.1,0.1]内的随机数,
初始数据中心center为[-4,4]内的随机数,初始扩展常数取[0.1,0.3]内的随机数,
目标误差为0.9,最大训练次数为5000。
f(x) = 1.1(1-x+2x*x)exp(-x*x/2)
训练样本这样产生:样本数P=100,xi且服从[-4,4]上的均匀分布,
样本输出为F(xi)+ei,ei为添加的噪声,服从均值为0,标准差为0.1的正态分布。
*/
/************************************************************************/ #include "stdafx.h" #include
#include
#include
#include
#include
#include
#include using namespace std; const int P=100; //输入样本的数量
vector X(P); //输入样本
vector Y(P); //输入样本对应的期望输出
const int M=10; //隐藏层节点数目
vector center(M); //M个Green函数的数据中心
vector delta(M); //M个Green函数的扩展常数
double Green[P][M]; //Green矩阵
vector Weight(M); //权值矩阵
const double eta=0.001; //学习率
const double ERR=0.9; //目标误差
const int ITERATION_CEIL=5000; //最大训练次数
vector error(P); //单个样本引起的误差 /*Hermit多项式函数*/
inline double Hermit(double x){
return 1.1*(1-x+2*x*x)*exp(-1*x*x/2);
} /*产生指定区间上均匀分布的随机数*/
inline double uniform(double floor,double ceil){
return floor+1.0*rand()/RAND_MAX*(ceil-floor);
}
#define M_PI 3.14159265358979323846
/*产生区间[floor,ceil]上服从正态分布N[mu,sigma]的随机数*/
inline double RandomNorm(double mu,double sigma,double floor,double ceil){
double x,prob,y;
do{
x=uniform(floor,ceil);
prob=1/sqrt(2*M_PI*sigma)*exp(-1*(x-mu)*(x-mu)/(2*sigma*sigma));
y=1.0*rand()/RAND_MAX;
}while(y>prob);
return x;
} /*产生输入样本*/
void generateSample(){
for(int i=0;i &vec,double floor,double ceil){
for(int i=0;i0){
if(calTotalError()
二、RBF神经网络与多层感知器网络的比较
网络与多层感知器都是非线性多层前向网络 , 它们都是通用逼近器 。 对于任一
个多层感知器 , 总存在一个 RBF 网络可以代替它 , 反之亦然 。 但是 , 这两个网络也存在着
很多不同点 。
① RBF 网络只有一个隐层 , 而多层感知器的隐层可以是一层也可以是多层的 。
② 多层感知器的隐层和输出层其神经元模型是一样的 。 而 RBF 网络的隐层神经元和输出层神经元不仅模型不同 , 而且在网络中起到的作用也不一样 。
③ RBF 网络的隐层是非线性的 , 输出层是线性的 。 然而 ,当用多层感知器解决模式分类问题时 , 它的隐层和输出层通常选为非线性的 。 当用多层感知器解决非线性回归问题时 , 通常选择线性输出层 。
④ RBF 网络的基函数计算的是输入向量和中心的欧氏距离 , 而多层感知器隐单元的激励函数计算的是输入单元和连接权值间的内积 。
⑤ RBF 网络使用局部指数衰减的非线性函数(如高斯函数)对非线性输入输出映射进行局部逼近 。 多层感知器(包括 BP 网)的隐节点采用输入模式与权向量的内积作为激活函数的自变量 , 而激活函数则采用 Sigmoid 函数或硬限幅函数 , 因此多层感知器是对非线性映射的全局逼近 。 RBF 网最显著的特点是隐节点采用输入模式与中心向量的距离(如欧氏距离) 作为函数的自变量 , 并使用径向基函数(如 Gaussian 函数)作为激活函数 。径向基函数关于 N 维空间的一个中心点具有径向对称性 , 而且神经元的输入离该中心点越远
, 神经元的激活程度就越低 。 隐节点的这个特性常被称为“局部特性” 。
RBF 网络能够逼近任意的非线性函数 ,可以处理系统内在的难以解析的规律性 , 并且具有很快的学习收敛速度 , 因此 RBF 网络有较为广泛的应用 。 目前 RBF 网络已成功地用于非线性函数逼近 、时间序列分析 、数据分类 、模式识别 、信息处理 、图像处理 、系统建模 、控制和故障诊断等 。
***********************
RBF神经网络学习算法及与多层感知器的比较的更多相关文章
- 神经网络与机器学习 笔记—多层感知器(MLP)
多层感知器(MLP) Rosenblatt感知器和LMS算法,都是单层的并且是单个神经元构造的神经网络,他们的局限性是只能解决线性可分问题,例如Rosenblatt感知器一直没办法处理简单异或问题.然 ...
- "多层感知器"--MLP神经网络算法
提到人工智能(Artificial Intelligence,AI),大家都不会陌生,在现今行业领起风潮,各行各业无不趋之若鹜,作为技术使用者,到底什么是AI,我们要有自己的理解. 目前,在人工智能中 ...
- tensorflow学习笔记——自编码器及多层感知器
1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...
- Spark Multilayer perceptron classifier (MLPC)多层感知器分类器
多层感知器分类器(MLPC)是基于前馈人工神经网络(ANN)的分类器. MLPC由多个节点层组成. 每个层完全连接到网络中的下一层. 输入层中的节点表示输入数据. 所有其他节点,通过输入与节点的权重w ...
- 4.2tensorflow多层感知器MLP识别手写数字最易懂实例代码
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1 多层感知器MLP(m ...
- TFboy养成记 多层感知器 MLP
内容总结与莫烦的视频. 这里多层感知器代码写的是一个简单的三层神经网络,输入层,隐藏层,输出层.代码的目的是你和一个二次曲线.同时,为了保证数据的自然,添加了mean为0,steddv为0.05的噪声 ...
- 【TensorFlow-windows】(三) 多层感知器进行手写数字识别(mnist)
主要内容: 1.基于多层感知器的mnist手写数字识别(代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_64. ...
- MLPclassifier,MLP 多层感知器的的缩写(Multi-layer Perceptron)
先看代码(sklearn的示例代码): from sklearn.neural_network import MLPClassifier X = [[0., 0.], [1., 1.]] y = [0 ...
- 使用TensorFlow v2.0构建多层感知器
使用TensorFlow v2.0构建一个两层隐藏层完全连接的神经网络(多层感知器). 这个例子使用低级方法来更好地理解构建神经网络和训练过程背后的所有机制. 神经网络概述 MNIST 数据集概述 此 ...
随机推荐
- win10 安装Borland C++Builder 6后编译运行出
win10系统安装bcb后打开bcb后显示 Unable to rename ‘c:\Program Files(x86)\Borland\CBuilder6\Bin\bcb.$$$'to‘cc:\P ...
- mysql 时区更改;5.7 弱口令
一.mysql 更改表名称: show databases; use 库名; show tables; rename table 旧表名 to 新表名: 示例: rename table old to ...
- CF1163E Magical Permutation【线性基,构造】
题目描述:输入一个大小为\(n\)的正整数集合\(S\),求最大的\(x\),使得能构造一个\(0\)到\(2^x-1\)的排列\(p\),满足\(p_i\oplus p_{i+1}\in S\) 数 ...
- python中is 和== 比较的区别?
is 比较两个对象的内存地址是否相同, == 比较连个对象的数据是否相等
- Pycon 北京2019
- centos 普通用户 和 root 相互切换方法
root 用户切换为普通用户 :用 login -f username (加 -f 不用输入密码)例如普通用户的用户名为hadoop,这里就是 login -f hadoop 普通用户切换为root用 ...
- openssl从内存中读取私钥进行签名
麻痹的找了好久,真恶心! #include <stdio.h> #include <stdlib.h> #ifdef WIN32 #include <windows.h& ...
- Gradle: 一个诡异的问题(ERROR: Failed to parse XML AndroidManifest.xml ParseError at [row,col]:[5,5] Message: expected start or end tag)
今天同事说他下了一个老版本的AS项目死活编不过,我心想不就是一个项目么,编不过要么就是代码有问题,要么就是依赖库不完整这能有什么问题,于是自己在自己电脑试了下,结果自己也中招了: 乍一看这个错误,说是 ...
- python获取公网ip的几种方式
python获取公网ip的几种方式 转 https://blog.csdn.net/conquerwave/article/details/77666226 from urllib2 import u ...
- [转]arcgis for server 10.2 下载及安装
转自:https://blog.csdn.net/nominior/article/details/80211963 https://blog.csdn.net/mrib/article/detail ...