作者:李瞬生
链接:https://www.zhihu.com/question/44328472/answer/128973724
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

BP Neural Network - 使用 Automatic Differentiation (Backpropagation) 进行导数计算的层级图模型 (layer-by-layer graphical model)

只要模型是一层一层的,并使用AD/BP算法,就能称作 BP Network。RBF Network 是其中一个特例

关于 AD 与 BP 算法的介绍
1. 请问自动微分法(Automatic differentiation)是如何用C++实现的? - 李瞬生的回答
2. Backwards differentiation in AD and neural nets: Past links and new opportunities

接下来简单介绍 RBF Network 相比一般 Neural Network 具有的特点。
机器学习的模型通常存在各种解读。相对正统的是统计上的解读。但这里只谈直观上的解读,以求易读。

RBF Network 通常只有三层。输入层、中间层计算输入 x 矢量与样本矢量 c 欧式距离的 Radial Basis Function (RBF) 的值,输出层算它们的线性组合。
<img src="https://pic2.zhimg.com/v2-6ca339af711c3e1f4bc0faec67183765_b.png" data-rawwidth="652" data-rawheight="413" class="origin_image zh-lightbox-thumb" width="652" data-original="https://pic2.zhimg.com/v2-6ca339af711c3e1f4bc0faec67183765_r.png">

图一

如此可见,和普通的三层神经网络,RBF 神经网络的区别在中间层。中间层采用 RBF Kernel 对输入作非线性变换,以便输出层训练线性分类器。

那么RBF Kernel 有什么特点呢?
<img src="https://pic4.zhimg.com/v2-eee3757340da292aa37e7041e431a8d3_b.png" data-rawwidth="410" data-rawheight="69" class="content_image" width="410">

图二 Radial Basis Function

<img src="https://pic4.zhimg.com/v2-247e21354a2a27841557f0ae63133fbb_b.png" data-rawwidth="432" data-rawheight="277" class="origin_image zh-lightbox-thumb" width="432" data-original="https://pic4.zhimg.com/v2-247e21354a2a27841557f0ae63133fbb_r.png">

图三 Plot of Radial Basis Function with 2D input

RBF 拥有较小的支集。针对选定的样本点,它只对样本附近的输入有反应,如下图。
<img src="https://pic2.zhimg.com/v2-414076018e191d3ed7cf50bc1f49b0c1_b.png" data-rawwidth="466" data-rawheight="347" class="origin_image zh-lightbox-thumb" width="466" data-original="https://pic2.zhimg.com/v2-414076018e191d3ed7cf50bc1f49b0c1_r.png">

图四 RBF 使样本点只被附近(圈内)的输入激活

T. Poggio 将 RBF 比作记忆点。与记忆样本越近,该记忆就越被激活。

有的同学看到这,也许会说:这不就是 SVM with RBF Kernel 么。
这些同学对了一半。光看模型,RBF Network 确实与 SVM with RBF kernel 无异。区别在于训练方式。

其实在深度学习出现之前,RBF神经网络就已经提出了 2-stage training。
第一阶段为非监督学习,从数据中选取记忆样本(图四中的紫色中心)。例如聚类算法可在该阶段使用。
第二阶段为监督学习,训练记忆样本与样本输出的联系。该阶段根据需要可使用 AD/BP。

小结:
1. RBF神经网络的训练过程可以使用BP,因此应纳入BP神经网络的范畴。
2. RBF神经网络的训练分两阶段,这一点类似深度学习,且使RBF神经网络不同于SVM with RBF kernel。

 
#简单来说,1)BP_NN是使用BP算法的神经网络,RBF_NN是激活函数是RBF的神经网络;2)层数、结构不同;
                    3)NN一般使用BP算法,RBF_NN使用改进的BP算法(2-stage training)
                    4)BP_NN是全局逼近,有局部极小值;RBF_NN是“局部感知域”,不存在局部极小,对非线性连续函数有一致逼近性
 
更理论化的解释:
作者:Zach
链接:https://www.zhihu.com/question/44328472/answer/155506678
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

