本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
本文讲解OLS法求解径向基神经网络的思想和原理
从本文可以了解到OLS法到底是怎么求解径向基神经网络的
本节讲解OLS求解径向基神经网络到底是怎么一回事
径向基精确求解回顾
在学习径向基神经网络OLS求解方法之前
我们先回顾径向基神经网络的精确求解方法
径向基的精确求解方法简述如下
先直接设定宽度,
然后以每个样本为中心生成径向基,
隐层权重阈值就已被确定
从而可以计算出隐节点激活值
而我们希望网络的输出与真实值一致,即
直接求解上述方程
由于方程组中待解参数比方程个数更多,
所以必能解得 的精确解
也即此时网络的误差为0
✍️附:方程的标准矩阵形式
写为标准矩阵形式为
推导过程如下
OLS求解径向基神经网络的思想
上述精确求解得到的网络会包含较多的隐节点
有多少个样本就有多少个隐节点
因此我们现在并不直接求解
而是企图先减少隐神经元,再进行求解
因为的每一列都意味着一个隐神经元,
所以也就是减少的一部分列,
但是,这样做的后果是上式不可解,而只有最小二乘解,
没关系,只要最小二乘解的误差不要太大就可以
那么,如何能让的列尽量的少,又能keep住最小二乘误差呢?
这就是OLS算法要干的事情了
本节简单介绍OLS算法,快速弄清OLS算法是干什么的,是怎么干的
OLS算法是什么
OLS算法解决什么问题
现有一矩阵,
OLS希望从A中选择了一个子集,使得的列尽量的少,
同时又能让的最小二乘误差满足要求
OLS正交最小二乘法流程介绍
OLS先初始化一个空的集合As,
然后将A的列逐个添加到As中,
每次添加的列, 都是使最小二乘误差最小的一列
直到误差已满足要求/或者所有列都已经添加进来
直白地说,就是逐列添加,每次添加最优的列
👉详细算法原理及流程参考《OLS正交最小二乘法原理》
本节讲解如何利用OLS算法来求解径向基神经网络
OLS求解径向基神经网络-流程简述
用OLS求解径向基神经网络的流程简述如下
1. 先以所有样本为中心生成径向基,并算得隐神经元激活值A
2. 使用OLS算法,对进行逐列选择,直到满足误差要求
3. 选出的列就是最终网络使用的神经元,也就确定径向基的中心
4. 最后用最小二乘求解外层权重阈值
(1) 先算出网络的激活值A
(2) 再求 的最小二乘求解
即的最小二乘解
根据最小二乘公式可得:
其中
5. 最终输出
更具体详细的流程参考《径向基神经网络-OLS求解算法流程》
理解OLS法求解径向基神经网络的两种角度
综合上面的讲述,
我们可以从不同角度来看待OLS法求解径向基神经网络的思想
理解角度一
一方面,我们可以认为
先以所有样本作为径向基中心,生成径向基神经网络,
然后用OLS法对其进行瘦身
理解角度二
另一方面,也可以认为,
先以所有样本作为中心生成备选隐节点,
然后每次选择能让网络误差下降最大的隐节点,
逐个添加到网络中去,直到误差达到要求
✍️补充
OLS求解径向基神经网络就是matlab神经网络工具箱中的newrb函数
在《径向基神经网络-OLS求解实现代码》中,我们复现与newrb一模一样的效果
结束语
阅读代码,调试代码,才能真正的理解算法的原理
具体参考以下两张文章
《径向基神经网络-OLS求解算法流程》
《径向基神经网络-OLS求解实现代码》
希望本文能够帮助大家掌握径向基神经网络的Base算法原理
✍️老饼的困惑
对于OLS求解径向基神经网络,
老饼也没办法把它讲得完全清爽干脆,它的实现依赖了较多基础知识,
对于这些基础知识讲解的“度”在哪里,一百个读者有一百个度,老饼举棋不定
老饼当前能做的,只有尽量把它讲好,但自认无法做到100%讲好
目前的文章版本,已经是老饼刷新的第nnnn个版本了
End