什么是RBF,人人滴如何帮助RBF投资者?

神经网络时通常不会关注于数据类型本身,因为其原理上是对特征项进行非线性转换神经元,进而优先各类特征权重值,且其中间隐藏层变换过程后已经失去原始特征的实际意义,因而神经网络通常不关注数据类型。如果一定要...
  
什么是RBF,人人滴如何帮助RBF投资者?

神经网络时通常不会关注于数据类型本身,因为其原理上是对特征项进行非线性转换神经元,进而优先各类特征权重值,且其中间隐藏层变换过程后已经失去原始特征的实际意义,因而神经网络通常不关注数据类型。如果一定要处理,建议可对定类数据进行哑变量转化后放入,关于哑变量可点击查看。

RBF全称RadialBasisFunction,中文名称“径向基函数”,辣么RBF神经网络就是径向基函数神经网络了。

是不是想到了一种核函数就叫RBF?没错,就是这货:

ϕ(x,c)=ϕ(∥x−c∥)\phi(x,c)=\phi(\parallelx-c\parallel)\phi(x,c)=\phi(\parallelx-c\parallel)

说白了就是以RBF作为激活函数的神经网络,不过与传统的BP神经网络在前向传播有所区别:

输出层的计算不用说了,和传统方法一样,WZ即可。

————————————————————————————————————

总结:所以发现其实就是在计算隐层单元的时候用了RBF激活函数,这个RBF涉及中心和宽度两个参数,其它的和BP区别不是特别大。

意义?应该就是中心和宽度存在的意义吧,RBF函数的存在使得网络结构具有局部响应的特性。

具体可移步个人博客看看,而且matlab中有例子可以跑一波看看,有兴趣还能研究一波源码:

好像蛮多人看的,我找了一份`keras`代码实现RBF层,并且测试了一波,源代码戳这里,我的测试可以直接看下面:

----------更新日志-------------

感觉按照理论来讲,上面的代码宽度向量好像没有加进来的样子,我自己改了一下:

图中小点是训练集,大圆点是测试集,对应颜色为类别。

有兴趣可以关注公众号哦,csdn和公众号都有这个理论,同时挖个坑

意思是这个RBF还能用来做顶点修正;这个是骨骼动画的一篇文章《Phase-FunctionedNeuralNetworksforCharacterControl》里面描述的,作用是从地形图里面取一块地形,然后把人放上去,但是由于脚可能踩不到地面上,所以用RBF把地形校正上来,以后有时间研究一波。

找到了简单版本的基于RBF网格编辑实现,代码在[这里](Efreeto/FaceMorph)和[这里](7/BlogLearning)

神经网络(work)是一种模拟人脑神经思维方式的数据模型,神经网络有多种,包括BP神经网络、卷积神经网络,多层感知器MLP等,最为经典为神经网络为多层感知器MLP(Multi-LayerPerception),SPSSAU默认使用该模型。类似其它的机器学习模型(比如决策树、随机森林、支持向量机SVM等),神经网络模型构建时首先将数据分为训练集和测试集,训练集用于训练模型,测试集用于测试模型的优劣,并且神经网络模型可用于特征重要性识别、数据预测使用,也或者训练好模型用于部署工程使用等。

本部分神经网络使用的‘鸢尾花分类数据集’进行案例演示,其共为150个样本,包括4个特征属性(4个自变量X),以及标签(因变量Y)为鸢尾花卉类别,共包括3个类别分别是刚毛鸢尾花、变色鸢尾花和弗吉尼亚鸢尾花(下称
A、B、C三类)。

原理上,首先输入特征项X,即放入的自变量项,神经网络模型时,可将特征项X构建出‘伪特征’,比如输入的是性别、年龄、身高、体重等,其结合‘激活函数’构建出一些‘伪特征项’(即事实不存在,完全由模型构建的特征项,并且是无法解释的特征项),具体构建上,比如为线性激活函数时可直观理解为类似“y=1 2*x1 3*x2 4*x3 …”这样的函数)。并且构建‘伪特征项’可有多个层次(即‘隐层神经元’可以有多层,默认是1层),并且每个层次可以有多个神经元(默认是100)。最终由数学优化算法计算,得到输出,即预测项。

通俗上看,即输入特征项X,然后经过1轮或多轮的‘伪特征’构建,并且由算法最优求解,得到输出项。结合神经网络的原理情况,其涉及以下参数,如下:

激活函数,即中间神经元如何得到的数学函数,通常是非线性函数,且通常使用relu项即可。权重优化方法上提供三种,分别是lbfgs,sgd和adam,默认使用机遇梯度下降法,权重优化方法用于最优权重值计算。“L2正则化惩罚系数”用于防止过拟合使用,该值越大时越容易带来更好的训练模型拟合,但‘过拟合’风险越高(即训练数据模型良好,但测试数据模型糟糕)。最大迭代次数和优化容忍度为算法内部结束的判断标准。

隐层神经元设置上,层数越多模型越复杂,计算时间越长,但理论上层数越多模型拟合效果会越好,SPSSAU默认是一层。神经元个数(即‘伪特征数量’)上,该参数值越大时越容易带来更好的模型拟合效果,但同时也容易带来‘过拟合’效果,一般情况下建议神经元个数应该小于‘特征项个数’的2倍,比如本案例数据时仅为4个特征项,可将神经元个数最多设置为8;隐层神经元层次越多,神经元个数越多时,会让模型变的复杂并且计算时间越长,当特征项个数较多时,建议通过减少层数和神经元个数方式综合权衡(SPSSAU默认是一层,神经元个数为100)。