RBF神经网络与BP神经网络都是非线性多层前向网络,它们都是通用逼近器。对于任一个BP神经网络,总存在一个RBF神经网络可以代替它,反之亦然。但是这两个网络也存在着很多不同点,这里从网络结构、训练算法、网络资源的利用及逼近性能等方面对RBF神经网络和BP神经网络进行比较研究。

  1. 从网络结构上看。 BP神经网络实行权连接,而RBF神经网络输入层到隐层单元之间为直接连接,隐层到输出层实行权连接。BP神经网络隐层单元的转移函数一般选择非线性函数(如反正切函数),RBF神经网络隐层单元的转移函数是关于中心对称的RBF(如高斯函数)。BP神经网络是三层或三层以上的静态前馈神经网络,其隐层和隐层节点数不容易确定,没有普遍适用的规律可循,一旦网络的结构确定下来,在训练阶段网络结构将不再变化;RBF神经网络是三层静态前馈神经网络,隐层单元数也就是网络的结构可以根据研究的具体问题,在训练阶段自适应地调整,这样网络的适用性就更好了。
  2. 从训练算法上看。 BP神经网络需要确定的参数是连接权值和阈值,主要的训练算法为BP算法和改进的BP算法。但BP算法存在许多不足之处,主要表现为易限于局部极小值,学习过程收敛速度慢,隐层和隐层节点数难以确定;更为重要的是,一个新的BP神经网络能否经过训练达到收敛还与训练样本的容量、选择的算法及事先确定的网络结构(输入节点、隐层节点、输出节点及输出节点的传递函数)、期望误差和训练步数有很大的关系。RBF神经网络的训练算法在前面已做了论述,目前,很多RBF神经网络的训练算法支持在线和离线训练,可以动态确定网络结构和隐层单元的数据中心和扩展常数,学习速度快,比BP算法表现出更好的性能。
  3. 从网络资源的利用上看。 RBF神经网络原理、结构和学习算法的特殊性决定了其隐层单元的分配可以根据训练样本的容量、类别和分布来决定。如采用最近邻聚类方式训练网络,网络隐层单元的分配就仅与训练样本的分布及隐层单元的宽度有关,与执行的任务无关。在隐层单元分配的基础上,输入与输出之间的映射关系,通过调整隐层单元和输出单元之间的权值来实现,这样,不同的任务之间的影响就比较小,网络的资源就可以得到充分的利用。这一点和BP神经网络完全不同,BP神经网络权值和阈值的确定由每个任务(输出节点)均方差的总和直接决定,这样,训练的网络只能是不同任务的折中,对于某个任务来说,就无法达到最佳的效果。而RBF神经网络则可以使每个任务之间的影响降到较低的水平,从而每个任务都能达到较好的效果,这种并行的多任务系统会使RBF神经网络的应用越来越广泛。
  4. 局部逼近与全局逼近
  • BP神经网络的隐节点采用输入模式与权向量的内积作为激活函数的自变量,而激活函数采用Sigmoid函数。各隐节点对BP网络的输出具有同等地位的影响,因此BP神经网络是对非线性映射的全局逼近
  • RBF神经网络的隐节点采用输入模式与中心向量的距离(如欧式距离)作为函数的自变量,并使用径向基函数(如Gaussian函数)作为激活函数。神经元的输入离径向基函数中心越远,神经元的激活程度就越低。RBF网络的输出与数据中心离输入模式较劲的“局部”隐节点关系较大,RBF神经网络因此具有“局部映射”特性。

总之,RBF神经网络可以根据具体问题确定相应的网络拓扑结构,具有自学习、自组织、自适应功能,它对非线性连续函数具有一致逼近性,学习速度快,可以进行大范围的数据融合,可以并行高速地处理数据。RBF神经网络的优良特性使得其显示出比BP神经网络更强的生命力,正在越来越多的领域内替代BP神经网络。目前,RBF神经网络已经成功地用于非线性函数逼近、时间序列分析、数据分类、模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。

[1] MATLAB中文论坛. MATLAB神经网络30个案例分析[M]. 北京航空航天大学出版社, 2010.

[2] letsgoaway. 神经网络及BP与RBF比较[EB/OL]. https://wenku.baidu.com/view/fdcb2ba7195f312b3069a54c.html.

