【神经网络】学习笔记十五

您所在的位置:网站首页 测试验证过程是什么 【神经网络】学习笔记十五

【神经网络】学习笔记十五

2024-07-12 04:32| 来源: 网络整理| 查看: 265

以前一直知道神经网络划分数据集时要分为训练集,测试集和验证集,但不知道并且一般以6:2:2的比例划分,到头来不知道这三者各是啥,以及他们的作用是什么。本片文档解释一下三者的作用。

重点在于验证集和测试集的区别以及用处。

1. 三者的功能简述

在机器学习中,我们的模型一般包括以下几点:

(1)模型设计;

(2)模型架构(模型多少层,每层神经元个数);

(3)神经元内置参数;

(4)模型训练的参数:超参数(模型外置参数,如学习率,优化函数等);

简单来说,训练集的作用是得出神经元内置参数,验证集作用是得出外置参数即超参数。

训练集——用于模型拟合的数据样本。在训练过程中对训练误差进行梯度下降,进行学习,可全脸神经元内置的权重参数;

验证集——模型训练过程单独流出来的样本集,用于调整模型的超参数和对模型能力进行初步评估。

验证集用在训练的过程中,一般在训练时,几个epoch结束后就跑一次验证集看看啥效果(检验太频繁会影响训练速度,所以不宜过频繁,比如总共跑1000遍,那你就每100个epoch检验一遍验证集)。这样做的第一个好处是,及时发现模型或者参数的问题,比如模型在验证集上发散,或者结果很奇怪(出现无穷大),准确率不增长或者增长很慢等情况。此时可以及时停止训练,重新调整模型,而不用等到训练结束才调整。第二个好处是验证模型的泛化能力,如果在验证集上效果比训练集上差很多,考虑模型是否过拟合了(过拟合可以通过早停等方式解决)。同时,还可以通过验证集来对比不同的模型(哪个收敛快哪个准确率更高)。在一般的神经网络中,我们利用验证数据集去寻找最优的网络深度,反向传播算法的停止点或者网络中隐藏层神经元的数量等超参数。

测试集——用来评估模型最终的泛化能力。只用来评估模型好坏,不用来作为调参、特征选择等算法相关的选择依据。

类别验证集测试集是否被训练到否否作用用于调超参数,找出一个较好的网络结构为了验证模型的泛化功能使用次数多次使用,以不断调参仅仅一次使用,用来检验缺陷模型在一次重新手动调参并继续训练后得到在验证集上更好的表现,但此时验证集只是非训练数据的一部分,模型的泛化性能依然不够测试集为了保证泛化代表性,数据量一般较大,测试一轮往往很久,所以一般取测试集的其中一小部分作为训练过程中的验证集互相转化验证集具有足够泛化性时(比如验证集很大,已经能包括大部分非训练集),测试集不需要存在了验证集有足够泛化性时,测试集不必存在

补充:

(1)验证集是一定需要的,因为要在训练过程中调参和及时判断网络情况;

(2)针对调参的选择是看网络在验证集上的效果来调参的,验证集参与人工调参过程;

(3)注意训练集,验证集和测试集应该服从同一数据分布,这样才能调参;

(4)测试集的存在是为了验证我们通过训练集和验证集进行训练,调参后所得到的模型是否具有泛化性,检验模型的好坏。此外,如果验证集已经足够代表泛化性,测试集不需要存在,但验证集一定需要存在。

2. 验证集具体使用

每几个epoch后,跑一遍验证集,看看在验证集上模型目前的分类精度。如果分类精度达到饱和,要及时停止训练,这叫早停,是防止过拟合的一种方式。利用验证集来选择最优超参数是一个普遍的策略,那么为什么用验证集不用测试集呢?

因为如果用测试集,训练所得结果就是或许适合测试集具体特征的超参数,网络性能不一定能推广到其他数据集,模型不一定具有泛化性。用验证集就能很好的解决这个问题,这种寻找最优超参数的方法称为分离法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3