草庐IT

人工智能知识全面讲解: RBF神经网络

谷哥-Mr.Gu 2023-04-16 原文

7.4.1 全连接与局部连接

1968 年 , 生 物 学 家 休 伯 尔 ( David Hunter Hubel ) 教 授 与 维 泽 尔
(Torsten N.Wiesel)教授在研究动物如何处理视觉信息时有一个重要的发
现。他们发现动物大脑皮层是分级、分层处理信息的。在大脑的初级视觉皮层
中存在好几种不同的细胞,这些不同类型的细胞?担着不同层次的视觉感知工
作。
两位学者的研究成果对于神经网络领域有着重要的启发。原来当我们思考
的时候,大脑里的神经元不是采用“全连接”的方式,也就是说没有必要激活
大脑所有细胞去思考一件事情。那么人工神经网络是否也可以像大脑一样,使
用神经元“局部激活”的模式?这样一来,可以大大简化神经网络的复杂性。
径向基函数神经网络就是其中的代表之一。
径向基函数(Radial Basis Function,RBF)神经网络是一种性能优良的
前馈型神经网络,与基于BP算法的其他前向神经网络一样,其能够实现对任意
非线性函数的?近,这一点是所有神经网络的共性,?近能力取决于隐藏层的
神经元个数。RBF神经网络由输入层、隐藏层、输出层组成。从输入空间到隐
藏层空间的变换是非线性的,而从隐藏层空间到输出层空间的变换是线性的,
如图7-13所示。

从网络结构上看,RBF神经网络与BP神经网络有明显的差异。主要表现在
以?三个方面:
(1)BP神经网络可以包含多个隐藏层,但是RBF只有一个隐藏层。
(2)BP神经网络实行权值连接,隐藏层单元的转移函数一般选择非线性
函数。而在RBF神经网络中输入层到隐藏层之间为直接连接,隐藏层到输出层
实行权值连接,RBF神经网络隐藏层单元的转移函数一般是中心对称的高斯函
数。
(3)BP神经网络是全局?近网络,网络中各个参数对于输出结果都有影
响。每次输入新的样本,网络所有神经元的权值全部都要更新,因此学习速度
比较慢;RBF神经网络是局部?近网络,也就是说在网络输入空间的某个局部
区域只有少数几个连接神经元影响网络的输出。如图 7-14 所示,每次输入
时,只有和输入样本向量较为接近的神经元才会活跃起来,对应的权值才会更
新,其他权值保持不变,这是由高斯分布函数的特点决定的。

 

BP神经网络好比是,当我们看到一张猫的图像时,大脑里负责视觉、嗅
觉、味觉、?觉的神经元全部都被激活。大脑全局响应,综合所有感官计算之
后判断出这是一只猫的图片;RBF 神经网络好比是当我们看到一张猫的图像
时,大脑里只有负责视觉的神经元被激活,其他的嗅觉、味觉、?觉的神经元
不会被激活。大脑局部响应,计算量小,这样模型的运算速度当然比BP神经网
络要快得多。
7.4.2 改变激活函数
造成以上区别的主要原因在于两种网络中隐藏层神经元的激活函数不同。
RBF网络的基本思想是用高斯函数作为隐藏层神经元的基本构成,然后将输入
直接映射到隐藏层空间,不需要通过权重连接 。当RBF的中心点确定以后,
映射关系也随之确定。隐藏层到输出层的映射是线性的,即网络的输出是隐藏
层所有神经元输出的线性加权和。在RBF神经网络中,隐藏层的作用是将数据
从低维空间映射到高维空间,当将低维空间中线性不可分的数据集转换到高维
空间时可以找到线性可分的超平面。例如在二维平面无法线性区分的数据被映
射到三维空间中时可以找到一个平面区分,如图7-15所示。

 

在RBF网络中输入到输出的映射是非线性的,而输出对可调参数而言?是
线性的。这种设计让网络的权值可由线性方程组直接解出,从而提升学习速度
并避免局部极小问题。
为什么使用高斯函数作为激活函数以后,全局?近网络会变成局部?近网
络呢?我们来看看高斯函数的图像特点,高斯函数的图像符合正态分布,函数
图像是两边衰减且径向对称的,如图7-16所示。

 

RBF 神经网络的隐藏层神经元采用输入样本与中心向量的距离(如欧式距
离)作为函数的自变量。神经元的输入离激活函数的中心越远,神经元的激活
程度就越低。这句话可以理解为:与输入样本距离较近的神经元,在高斯公式
的作用?就会被映射到较大的值,这时候神经元才能够被激活。
与输入样本距离较远的神经元就被映射到几乎为0的值,即神经元没有被
激活,在反向传播的时候没有权值不更新。从全局的角度来看,网络中只有一
部分神经元更新权值,也就是所谓的局部学习。由此可见对于RBF神经网络而
言,核心问题是确定隐藏层神经元的中心参数。常用的方法是从给定的训练样
本集里按照某种方法直接选取中心参数,或者通过聚类的方法获得。
RBF网络的优点在于,网络可根据具体问题确定相应的拓扑结构,具有自
学习、自组织、自适应的特点。它对非线性连续函数具有一致?近性,学习速
度快,可以进行大范围的数据融合,可以并行高速地处理数据。目前 RBF 神
经网络已成功应用于非线性函数?近、时间序列分析、模式识别、图像处理、
控制和故障诊断等不同的领域。
目前人工神经网络已经在一些特定领域取得了举世瞩目的成绩,可它的学
习和训练?往往是一个艰难的过程,为了获得最佳效果,常常要重复试验多
次。因此,神经网络的多元化应用、场景的挖掘离不开产品经理与工程师共同
的努力。随着业界对神经网络的深入研究以及硬件计算能力的提升,相信在不
久的将来,神经网络一定有更广泛的应用。 

有关人工智能知识全面讲解: RBF神经网络的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  5. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  6. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  7. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  8. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  9. 100个python算法超详细讲解:画直线 - 2

    1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva

  10. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

随机推荐