深度学习之 RBF神经网络

深度学习之 RBF神经网络RBF 神经网络通常只有三层 即输入层 中间层和输出层 其中中间层主要计算输入 x 和样本矢量 c 记忆样本 之间的欧式距离的 RadialBasisF RBF 的值 输出层对其做一个线性的组合 径向基函数 RBF 神经网络的训练可以分为两个阶段 第一阶段为无监督学习 从样本数据中选择记忆样本 中心点 可以使用聚类算法 也可以选择随机给定的方式 第二阶段为监督学习 主要计算样本经过 RBF 转换后 和输出之间的关系 权重 可以使用 BP 算法计算 也可以使用简单的数学公式计算

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

径向基函数:

深度学习之 RBF神经网络

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

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

 深度学习之 RBF神经网络

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

 深度学习之 RBF神经网络

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_dim self.out_dim = out_dim self.num_centers = num_centers self.centers = [np.random.uniform(-1, 1, input_dim) for i in range(num_centers)] self.beta = 8 self.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 G def 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^-1Y self.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 Y if __name__ == '__main__': # 构造数据 n = 100 x = 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训练

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

深度学习之 RBF神经网络

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

深度学习之 RBF神经网络

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

深度学习之 RBF神经网络

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229681.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:08
下一篇 2026年3月16日 下午4:08


相关推荐

  • webstorm插件安装-代码缩略图插件「建议收藏」

    webstorm插件安装-代码缩略图插件「建议收藏」webstorm本身足够强大了,但是有时候也希望能有其他的附加功能。好在官方提供了足够多的插件。https://plugins.jetbrains.com/webstorm找一个自己喜欢的插件,以代码缩略图插件为例:https://plugins.jetbrains.com/plugin/7275-codeglance代码缩略图可以很直观的看到代码的情况,快速定位代码到对应位置…

    2025年9月2日
    9
  • 程序员面试宝典——第6章

    程序员面试宝典——第6章1 宏定义 define 基本知识 defineSECOND PER YEAR 60 60 24 365 UL 宏定义只是定义 不牵扯计算 defineMIN A B A lt B A B 2 constint nbsp b 500 constint a amp b const 修饰指针所指向的变量 指针的内容为常量 intconst a amp b const 修

    2025年8月18日
    5
  • 在线手机WAP模拟器或软件,用电脑IE浏览器在线浏览手机wap网站

    在线手机WAP模拟器或软件,用电脑IE浏览器在线浏览手机wap网站先介绍一下什么是 WAP 浏览器 WAP 浏览器 WAPBrowser 又叫 WAP 微型浏览器 是用在手机或 pda 等设备上浏览 WAP 站点的工具 它与 PC 上的 web 浏览器比如 ie firefox 相似 但由于手机 wap 站点用的是 WML 之类的语言 所以 web 浏览器并不能直接浏览 WAP 站点 因为 web 站点用的 html 之类的语言 如果想直接在电脑 PC 浏览 WAP 站点 必须使用电脑 pc 在线 wap 站点模拟器

    2026年3月18日
    1
  • sql中的判断语句 if…else的使用[通俗易懂]

    sql中的判断语句 if…else的使用[通俗易懂]–1.oracle和mysql数据库都可以这样写CASEWHEN(RO.APPROVE_QUANTITY-NVL(tto.QUANTITY,0))<0THEN0ELSE(RO.APPROVE_QUANTITY-NVL(tto.QUANTITY,0))ENDsurplusQuantity--注意:NVL()是oracle数据库中对字段的非空校验,如果字段名为

    2022年7月16日
    35
  • C++ 中的getline()函数用法详解

    C++ 中的getline()函数用法详解    遇到了要输入一行字符串的操作,我想除了fgets()的方法(fgets()用法链接),getline()也是可以的,但是我对getline的操作不熟悉,便查阅了很多资料,发现都说的很模糊,借这个机会我想彻底理清楚getline的用法;  网上有说getline有两种用法的,我在这总结一下,一、getline()用的比较多的用法 1) istrea…

    2025年6月1日
    4
  • 小敏利用计算机设计,中考物理 专题 压强精品复习课件

    小敏利用计算机设计,中考物理 专题 压强精品复习课件1 压强 考点知识梳理 中考典例精析 课堂达标训练 专题训练 知识结构 考点一压强 1 作用在物体表面上的力叫压力压力的方向总是 于物体表面 并指向被压物体压力的作用点在被压物体的表面压力的作用效果是使物体 2 影响压力作用效果的因素 1 2 温馨提示受力面积是指两个物体之间相互接触发生相互挤压的那部分面积 3 压力与重力是两种不同的力 压力的方向 重力的方向

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号