RBF神经网络通常只有三层,即输入层、中间层和输出层。其中中间层主要计算输入x和样本矢量c(记忆样本)之间的欧式距离的Radial Basis Function (RBF)的值,输出层对其做一个线性的组合。

径向基函数:

RBF神经网络的训练可以分为两个阶段:

第一阶段为无监督学习,从样本数据中选择记忆样本/中心点;可以使用聚类算法,也可以选择随机给定的方式。

第二阶段为监督学习,主要计算样本经过RBF转换后,和输出之间的关系/权重;可以使用BP算法计算、也可以使用简单的数学公式计算。

1. 随机初始化中心点
2. 计算RBF中的激活函数值,每个中心点到样本的距离
3. 计算权重,原函数:Y=GW
4. W = G^-1Y

RBF网络能够逼近任意非线性的函数(因为使用的是一个局部的激活函数。在中心点附近有最大的反应;越接近中心点则反应最大,远离反应成指数递减;就相当于每个神经元都对应不同的感知域)。

可以处理系统内难以解析的规律性,具有很好的泛化能力,并且具有较快的学习速度。

有很快的学习收敛速度,已成功应用于非线性函数逼近、时间序列分析、数据分类、模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。

当网络的一个或多个可调参数(权值或阈值)对任何一个输出都有影响时,这样的网络称为全局逼近网络。由于对于每次输入,网络上的每一个权值都要调整,从而导致全局逼近网络的学习速度很慢,比如BP网络。

如果对于输入空间的某个局部区域只有少数几个连接权值影响输出,则该网络称为局部逼近网络,比如RBF网络。

RBF和BP神经网络的对比

BP神经网络(使用Sigmoid激活函数)是全局逼近;RBF神经网络(使用径向基函数作为激活函数)是局部逼近;

相同点:

  • 1. RBF神经网络中对于权重的求解也可以使用BP算法求解。

不同点:

  • 1. 中间神经元类型不同(RBF:径向基函数;BP:Sigmoid函数)
  • 2. 网络层次数量不同(RBF:3层;BP:不限制)
  • 3. 运行速度的区别(RBF:快;BP:慢)

简单的RBF神经网络代码实现

# -*- coding:utf-8 -*-
"""@Time  : @Author: Feng Lepeng@File  : RBF_demo.py@Desc  :
"""
import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt
from scipy.linalg import norm, pinv  # norm 求模,pinv 求逆mpl.rcParams["font.sans-serif"] = ["SimHei"]
np.random.seed(28)class RBF:"""RBF径向基神经网络"""def __init__(self, input_dim, num_centers, out_dim):"""初始化函数:param input_dim: 输入维度数目:param num_centers: 中间的核数目:param out_dim:输出维度数目"""self.input_dim = input_dimself.out_dim = out_dimself.num_centers = num_centersself.centers = [np.random.uniform(-1, 1, input_dim) for i in range(num_centers)]self.beta = 8self.W = np.random.random((self.num_centers, self.out_dim))def _basisfunc(self, c, d):return np.exp(-self.beta * norm(c - d) ** 2)def _calcAct(self, X):G = np.zeros((X.shape[0], self.num_centers), float)for ci, c in enumerate(self.centers):for xi, x in enumerate(X):G[xi, ci] = self._basisfunc(c, x)return Gdef train(self, X, Y):"""进行模型训练:param X: 矩阵,x的维度必须是给定的 n * input_dim:param Y: 列的向量组合,要求维度必须是n * 1:return:"""# 随机初始化中心点rnd_idx = np.random.permutation(X.shape[0])[:self.num_centers]self.centers = [X[i, :] for i in rnd_idx]# 相当于计算RBF中的激活函数值G = self._calcAct(X)# 计算权重==> Y=GW ==> W = G^-1Yself.W = np.dot(pinv(G), Y)def test(self, X):""" x的维度必须是给定的n * input_dim"""G = self._calcAct(X)Y = np.dot(G, self.W)return Yif __name__ == '__main__':# 构造数据n = 100x = np.linspace(-1, 1, n).reshape(n, 1)y = np.sin(3 * (x + 0.5) ** 3 - 1)# RBF神经网络rbf = RBF(1, 20, 1)rbf.train(x, y)z = rbf.test(x)plt.figure(figsize=(12, 8))plt.plot(x, y, 'ko', label="原始值")plt.plot(x, z, 'r-', linewidth=2, label="预测值")plt.legend()plt.xlim(-1.2, 1.2)plt.show()

效果图片:

RBF训练

RBF函数中心,扩展常数,输出权值都应该采用监督学习算法进行训练,经历一个误差修正学习的过程,与BP网络的学习原理一样.同样采用梯度下降爱法,定义目标函数为:

ei为输入第i个样本时候的误差。

这个等式输出函数中忽略了阈值,为使目标函数最小化,各参数的修正量应与其梯度成正比。

