本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
matlab中newrb使用的是OLS算法,
OLS算法的原理推导详见《OLS正交最小二乘算法原理》
本文是笔者细扒matlab的newrb函数后
总结得到的径向基神经网络(newrb)算法流程,所述的,即newrb的内部原理
本文只讲解newrb的算法流程和实现细节
对newrb的代码复现在《径向基神经网络-OLS求解实现代码》中(本文就是该代码的解释)
本节展示OLS算法求解径向基神经网络的详细流程
可加深算法理解和代码实现时用于参考
训练程序输入说明
一、训练用的数据
x :训练样本输入数据,第列代表一个样本
y :训练样本的输出数据,每列代表一个样本
二、训练参数
spread:用于生成隐层阈值的参数,即控制径向基宽度的参数
goal :目标误差
max_hn:最大隐节点个数
OLS求解径向基神经网络-算法流程
一、初始化 `
初始化隐层权重、阈值,和待选隐节点
👉1. W21:隐层权重,初始化为空
👉2. B2 :隐层阈值,由spread生成
👉3. Cp :待选中心
待选中心就是各个样本
Cp的每行代表一个中心
👉3. AP:待选中心的隐节点激活值
计算待选中心隐节点激活值
Ap的每列代表一个样本的隐节点激活值
二、通过OLS选择隐节点中心
的每一列代表样本的一个隐节点,
使用OLS选出能满足目标误差goal的列(隐节点)子集
Sidx :选出的列索引
ApT :备选中心的隐节点激活值
y :网络要拟合的输出
goal :误差目标
max_col :子集的列数上限
可参考《OLS算法流程一文》
三、生成隐层权重、阈值
选出来的隐节点(列)的中心就是网络最终的径向基中心
从而确定W21,并对应将B2扩展到所有隐神经元
B2需要扩展成维度为隐神经元个数的列向量
四、求解输出层权重、阈值
1.计算网络的隐节点激活值A
代表第j个样本的第i个隐节点的激活值
2. 求解W32和B3
将A与y进行最小二乘,可求得W32和B3
公式如下
3. 计算最终的网络误差E
五、输出
输出网络的权重、阈值和误差
👉 W21:输入层到隐层的权重
👉 B2 :隐层的阈值
👉 W32:隐层到输出层的权重
👉 B3 :输出层的阈值
👉 E :网络误差
End