本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com
BP神经网络的训练经常会遇到过拟合的情况,导致模型在训练效果上很好但预测效果差
正因如此,matlab工具箱引入validationCheck来防止BP神经网络走向过拟合
本文介绍过拟合是什么,并讲解validationCheck是如何防止BP神经网络走向过拟合的
目录
一、BP神经网络的过拟合
1.1 BP神经网络与过拟合
二、 BP神经网络的validationCheck
2.1 什么是BP神经网络的validationCheck
2.2 BP神经网络-validationCheck的相关设置
本节简单讲解什么是BP神经网络的过拟合
我们训练BP神经网络主要用于拟合数据,
但是往往出现以下的情况
上面第二种情况就称为过拟合
可以看到,第二种情况比第一种情况在数据点上拟合得更好
但第二种情况为了强行拟合训练数据,
导致曲线非常跌宕,已经偏离了我们想要的形态
总的来说
过拟合时,模型虽然在训练数据上拟合得更好,
但拟合出的曲线已经偏离了我们想要的形态
过拟合会导致数据在预测上效果非常差
本节介绍BP神经网络的validationCheck是什么
并展示与validationCheck相关的设置
我们知道,当过拟合时,未经训练的数据预测效果会较差
为了避免过拟合,matlab会把训练数据预留一部分验证数据
在训练时,会用这部分数据不断测试BP神经网络的预测能力
这个过程就是validationCheck(验证数据检验)
如上图所示,本来已经训练得差不多了,
如果再强行不顾一切拟合训练数据,而使曲线非常跌宕时,
未训练的数据就会预测得非常不准确
因此,加入validationCheck
如果检测到训练数据的效果越来越好
而验证数据的效果越来越差,则说明模型正在走向过拟合
这时再把训练数据训练得更精准,也没有太大意义
当验证数据连续N次变得更差时,模型就会停止训练
与validation相关的设置有
1. 验证数据的划分
2. validationCheck的步数关于验证数据的划分
验证数据的划分由以下参数设置net.divideParam.trainRatio = 0.7; % 用于训练的数据比例 net.divideParam.valRatio = 0.15 ; % 用于验证过拟合的数据比例 net.divideParam.testRatio = 0.15; % 用于比例
以上就是matlab工具箱的默认配置,
它代表用15%的数据作为验证数据,
我们可以调整net.divideParam.valRatio参数来控制验证数据的划分占比
但是,修改后别忘了把trainRatio和testRatio也修改一下,使三者的总和为1
validationCheck的步数设置
validationCheck的步数由以下参数设置net.trainparam.max_fail = 6; % 过拟合验证失败次数
以上就是matlab工具箱的默认配置,
它代表用失败6次就终止训练
相关文章
《BP神经网络梯度推导》
《BP神经网络提取的数学表达式》
《一个BP的完整建模流程》