神经网络小结(1)(主要为径向基神经网络)

RBF径向基神经网络,在MATLAB中有两类,一种是精确型RBF,另一种是近似型的RBF。

doc newrbe找出rbe神经网络的帮助文档

GRNN广义回归神经网络

PNN概率神经网络

这三种是类似的,只是细节上有一些差别。

BP误差反向传播,参数比较多

 

varargin是matlab的一个函数,是“Variable length input argument list”的缩写,它提供了一种函数可变参数列表机制,允许调用者调用该函数时根据需要来改变输入参数的个数。

function out1 = newrbe(varargin)

 

[m,n] = size(X)

返回矩阵X的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数。

 

 w1 = p';输入层的权值就是采用的输入矩阵的转置。

 

log(.5)=log(0.5)

 

Spread参数很重要是rbf神经网络唯一要调节的参数。

欧氏距离是什么???就是根号项两点的平方差的和。

 

 

为什么神经网络每次运行的结果都不一样???

结果不一样:在创建的时候,权值阈值不一样

数据集要好,测试集,验证集要有很好地代表性。样本量要够。样本的平衡性。样本和样本之间要有区分度,就是很典型。

 

GRNN

第一层是一样的。第二层的权值设置的是训练集的输出。

 

(一脸懵逼)Cover定理:将复杂的模式分类问题非线性的投射到高维空间将比投射到低维空间更可能是线性可分的。也就是说这个问题在低维空间不一定是线性可分的,但如果把它映射到高纬度的空间去,在那里就可能是线性可分的。这就是RBF网络的原理。

 

扩展速度spread的确定

RBF网络有个参数叫扩展速度spread,在MATLAB中创建RBF网络时是要事先设定好的,其默认值为1。

spread越大,函数拟合越平滑,但是逼近误差会变大,需要的隐藏神经元也越多,计算也越大。

spread越小,函数的逼近会越精确,但是逼近过程会不平滑,网络的性能差,会出现过适应现象。

所以具体操作的时候要对不同的spread值进行尝试,spread即要大到使得神经元产生响应的输入范围能够覆盖足够大的区域,同时也不能太大,而使各个神经元都具有重叠的输入向量响应区域。

net.iw{1,1}=W0;net.b{1}=B0;
net.lw{2,1}=W1;net.b{2}=B1;
net.iw{1,1}=W0;输入层和隐层间的权值,net.b{1}=B0输入层和隐层间的阈值
net.lw{2,1}=W1;隐层到输出层间的权值,net.b{2}=B1;隐层到输出层间的阈值

 

Isequal(W1’,P_)判断是否一样

 

RBF改进

唯一可能有点区别的是,标准BP算法中,每输入一个样本,都要回传误差并调整权值,这种对每个样本轮训的方法称为“单样本训练”。由于单样本训练遵循的是只顾眼前的“本位主义”原则,只针对每个样本产生的误差进行调整,难免顾此失彼,使训练次数增加,导致收敛速度过慢。因此,有另外一种方法,就是在所有样本输入之后,计算网络的总误差,再根据总误差调整权值,这种累积误差的批处理方式称为“批训练”或“周期训练”。在样本数较多时,批训练比单样本训练的收敛速度更快。

RBF神经网络收敛比BP神经网络收敛快。

BP神经网络学习率给太大会使的训练集的误差有几次反而会增大。

总是收敛不了(给一个比较大的e=0.1也收敛不了)有可能是不存在这样一个规律或者说函数关系。也有可能是学习率给大了。对于同一个神经元的权重,调节的大小与输入值的大小成比例。

 

MSE和RMSE都是网络的性能函数。MSE是(神经)网络的均方误差,叫"Mean Square Error"。比如有n对输入输出数据,每对为[Pi,Ti],i=1,2,...,n.网络通过训练后有网络输出,记为Yi。那MSE=(求和(Ti-Yi)^2(i=1,2,..n))/n,即每一组数的误差平方和再除以数据的对数。RMSE叫“Root Mean Square Error”,即在MSE基础上要开根号,中文译为“均方根误差”,MSE=MSE开根号。亦即RMSE是MSE的平方根

 

关于matlab中bp神经网络的质疑:

  1. 调节的时候受后面的影响大,确实是这样。学习率可以控制这种情况不至于太过。
  2. 最终的最优解是一个多个函数“重叠”下取的一个最小值,顺序其实是有影响的,但是肯定会在一定的小范围内波动,顺序产生的影响基本可以忽略,在这个小范围内误差应是差不多的。
  3. GD,SGD区别,MATLAB用的是SGD,mini-batch GD
  4. MATLAB的performance其实是每一次迭代后的最终权值对于所有训练集的误差平方和的平均数。
  5. (MSE方法)BP的performance是最终的权值对于所有的样本取一个平方和平均值

 

 

 

 

 

博客中说的:https://www.cnblogs.com/shixiangwan/p/7532830.html

可以这样理解:随机梯度下降方法以损失很小的一部分精确度(如果噪声的比例大到可以影响很大的精度,那是样本的问题,不是随机梯度下降法的问题,随机梯度下降法的学习率一般都给得很小)和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。

对批量梯度下降法和随机梯度下降法的总结:

批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。

随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。

博客:http://www.cnblogs.com/maybe2030/p/5597716.html

理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。就像前面多层感知机带给我们的启示一样,神经网络的层数直接决定了它对现实的刻画能力。但是在一般情况下,复杂模型的训练效率低,易陷入过拟合,因此难以受到人们的青睐。具体来讲就是,随着神经网络层数的加深,优化函数越来越容易陷入局部最优解(即过拟合,在训练样本上有很好的拟合效果,但是在测试集上效果很差)。同时,不可忽略的一个问题是随着网络层数增加,“梯度消失”(或者说是梯度发散diverge)现象更加严重。我们经常使用sigmoid函数作为隐含层的功能神经元,对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本接收不到有效的训练信号。

 

Ismember(A,S)判断A中的元素是否在B里面。如果在,返回1,不在返回0

cumsum() 求累加和,A1,A1+A2,A1+A2+A3,A1+A2+A3+A4

 

上图横坐标为你的目标值,纵坐标为你的网络的输出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值