神经网络的训练--批量梯度下降 VS. 随机梯度下降

最近在用java写神经网络,碰到训练的问题,就是神经网络的训练,到底该用批量梯度下降的好,还是用随机梯度下降好?

查看weka的源码可知,它里面使用的是随机梯度下降,但是Andrew的机器学习课程里面用的是批量梯度下降。

经过用不同数据进行测试,总算搞明白了。

1   批量梯度下降的作用是使整体拟合最优,使cost减小,但是非常容易陷入某个局部最小。而神经网络的优点就在于能发现局部最小值,这将导致使用批量下降方法遏制了它的优点。所以采用随机梯度下降更能容易发现局部极值,对于多极值问题更好。

2 但是训练中又有一个问题,就是采用随机梯度下降,网络会遗忘掉早先训练的数据,特别是当因变量为数值型且范围非常大时,网络对于最近训练的数据效果很好,但是拿之前的训练数据进行测试时,误差很大!


所以我决定将两者结合,将批量梯度下降和随机梯度下降结合起来。随机梯度下降训练完所有数据之后进行多次批量梯度下降,效果不错!可以同时去找局部极值和整体极值。

不过不知道为什么效果比weka的神经网络仍然是差一点(主要是weka里面进行了多次的CV,而且数据的预处理做得很好),但是对于多层神经网络我这个效果就比weka好很多。

当然自己重写神经网络,最重要的是通过增量式训练方式,可以实现在线学习,对于新数据只需要进行一次训练即可,而不需重新训练所有数据,当然,也可以重新采样少量旧数据进行重新训练。好处就是神经网络可以随时间不断调整自身性能,而遗忘旧数据,对于一些随时间变化的数据应用起来方便!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值