本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
OLS算法是RBF神经网络中常用的一种求解算法,它比RBF插值法使用更少的隐节点
本文讲解OLS法的是如何减少RBF神经网络的隐节点的,并展示OLS算法的效果与流程
通过本文,可以了解RBF神经网络的OLS算法是什么,以及它的算法流程和效果
本节介绍RBF神经网络的OLS正交最小二乘法是什么
RBF神经网络-OLS法介绍
OLS全称为Orthogonal least squares正交最小二乘法,是RBF神经网络最常用的求解算法
RBF神经网络的OLS法是RBF插值法的改进,它用于减少RBF插值法的隐节点个数
OLS正交最小二乘法与插值法一样,先以每个样本为中心生成隐节点,如下:
假设有n个样本,OLS就以这n个样本为中心,生成n个隐节点,但这n个只是待用隐节点
OLS从这n个隐节点中逐个挑选隐节点,每次都选出能让模型误差下降最多的隐节点添加模型中来
直到RBF神经网络的误差达到要求,就不再添加隐节点
所以,OLS正交最小二乘法相当于RBF插值法的优化,它在满足误差的前提下,尽量使用更少的隐节点
OLS法构建RBF神经网络的简单示例
在matlab中可以使用newrb来构建一个RBF神经网络,它使用的就是OLS算法
代码如下所示:
运行后的结果如下:
从图中可以看到,OLS算法在刚开始时,没有使用任何隐节点,它的误差为0.56
然后逐个添加隐节点,每次所添加的隐节点都是能让误差下降最多的隐节点
随着隐节点的添加,误差逐步下降,
最后,在添加到第4个隐节点时,误差已经小于0,则停止添加隐节点,结束模型的构建
本节简单描述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