评估方法提高深度学习模型泛化能力

三种经典的评估方法提高模型泛化能力

①留出验证:评估模型时,将数据划分为训练集、验证集、测试集。(比较适合大数据集)

在训练数据上训练模型,在验证数据上评估模型,最后在测试数据上测试最佳参数的模型。

划分为三个集合而非两个集合:训练集和测试集,是因为在模型设计时一般需要调节模型超参数,比如隐藏层数、每层神经元数等等,在这个调节学习的过程中会以验证集的性能作为反馈;

每次通过验证集调节模型的超参数,模型都会学习到验证集的信息,久而久之模型在验证集上的性能会非常好,但我们需要的是模型对全新未知数据上的性能,此时测试集就是我们所需要的。

②k折验证:将训练数据划分为大小相同的k个分区。(适合小数据集)

对于每个分区i,在其余的k-1个分区上训练模型,然后在分区i上评估模型,最终分数等于k个分区分数的平均值。

③带有打乱节奏的重复k折验证。(可用数据集很少)

执行p次k折验证,每次进行k折验证前将数据打乱,最终分数取p次k折验证的平均值。

需要注意的是,这种方法需要训练和评估pk次模型,计算量很大,只适合可用数据较少的情况。

防止过拟合:

①最简单的方法就是减小模型规格,即减小模型学习的参数个数(由层数与每层神经元数决定)。在验证集上评估,找到最佳的模型规格。

②添加权重正则化,即让模型权重只取较小的值,从而限制模型的复杂度。常见的有L1正则化、L2正则化。

③添加dropout正则化,对某一层使用dropout即在训练过程中随机将该层的一些输出特征舍弃(置0),dropout比率是被设为0的特征所占比例,通常在0.2~0.5之间。

    原文作者:逍遥的狐狸
    原文地址: https://blog.csdn.net/qq_41430572/article/details/89055438
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