RBF神经网络

【原理】RBF神经网络-OLS算法是什么

作者 : 老饼 发表日期 : 2023-01-18 19:35:37 更新日期 : 2024-12-13 00:47:52
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



OLS算法是RBF神经网络中常用的一种求解算法,它比RBF插值法使用更少的隐节点

本文讲解OLS法的是如何减少RBF神经网络的隐节点的,并展示OLS算法的效果与流程

通过本文,可以了解RBF神经网络的OLS算法是什么,以及它的算法流程和效果





      01. RBF神经网络-OLS算法是什么      





本节介绍RBF神经网络的OLS正交最小二乘法是什么





     RBF神经网络-OLS法介绍     


OLS全称为Orthogonal least squares正交最小二乘法,是RBF神经网络最常用的求解算法
RBF神经网络的OLS法是RBF插值法的改进,它用于减少RBF插值法的隐节点个数
OLS正交最小二乘法与插值法一样,先以每个样本为中心生成隐节点,如下:
 RBF神经网络OLS算法是什么
假设有n个样本,OLS就以这n个样本为中心,生成n个隐节点,但这n个只是待用隐节点
OLS从这n个隐节点中逐个挑选隐节点,每次都选出能让模型误差下降最多的隐节点添加模型中来
直到RBF神经网络的误差达到要求,就不再添加隐节点
 所以,OLS正交最小二乘法相当于RBF插值法的优化,它在满足误差的前提下,尽量使用更少的隐节点





    OLS法构建RBF神经网络的简单示例    


在matlab中可以使用newrb来构建一个RBF神经网络,它使用的就是OLS算法
 代码如下所示:
 newrb(OLS算法)构建RBF神经网络的代码
 运行后的结果如下:
 代码运行结果
从图中可以看到,OLS算法在刚开始时,没有使用任何隐节点,它的误差为0.56
然后逐个添加隐节点,每次所添加的隐节点都是能让误差下降最多的隐节点
随着隐节点的添加,误差逐步下降,
最后,在添加到第4个隐节点时,误差已经小于0,则停止添加隐节点,结束模型的构建








      02. RBF神经网络-OLS法的流程      





本节简单描述OLS算法求解RBF神经网络时的流程





     RBF神经网络-OLS算法流程-简述     


下面不太严谨地讲述OLS算法的流程,以了解OLS算法求解RBF神经网络到底干了什么
OLS算法训练RBF神经网络的流程如下:
输入参数:径向基宽度系数spread,目标误差goal,最大隐神经元数MN

一、计算隐层阈值与激活值                                                                                      
1. 根据spread计算出隐层的阈值                                                          
  
2. 设有n个样本,以它们为中心,各生成一个RBF                                        
 计算出所有样本的隐层RBF激活值,n个样本,每个有n个RBF                 
 二、选择隐节点                                                                                                       
1. 初始化                                                                                                   
(1)初始化误差为                                                 
(2)初始化已选择隐节点池S                                                                  
                                                                             
(3)初始化待选择隐节点池P                                                                  
 将所有隐节点都作为待选隐节点                                                
 
2. 逐个选择隐节点                                                                                     
(1)计算添加"待选择池"中各个隐节点时,所能带来的模型误差下降量    
(2)将误差量下降最大的隐节点从"待选择池"移到"已选择池"                  
(3)计算模型当前的误差,并记录误差                                                   
(4)判断是否满足终止条件,如果未满足条件,则继续选择下个隐节点   
     终止条件:1. 是否达到目标误差,2.是否达到最大隐节点个数
 三、求解模型的参数                                                                                                 
 1. 确定模型的隐层权重、阈值                                                                     
               (1)隐层的权重                                                                                           
       选择池的隐节点就是最终模型的隐节点,因此它们的中心就是隐层权重
即     
(2)隐层的阈值:在程序最开始时已经由spread计算得到                 
2. 求解模型的输出层权重、阈值                                                                 
  计算出隐层激活值,再用最小二乘法进行求解     
(1)先计算隐节点值:                     
      (2)由于要求解阈值,所以需要把H拼上一列1,即:                 
                  (3)使用最小二乘法解出权重、阈值:                    





     笔者-编后语     


OLS求解RBF神经网络相对复杂些,这里只作不太严谨的描述
在使用时,matlab提供了newrb函数,就可以使用OLS法构建一个RBF神经网络
如果一定要深究原理,在《课程:RBF神经网络-算法原理与自实现》中,
将彻底讲述OLS法是如何构建RBF神经网络的,以及相关推导过程,并复现newrb函数
原理与代码说简单也简单,说复杂也复杂,如非理论研究的同学,不推荐阅读






好了,以上就是使用OLS算法训练RBF神经网络的原理与介绍了~









 End 




联系老饼