深度学习之 RBF神经网络相关推荐

  1. 解析深度学习:卷积神经网络原理与视觉实践

    解析深度学习:卷积神经网络原理与视觉实践 魏秀参 著 ISBN:9787121345289 包装:平装 开本:16开 正文语种:中文 出版社: 电子工业出版社 出版时间:2018-11-01

  2. 【深度学习】解析神经网络中的数值稳定性、模型初始化和分布偏移(Pytorch)

    [深度学习]解析神经网络中的数值稳定性.模型初始化和分布偏移 文章目录 1 概述1.1 梯度消失和梯度爆炸1.2 打破对称性 2 参数初始化 3 环境和分布偏移3.1 协变量偏移3.2 标签偏移3.3 ...

  3. 【深度学习】LSTM神经网络解决COVID-19预测问题(二)

    [深度学习]LSTM神经网络解决COVID-19预测问题(二) 文章目录 1 概述 2 模型求解和检验 3 模型代码 4 模型评价与推广 5 参考 1 概述 建立一个普适性较高的模型来有效预测疫情的达 ...

  4. 【深度学习】LSTM神经网络解决COVID-19预测问题(一)

    [深度学习]LSTM神经网络解决COVID-19预测问题 文章目录 1 概述 2 数据分析 3 SIR模型和LSTM网络的对比 4 LSTM神经网络的建立 5 参考 1 概述 我们将SIR传播模型和L ...

  5. 【深度学习】深入浅出神经网络框架的模型元件(池化、正则化和反卷积层)

    [深度学习]深入浅出神经网络框架的模型元件(池化.正则化和反卷积层) 文章目录 1 池化层 1.1 MaxPooling2D 1.2 MaxPooling1D: 1.3 AveragePooling2 ...

  6. 【深度学习】深入浅出神经网络框架的模型元件(常用层和卷积层)

    [深度学习]深入浅出神经网络框架的模型元件(常用层和卷积层) 文章目录 1 常用层1.1 Dense1.2 Activation层1.3 Dropout1.4 Flatten 2 卷积层2.1 Cov ...

  7. 【深度学习】卷积神经网络实现图像多分类的探索

    [深度学习]卷积神经网络实现图像多分类的探索 文章目录 1 数字图像解释 2 cifar10数据集踩坑 3 Keras代码实现流程 3.1 导入数据 3.2 浅层CNN 3.3 深层CNN 3.4 进 ...

  8. 【深度学习】卷积神经网络速成

    [深度学习]卷积神经网络速成 文章目录 [深度学习]卷积神经网络速成 1 概述 2 组成 2.1 卷积层 2.2 池化层 2.3 全连接层 3 一个案例 4 详细分析 1 概述 前馈神经网络(feed ...

  9. 深度学习~卷积神经网络(CNN)概述

    目录​​​​​​​ 1. 卷积神经网络的形成和演变 1.1 卷积神经网络结构 1.2 卷积神经网络的应用和影响 1.3 卷积神经网络的缺陷和视图 1.3.1 缺陷:可能错分 1.3.2 解决方法:视图 ...

  10. 谷歌新 AI 实验室主管 Hugo 深度学习教程:神经网络、CV、NLP 难点解析

     谷歌新 AI 实验室主管 Hugo 深度学习教程:神经网络.CV.NLP 难点解析 [日期:2016-12-16] 来源:新智元  作者: [字体:大 中 小]  11月22日,谷歌在蒙特利尔的 ...

最新文章

  1. 百度网络推广总结大家在做页面标题优化时需注意的事项!
  2. Linux系统调用--getrlimit()与setrlimit()函数详解
  3. 关于大数据的那些事儿
  4. 如何使用matplotlib绘制一个函数的图像
  5. objective c的注释规范
  6. goland中grpc的安装
  7. 学成在线--15.课程计划查询
  8. Spring Cloud Stream
  9. JAVA获取文件本身所在的磁盘位置
  10. MATLAB自带的遗传算法工具箱(GADS)
  11. Linux 中用 dd 命令来测试硬盘读写速度 运维工具
  12. 电脑本地连接,电脑出现多个“本地连接”的解决方法
  13. 机器学习中的GPU硬件设备及共享访问
  14. KK集团招股书失效,首次冲刺港交所上市失利,尚未实现盈利
  15. docker中报错Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirro
  16. 企业微信如何建立部门?
  17. Win11设置共享文件的方法
  18. 用户画像标签维度_用户画像详解:关于用户画像的What、Why、How
  19. C++:图片数字水印-基于OpenCV+LSB
  20. Android 常用正则表达式

热门文章

  1. 小米平板2wifi驱动下载_小米平板2windows系统无线网怎么连接
  2. 配置idea开发go编程语言并配置导入本地包
  3. 仿斗鱼、美团、网易邮箱等 弹窗效果
  4. linux系统如何更改输入法切换快捷键,linux中什么快捷键可实现中英文的切换
  5. Win10系统下LaserJet Pro MFP M227sdn无法自动双面打印问题解决
  6. 电脑版QQ更换透明背景教程(真的透明)
  7. Python课程第九周笔记及作业+第十周期末测试
  8. npm下载webpack时常见错误解决办法
  9. 基于R语言地理探测器包(GD)空间异质性与驱动力分析
  10. matlab m 调用mdl,[分享]MATLAB m语言中调用simulink的程序