关于机器学习的基本查询
Posted
技术标签:
【中文标题】关于机器学习的基本查询【英文标题】:Basic queries regarding Machine Learning 【发布时间】:2018-02-07 15:52:11 【问题描述】:我正在研究卷积神经网络并将其与其他方法进行比较,例如 HoG。
用这两种方法完成二进制分类后,我得到了这些数字:
HoG 方法:
训练准确率:83% 测试准确率:62%
CNN 方法: 训练准确率:100% 验证准确率:91% 测试准确率:85%
我的问题是,这些方法在训练中是否过度拟合?
【问题讨论】:
根据需求而不是结果建议算法会更好吗? 对不起,你是什么意思?我暂时不建议。我的问题是关于过度拟合 我投票结束这个问题,因为它与编程无关。 【参考方案1】:这两种方法都显示过拟合,您实际上无法完全避免这种情况。关键是把它降到最低。我对 HoG 不是很熟悉,但对于 CNN,有几种常见的方法可以最大限度地减少过度拟合,例如 dropout、批量归一化、提前停止和交叉验证。当然还有好的数据,这意味着要训练的大量数据尽可能多样化。
在训练时期可视化训练进度也总是一个好主意:训练和测试的准确性在各自的损失函数旁边。开始时两者的损失都会变小,但最终测试损失会增加。这就是你应该停止训练的地方,因为所有进一步的努力只会导致更好的训练准确性。形象地说,CNN 是背诵训练样本。训练样本的 100% 准确率表明您的案例中发生了这种情况。
【讨论】:
我从你的回答中了解到,训练和测试的准确率应该是一样的? 不,我不是这个意思。但是,您可以尝试使用上述技术将它们的差异最小化。 是的,我已经尝试过 dropout,训练和测试之间的差异约为 12%。是否有类似差距不应该超过 15-20% 之类的东西? 好吧,最后,重要的是您的模型在看不见的数据(即测试数据)上的表现如何。没有一般规则,训练和测试准确度之间的差异应该有多大。然而,一个很大的差异暗示过拟合。这可能很糟糕,因为模型对每个训练样本的独特特征的权重比实际分离类的更一般的特征更多,因此对测试数据进行了错误分类。如果您的模型对于您手头的训练数据量来说过于复杂,则可能会发生这种情况。因此,您可以尝试不太复杂的模型。 请注意,如果没有关于您的问题的任何信息,很难给出具体的建议。只需尝试不同的模型和参数,考虑随着时间的推移降低学习率,看看训练统计数据,如果可能的话尝试增加样本数量。感受一下 CNN,体验一下当你这样做或那样做时它们的反应。【参考方案2】:两个模型都显示过拟合(训练和测试准确度之间存在巨大差距)。现在有无数种过度拟合的策略。你应该先尝试一下。我还建议您在使用前充分洗牌数据集,因为有时相似的图像可能会进入训练集并阻止模型很好地泛化。换句话说,训练图像会比测试图像“更容易”。
【讨论】:
以上是关于关于机器学习的基本查询的主要内容,如果未能解决你的问题,请参考以下文章