RBF神经网络和BP神经网络的关系的更多相关文章

  1. 机器学习(一):梯度下降、神经网络、BP神经网络

    这几天围绕论文A Neural Probability Language Model 看了一些周边资料,如神经网络.梯度下降算法,然后顺便又延伸温习了一下线性代数.概率论以及求导.总的来说,学到不少知 ...

  2. 神经网络与BP神经网络

    一.神经元 神经元模型是一个包含输入,输出与计算功能的模型.(多个输入对应一个输出) 一个神经网络的训练算法就是让权重(通常用w表示)的值调整到最佳,以使得整个网络的预测效果最好. 事实上,在神经网络 ...

  3. 简单易学的机器学习算法——神经网络之BP神经网络

    一.BP神经网络的概念     BP神经网络是一种多层的前馈神经网络,其基本的特点是:信号是前向传播的,而误差是反向传播的.详细来说.对于例如以下的仅仅含一个隐层的神经网络模型: watermark/ ...

  4.  BP神经网络

     BP神经网络基本原理 BP神经网络是一种单向传播的多层前向网络,具有三层或多层以上的神经网络结构,其中包含输入层.隐含层和输出层的三层网络应用最为普遍. 网络中的上下层之间实现全连接,而每层神经元之 ...

  5. 用Python实现BP神经网络(附代码)

    用Python实现出来的机器学习算法都是什么样子呢? 前两期线性回归及逻辑回归项目已发布(见文末链接),今天来讲讲BP神经网络. BP神经网络 全部代码 https://github.com/lawl ...

  6. MATLAB神经网络(1) BP神经网络的数据分类——语音特征信号分类

    1.1 案例背景 1.1.1 BP神经网络概述 BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播.在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层.每一层的神 ...

  7. BP神经网络原理详解

    转自博客园@编程De: http://www.cnblogs.com/jzhlin/archive/2012/07/28/bp.html  http://blog.sina.com.cn/s/blog ...

  8. NO.2:自学tensorflow之路------BP神经网络编程

    引言 在上一篇博客中,介绍了各种Python的第三方库的安装,本周将要使用Tensorflow完成第一个神经网络,BP神经网络的编写.由于之前已经介绍过了BP神经网络的内部结构,本文将直接介绍Tens ...

  9. BP神经网络-- 基本模型

    转载:http://www.cnblogs.com/jzhlin/archive/2012/07/28/bp.html BP 神经网络中的 BP 为 Back  Propagation 的简写,最早它 ...

随机推荐

  1. 部署python3.6下的django

    首先是安装好nginx,配置web目录,配置文件在confi.d中, server { # the port your site will be served on listen ; # the do ...

  2. 如何使用firebug

    什么是Firebug 从事了数年的Web开发工作,越来越觉得现在对WEB开发有了更高的要求.要写出漂亮的HTML代码:要编写精致的CSS样式表展示每个页面模块:要调试javascript给页面增加一些 ...

  3. 【opencv基础】cv::Point类型与行列的关系

    关系 row == height == Point.y col == width == Point.x Mat::at(Point(x, y)) == Mat::at(y,x) 参考 1.博客: 完

  4. linux下普通用户无法使用sudo命令问题

    今天在新装的linux虚拟机中使用sudo命令时,报错如下 We trust you have received the usual lecture from the local System Adm ...

  5. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 ruleflow-group&salience

    转载至:https://blog.csdn.net/wo541075754/article/details/75299888 ruleflow-group 在使用规则流的时候要用到ruleflow-g ...

  6. 51Nod1526 分配笔名

    分析 在trie树上贪心,将所有串加入trie树中,在深度较深的地方匹配会更优. 由于只需要知道最后的总质量,所以直接取每个点的子树中最大的匹配即可 复杂度\(O(\sum len)\) 加串的时候把 ...

  7. 推荐 Laravel API 项目必须使用的 8 个扩展包

    如今在现代网络开发中,比较流行的模式是基于 API 开发,可以通过手机或网站来创建服务. Laravel 是创建基于 API 的项目的最佳框架之一,它为世界各地的大型社区提供了高速开发. Larave ...

  8. ES6必知必会 (二)—— 字符串和函数的拓展

    字符串的拓展 1.ES6为字符串添加了遍历器接口,因此可以使用for...of循环遍历字符串 2.字符串新增的 includes().startsWith().endsWidth() 三个方法用于判断 ...

  9. laravel集合

    1.简介 Illuminate\Support\Collection 类为处理数组数据提供了平滑.方便的封装.例如,查看下面的代码,我们使用辅助函数 collect 创建一个新的集合实例,为每一个元素 ...

  10. goss docker-compose 集成使用

    原理很简单,就是使用volume 进行数据共享, 并执行服务器状态校验 docker-compose 文件 version: "3" services: goss: image: ...