神经网络焦点问题的解决方案

链接:http://blog.sina.com.cn/s/blog_4d2f6cf201000cjx.html

神经网络是一个非线性回归模型。给定样本,不同的网络结构决定了它的泛化性能。一般来说,网络结构不能过于复杂,因为复杂的网络结构意味着要估计更多的参数,因而模型的精度变差。控制模型复杂程度,可采用选择少的神经元数量或者对系数的收缩。系数收缩的思想来自岭回归(ridge regression)就是在误差平方和的目标函数后面再加一项对绝对值过高的系数的惩罚。



min S(β)=sum[yi-f(xi,β)]^2 + c * R(β)


R(β)=sum βj^2 或者 R(β)=sum βj^2/(1+βj^2) ,罚函数不包括截距项。


1.【讨论】如何选择训练集和测试集数据?
一般需要将样本分成独立的三部分训练集(train set),验证集(validation set)和测试集(test set)。其中训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,而测试集则检验最终选择最优的模型的性能如何。一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。
样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。


2.【讨论】数据归一化问题
数据归一化属于数据的预处理。因为sigmoid函数根据不同的变换,输出在0到1或者-1到1之间,因此如果不做归一,就会出现样本输出超出神经网络输出的范围。选择最大的值max和最小值min,做如下变换
x=(x-min)/(max-min)就是归一化。
需要注意的是max和min不应该直接选择为x中的最大值和最小值。原因是样本只是有限的观测,有可能还有更大或者更小的观测,因此合适的选择应该max选取xmax大一些和min比xmin小一些的。
归一化并不总是合适的预处理,因为它不能使分布不对称的样本变得更对称一些,标准化要好一些。另外,有时候主成分分析也能起到降维的作用。


3.【原创】关于目标训练误差的设置以及LM训练算法
关于目标训练的误差值,我觉得不应该人为地设定误差平方和目标,设定太小的目标会出现过度拟合。倒是可以设定本次权值与上次权值的平方和距离除以所有的权值数目,这个指标反映了收敛性。然后多算几次,以避免局部收敛,保留验证集误差平方和最小的权值作为最终的权值。


4.【讨论】神经元数量的选择问题
神经元数量的选择有很多经验法则,但都没有理论的依据,有时好用有时好用。建议采用开篇介绍的岭回归方法,选择较多的神经元数目。有的朋友可能担心,一般神经元数目都是宁缺勿滥,这样行吗?即使选择了过多的数目,通过选择惩罚系数c,它会使过多的权值收缩到0。问题是如何选择惩罚系数,方法是根据交叉验证法选择在验证集预测误差平方和最小的惩罚系数。


5.【求助】用遗传算法优化神经网络
遗传算法是一个通用的优化算法,通常是在面对一个复杂的问题,没有特定的高效的优化算法可用的时候才用它。神经网络本来就慢,再用遗传算法更是慢上加慢。采用岭回归办法,遗传算法根本没有必要。遗传算法并不是化腐朽为神奇的万能灵药。技术的使用效果不取决于技术的高级程度和复杂程度,而取决于各种技术和问题的针对性和紧密性。


6.【讨论】如何解决泛化问题
因为模型参数是根据训练集估计的,泛化能力是估计模型在训练集以外的样本的预测能力。只要选择足够复杂的结构,神经网络可以任意地降低训练误差,但泛化能力很差。泛化能力的解决关键在于选择合适的模型评价函数,合适的模型评价函数能够反映模型偏差和方差的折衷。常用的R square 拟合优度不是一个好的评价函数,更好的是
AIC=-2log(L(x,β^))+2d
BIC=-2log(L(x,β^))+dlogN
其中log(L(x,β^))是对数似然密度,d是有效参数个数,N为训练样本数
对于神经网络,有效参数个数为
d=sum ai/(ai+c)
其中ai是Hessian矩阵(误差平方和目标函数对参数二次导数)的特征值。
另一个办法就是交叉验证,前文已经讨论,不再重复。交叉验证适用于有效参数难以定义的模型,虽然需要更多的计算量,但比较稳健。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值