径向基神经网络-算法原理与自实现
径向基
径向基-详细算法流程
作者 : 老饼 日期 : 2022-06-09 04:48:24 更新 : 2022-06-29 01:27:20
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com



本文是笔者细扒matlab的newrb函数后,

总结得到的径向基神经网络(newrb)算法流程,所述的,即newrb的内部原理。


本文只讲解newrb的算法流程和实现细节,

对newrb的代码复现在《径向基-自实现代码》中(本文就是该代码的解释)。

matlab中newrb使用的是OLS算法,OLS算法的原理推导详见《OLS正交最小二乘算法》。



  告读者  


本文写得不够清晰,明朗,暂时无能力用文字表达清晰,
当聊胜于无,仅作为读者阅读《径向基-自实现代码》时的辅助文章,不建议直接阅读本文。



  一、整体思想  


径向基的核心目的就是优化精确径向基隐节点过多的问题。


  OLS算法  


OLS算法就很好的解决这个问题,
径向基在所有样本生成的隐神经元中,挑出尽量少的隐神经元来满足目标误差。

OLS逐个贪婪式添加隐节点.
每次在剩余的神经元中,找出能令误差最大下降的神经元添加进来,
直到满足目标误差,则停止添加。



  二、主流程  


   符号说明  


W21:输入层到隐层的权重。
B2:隐层的阈值。                 
W32:隐层到输出层的权重。
B3:输出层的阈值。             



   主流程   


1、W21、B2的初始化
2、计算所有样本生成的待选隐节点激活值。
3、从待选隐节点中,选择一个使误差下降最大的隐节点,添加到网络(即添加到W21)。
4、计算网络的训练误差,如果小于目标误差,或所有隐节点已被选择,则终止隐节点选择,否则重复3.
5、将已选隐节点的激活值与输出y进行最小二乘法,求得W32和B3。
6、输出网络的参数W21,B2,W32,B3和最终网络训练误差。




  三、算法实现细节  


1、B2、W21的初始化


B2的生成
B2由spread生成,B2是径向基肥瘦的控制参数,
如果直接设置B2比较盲目,一般由spread参数来确定。

  

它的意义是,当数据与径向基的中心距离为spread时,径向基的值为0.5
(径向基最大值为1,也即是径向基最大值的一半)
W21的初始化

 
W21先初始化为空,后面逐步往网络添加隐节点的同时,也就是往W21添加行。


2、计算待选隐节点的激活值


用所有训练样本生成的径向基生成待选隐节点,待选隐节点的激活值矩阵用A表示。
代表第i个样本的第j个隐节点的激活值。

备注:A的每j列记录了所有训练样本在第j个隐神经元的值。


3、从待选隐节点中逐个添加隐节点


隐节点的添加使用的是OLS算法,它的算法具体执行流程与步骤查看本文第四部分《OLS法添加隐节点》


4  、计算W32,B3


将挑出的隐节点用最小二乘法计算出令预测误差最小的W32,B3。
即求的最小二乘解  
其中 为A中选择的隐神经元的组成的子集。

可由求解公式解得:
  
   
    


5、输出结果


输出 模型的权重和阈值:W21,B2,W32,B3



四、OLS法添加隐节点

   符号说明   


已选列池S(select):从A中选出的列子集,用于拟合y
待选列池R(rest):所有未被选入的列的集合
单位正交待选列池sR( standar Rest):由待选列池所有列,对已选列池中所有列进行正交,并单位化后得到

   流 程  




(1) 初始化已选列池,待选列池,单位正交待选列池


已选列池:初始化为空,
待选列池:初始化为A,
单位正交待选列池:将待选列池各列单位化,作为单位正交待选列池的初始化



(2) 计算待选列的误差下降量


通过公式,计算单位正交待选列池各列的误差下降量,
选择a列带来的误差下降量 如下计算:

y为单列时: 

 

y为多列时可以参考使用

  



(3) 选择使误差下降最大的列


获取本次选择的列:
通过比较各列的 ,得到使误差下降最大的列,假设为k,
  
 更新待选列池R、已选列池S: 
 将待选列池的第k列移到已选列池。

更新单位正交待选列池sR:
 理论上将sR的第k列移除,将sR各列与正交化后的S进行正交化,但事实不必如此。
由于之前sR已经与未加入新列的S正交化了,因此,只需将sR对新列正交化即可。

实际操作:将sR各列(第k列除外)对第k列进行正交化,并单位化,然后移除第k列。

用向量a生成与向量b的正交量d的公式: (即a减去a在b的投影向量)



(4) 检查是否满足终止条件,否则继续步骤(2)、(3)


终止条件如下:
(1) 计算S的最小二乘误差,如果小于目标误差,则终止。
(2) 待选列池为空,则终止。                                          







 End 




联系老饼