一文弄清-BP的过拟合与validationCheck

本站原创文章,转载请说明来自《老饼讲解-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神经网络的过拟合

1.1 BP神经网络与过拟合


我们训练BP神经网络主要用于拟合数据,
但是往往出现以下的情况 

一文弄清-BP的过拟合与validationCheck_第1张图片


上面第二种情况就称为过拟合
可以看到,第二种情况比第一种情况在数据点上拟合得更好
但第二种情况为了强行拟合训练数据,
导致曲线非常跌宕,已经偏离了我们想要的形态
总的来说
过拟合时,模型虽然在训练数据上拟合得更好,
但拟合出的曲线已经偏离了我们想要的形态
过拟合会导致数据在预测上效果非常差


二、 BP神经网络的validationCheck     

本节介绍BP神经网络的validationCheck是什么
并展示与validationCheck相关的设置

2.1 什么是BP神经网络的validationCheck


    我们知道,当过拟合时,未经训练的数据预测效果会较差
为了避免过拟合,matlab会把训练数据预留一部分验证数据
在训练时,会用这部分数据不断测试BP神经网络的预测能力
这个过程就是validationCheck(验证数据检验)

一文弄清-BP的过拟合与validationCheck_第2张图片


如上图所示,本来已经训练得差不多了,
如果再强行不顾一切拟合训练数据,而使曲线非常跌宕时,
未训练的数据就会预测得非常不准确
因此,加入validationCheck
如果检测到训练数据的效果越来越好
而验证数据的效果越来越差,则说明模型正在走向过拟合   
这时再把训练数据训练得更精准,也没有太大意义
当验证数据连续N次变得更差时,模型就会停止训练


2.2 BP神经网络-validationCheck的相关设置


与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的完整建模流程》

你可能感兴趣的:(机器学习,matlab,深度学习)