首页IT科技如何进行模型验证(模型调优:验证集的作用(就是为了调整超参数))

如何进行模型验证(模型调优:验证集的作用(就是为了调整超参数))

时间2025-07-29 03:24:51分类IT科技浏览6412
导读:一、总结 一句话总结:验证集的作用就是为了调整超参数...

一                、总结

一句话总结:验证集的作用就是为了调整超参数

1                    、超参数?

【超参数的值不是学习出来的】:大多数机器学习算法都有超参数                ,可以设置来控制算法行为             。超参数的值不是通过学习算法本身学习出来的                        。

【超参数如果学习太难优化】:有时一个选项被设为学习算法不用学习的超参数                    ,是因为它太难优化了       。更多的情况是该选项必须是超参数        ,是因为它不适合在训练集上学习         。

【超参数是我们自己设定的】:这适用于控制模型容量的所有超参数                       。如果在训练集上学习超参数            ,这些超参数总是趋向于最大可能的模型容量                    ,导致过拟合           。

2        、如何解决超参数设置的问题?

【验证集样本】:为了解决解决超参数设置的问题           ,我们需要一个训练算法观测不到的验证集样本      。

3            、测试集不能帮助改善超参数?

【测试样本不能以任何形式参与到模型的选择之中        ,包括超参数的设定】:测试集可以用来估计学习过程完成之后的学习器的泛化误差                     ,其重点在于测试样本不能以任何形式参与到模型的选择之中              ,包括超参数的设定    ,基于这个原因                      ,测试集中的样本不能用于验证集                      。

【验证集帮助改善超参数】:因此                 ,我们总是从训练数据中构建验证集               。用于估计训练中或训练后的泛化误差,更新超参数   。

4                    、模型超参数一般有哪些?

例如学习速率和特征等等

5           、验证集是验证还是训练?

训练集用于训练模型的参数                   ,验证集用于训练模型的超参数                     。不同超参数(hyper-parameter)组合                    ,就对应着不同的潜在模型                   。验证集上跑的    ,实际上是一个模型集合                ,验证集的存在                    ,就是为了从这一堆可能的模型中        ,找出表现最好的那个。

6        、超参数重要性?

超参数包括训练轮数            ,学习速率等等                 。如果一个模型                    ,训练数据比别人多得多           ,效果就会很好(参数训练的很到位)        ,但是模型的架构(超参数设定)未必比别人好                       。

7                     、为什么不能在训练集上训练超参数?

好比训练轮数(epochs)                     ,在同样的训练集上              ,训练3轮和训练10轮    ,结果肯定是不一样的模型   。它们的参数并不相同             。那么到底是训练3轮好                      ,还是10轮好?或者二者都不好                 ,应该训练6轮?这种决策,只能在训练后                   ,在验证集上见分晓                        。一般训练几个 epoch 就跑一次验证看看效果                    ,如果发现训练3轮效果更好    ,那么就应该丢弃掉训练6轮              、10轮的潜在模型                ,只用训练3轮的结果       。

再好比网络层数                    ,在训练集上训练的时候肯定是层数越多        ,拟合效果越好         。如果你这样选出你的模型            ,在验证集上的效果肯定是差很多                    ,这就是过拟合啦                       。所以必须从训练样本中取出一部分样本           ,即验证集        ,让模型训练的过程看不到这些样本                     ,然后评估模型在这一部分样本中的表现              ,最终选出合适的网络层数           。

其他的超参数选取    ,你也可以举一反三      。总之就是按照验证集的效果                      ,来选超参数                 ,从而决定最终模型                      。

总结一下:在验证集上相当于手动调参(在训练集上是通过误差逆传播自动调参) 

下一步,把模型交给测试集去检验               。测试集应该既不同于训练集                   ,又不同于验证集   。至于这个最终选择模型                    ,在测试集上表现如何    ,没人能打包票                     。就像你模拟考试考得很好了                ,高考也可能翻车                   。

怎样划分验证集

怎么设定验证集                    ,划分多少数据做验证        ,其实是每个研究者需要独立作出的决策            ,不应该强行设定为一致。

10折交叉验证(10-fold Cross Validation)

选择固定训练集和测试集可能会出现划分偏差

因此将数据集随机分成10份                    ,使用其中9份进行训练而将另外1份用作测试                 。该过程可以重复10次           ,每次使用的测试数据不同                       。

好处一是随即划分减小误差        ,二是每次采用90%的训练数据而不是2折交叉验证中仅仅50%的数据   。

二    、超参数和验证集

大多数机器学习算法都有超参数                     ,可以设置来控制算法行为             。超参数的值不是通过学习算法本身学习出来的                        。

有时一个选项被设为学习算法不用学习的超参数              ,是因为它太难优化了       。更多的情况是该选项必须是超参数    ,是因为它不适合在训练集上学习         。这适用于控制模型容量的所有超参数                       。如果在训练集上学习超参数                      ,这些超参数总是趋向于最大可能的模型容量                 ,导致过拟合           。

为了解决这个问题,我们需要一个训练算法观测不到的验证集样本      。

测试集可以用来估计学习过程完成之后的学习器的泛化误差                   ,其重点在于测试样本不能以任何形式参与到模型的选择之中                    ,包括超参数的设定    ,基于这个原因                ,测试集中的样本不能用于验证集                      。因此                    ,我们总是从训练数据中构建验证集               。特别地        ,我们将训练数据分成两个不相交的子集   。其中一个用于学习参数                     。另一个作为验证集            ,用于估计训练中或训练后的泛化误差                    ,更新超参数                   。用于学习参数的数据子集通常仍被称为训练集           ,尽管这会和整个训练过程用到的数据集相混。用于挑选超参数的数据子集被称为验证集                 。

使用测试集和训练集来推动模型开发迭代的流程                       。在每次迭代时        ,我们都会对训练诗句进行训练并评估测试数据                     ,兵以基于测试数据的评估结果为指导来选择和更改各种模型超参数              ,例如学习速率和特征    ,这种方法是否存在问题?

存在                      ,我们基于给定测试集执行评估的次数越多                 ,不知不觉的过拟合该测试集的风险就越高   。

将数据集划分为三个自己可以大幅度降低过拟合的发生几率             。

该工作流程之所以更好,是因为它暴露给测试集的信息更少                        。

不断使用测试集和验证集会使其逐渐失去效果       。也就是说                   ,您使用相同数据来决定超参数设置或其他模型改进的次数越多                    ,您对于这些结果能够真正泛化到未见过的新数据的信心就越低         。请注意    ,验证集的失效速度通常比测试集缓慢                       。

如果可能的话                ,建议您收集更多数据来刷新             ”测试集和验证集           。重新开始是一种很好的重置方式      。

验证集真正作用 - 范仁义 - 博客园

验证集到底有什么作用_anyanyanyway的博客-CSDN博客_验证集的作用

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
如何提升网站的自然排名(帮助您实现更高的搜索排名) macos使用技巧(苹果系统Mac OS X 10.10 Yosemite 使用技巧汇总)