除此之外,当权重优化方法为sgd或者adam时,可能涉及下述3个参数值(权重优化方法为lbfgs牛顿法时时不包括),如下:

初始学习率为内部迭代过程中最优解移动的步长值,该值越大时计算越快,但容易找不到最优解,该值越小时计算越慢,但其更可能找到最优解。除此之外,还可对学习率进行优化,优化方法共有三种,默认使用constant法。

Batchsize指内部数学算法时每次用于训练数据的个数,比如训练数据有个,那么设置Batchsize为100,神经网络内部算法会先用其中100个数据来训练,然后用另外100个训练,一直训练直至训练数据使用完。该参数值越小时,其会减少机器内存的使用,但通常神经网络运行时间会越长,该参数值默认为200和训练样本个数二者的较小值,如果训练数据较小时,建议自行设置该参数值为较小值,比如仅100个训练数据时,建议设置该值介于2~20之间,但过小的Batchsize值会带来计算收敛太慢等问题,因而实际使用时,建议设置多个不同的batchsize值进行对比选择使用。

训练集比例默认选择为:0.8即80%(150*0.8=120个样本)进行训练神经网络,余下20%即30个样本(测试数据)用于模型的验证。为保持数据量纲统
一,选择‘正态标准化’方式。但需要注意的是,本案例数据仅150个,用于训练的数据仅120个非常少,因而需要特别设置某些参数值。

首先是batchsize值,由于仅120个数据用于训练模型太少,因此batchsize设置为10个(或者20个对比等)较好。其它参数暂默认,但第一次出来的模型非常糟糕,训练集数据f1-score仅为0.58,意味着该模型不可行。接着考虑隐层神经元这个重要的参数值,由于当前数据样本非常少,并且特征项很低,可以考虑‘让模型更复杂些’,即加大神经元层数,本次设置为3层,每层为100个神经元。最终训练数据评估效果良好,并且测试数据评估效果良好,意味着模型不存在‘过拟合’现象,模型可用。

SPSSAU共输出5项结果,依次为基本信息汇总,训练集或测试集模型评估结果,测试集结果混淆矩阵,模型汇总表和模型代码,如下说明:

上述表格中,基本信息汇总展示出因变量Y(标签项)的分类分布情况,模型评估结果(包括训练集或测试集)用于模型的拟合效果判断,尤其是测试集的拟合效果,以及提供测试集数据的混淆矩阵结果;模型汇总表格将各类参数值进行汇总,并且在最后附录神经网络模型构建的核心代码。

接下来针对最重要的模型拟合情况进行说明,如下表格:

上表格中分别针对训练集和测试集,提供四个评估指标,分别是精确率、召回率、f1-scrore、准确率,以及平均指标和样本量指标等,训练数据时f1-score值为0.97,并且测试集数据也保持着0.94高分,二者比较接近,因而意味着应该不存在‘过拟合’现象,而且模型良好。

接着进一步查看测试数据的‘混淆矩阵’,即模型预测和事实情况的交叉集合,如下图:

‘混淆矩阵’时,右下三角对角线的值越大越好,其表示预测值和真实值完全一致。上图中仅B类中2个样本被判断成C类,其余全部正确,意味着本次神经网络在测试数据上表现良好。最后SPSSAU输出模型参数信息值,如下表格:

模型汇总表展示模型各项参数设置情况,最后SPSSAU输出使用python中slearn包构建本次神经网络的核心代码如下:

model=MLPClassifier(activation='relu',alpha=1.0E-4,hidden_layer_sizes=(100,100,100),learning_rate='constant',learning_rate_init=1.0E-4,batch_size=20,max_iter=200,solver='adam',tol=0.001)

model.fit(x_train,y_train)

神经网络模型时,参数设置非常重要,建议对batchsize进行自定义(当权重优化方法为sgd或adam时,且选择batchsize为custom,自定义batchsize),并且设置隐层神经元层数及每层神经元个数(隐层神经元层数加大,每层神经元个数加大时均对模型有着拟合帮助,但会带来计算时间更长且模型更复杂带来‘过拟合’现象,正常情况下建议隐层神经元层数小于等于3)。如果出现‘过拟合’现象,可对L2正则化惩罚系数值进行设置(设置更大)。另外可对初始学习率参数值设置更多,以加快计算速度。

RBF神经网络简单的说,就是用多个钟型函数(径向基)来凑合出目标曲线

RBF神经网络以6个原始数据点(图中蓝色的点)为中心,生成了6个RFB曲线

6个RBF曲线叠加后就是一条能够光滑地拟合原始数据点的曲线(绿色)

径向基神经网络主要就是利用了RFB函数只对中心邻近区域有影响的特性(局部性)

从而在每个局部都用一个径向基去凑合,最终达到全局拟合

\displaystyle\text{y}=w_i\sum\limits_i\textbf{RBF}_i b\displaystyle\text{y}=w_i\sum\limits_i\textbf{RBF}_i b

一个2输入、3个RBF神经网络的数学表达式如下:

\begin{aligned}\text{y}=

温馨提醒
本页面内容来自互联网用户分享,仅供参考,如有侵犯到你的权益请联系本站,将在24小时内做出处理!
本页地址 http://www.371dns.cn/5866/5384.html