本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
BP神经网络的训练经常会遇到过拟合的情况,导致模型在训练效果上很好但预测效果差
正因如此,matlab工具箱引入validation Check来防止BP神经网络走向过拟合
本文介绍过拟合是什么,并讲解validation Check是如何防止BP神经网络走向过拟合的
本节简单讲解什么是BP神经网络的过拟合
BP神经网络与过拟合
我们训练BP神经网络主要用于拟合数据,但是往往出现以下的情况
上面第二种情况就称为过拟合
可以看到,第二种情况比第一种情况在数据点上拟合得更好
但第二种情况为了强行拟合训练数据,导致曲线非常跌宕,已经偏离了我们想要的形态
总的来说,过拟合时,模型虽然在训练数据上拟合得更好,
但拟合出的曲线已经偏离了我们想要的形态过拟合会导致数据在预测上效果非常差
本节介绍BP神经网络的validationCheck是什么,并展示与validationCheck相关的设置
什么是BP神经网络的validation Check
在matlab工具箱中,使用了早停法来预防BP神经网络过拟合,如下
由于过拟合时,未经训练的数据预测效果会较差,因此把训练数据预留一部分验证数据
在训练时,会用这部分验证数据不断测试BP神经网络的预测能力
这个过程就是validation Check(验证数据检验)
如上图所示,本来已经训练得差不多了
如果不顾一切继续强行拟合训练数据,很可能会令曲线变得非常跌宕
此时,未训练的数据就会预测得非常不准确,即模型过拟合了
因此,加入了validation Check,
如果检测到训练数据的效果越来越好,而验证数据的效果越来越差,
则说明模型正在走向过拟合,这时再把训练数据训练得更精准,也没有太大意义
当验证数据连续N次变得更差时,模型就会停止训练,这就是validation Check
BP神经网络-validation Check的相关设置
与validation相关的设置有
👉1. 验证数据的划分
👉2. validation Check的步数
关于验证数据的划分
验证数据的划分由以下参数设置
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神经网络训练中validation Check的全部内容了~
End