损失与准确性之间的关系

问题描述 投票:6回答:3

在训练CNN模型时,在每个时代实际上是否有可能减少损失和降低准确度?我在训练时得到以下结果。

enter image description here

有人可以解释为什么会发生这种情况的可能原因吗?

谢谢!

machine-learning neural-network deep-learning keras conv-neural-network
3个回答
10
投票

至少有5个可能导致此类行为的原因:

  1. 异常值:假设您有10个完全相同的图像,其中9个属于A类,1个属于B类。在这种情况下,由于大多数情况,模型将开始为此示例分配A类的高概率例子。但是 - 来自异常值的信号可能会破坏模型的稳定性并降低准确性。从理论上讲,模型应该稳定在90%的分数给A级,但它可能会持续很多时代。 解决方案:为了处理这些示例,我建议您使用渐变剪辑(您可以在优化器中添加此选项)。如果您想检查是否发生这种现象 - 您可以检查您的损失分布(从训练集中丢失个别示例)并查找异常值。
  2. 偏见:现在假设您有10个完全相同的图像,但其中5个已分配A类和5个B类。在这种情况下,模型将尝试在这两个类上分配大约50%-50%的分布。现在 - 你的模型在这里可以达到最多50%的准确度 - 选择两个有效的一个类。 解决方案:尝试增加模型容量 - 通常你有一组非常相似的图像 - 增加表达能力可能有助于区分类似的例子。但要注意过度拟合。另一种解决方案是在训练中尝试this策略。如果要检查是否发生这种现象 - 请检查各个示例的损失分布。如果分布偏向更高的价值 - 你可能会遭受偏见。
  3. 类失衡:现在假设你的90%的图像属于A类。在训练的早期阶段,你的模型主要集中在将这个类分配给几乎所有的例子。这可能会使个人损失达到非常高的价值,并通过使预测分布更不稳定来破坏您的模型。 解决方案:再一次 - 渐变剪裁。第二件事 - 耐心,试着让你的模型更多的时代。模型应该在进一步的培训阶段学到更多细微之处。当然 - 尝试平衡 - 通过分配sample_weightsclass_weights。如果您想检查是否发生这种现象 - 请检查您的班级分布。
  4. 过于强烈的正规化:如果你将正则化设置得过于严格 - 训练过程主要集中在使你的权重比实际学习有趣的见解更小的规范。 解决方案:添加categorical_crossentropy作为指标,并观察它是否也在减少。如果不是 - 那么这意味着你的正则化太严格了 - 试着分配更少的权重惩罚。
  5. 糟糕的模型设计 - 这种行为可能是由错误的模型设计引起的。为了改进您的模型,有一些可能适用的良好实践: 批量标准化 - 由于这种技术,您可以防止您的模型彻底改变内部网络激活。这使得培训更加稳定和高效。如果批量较小,这也可能是规范模型的真正方法。 渐变剪裁 - 这使您的模型训练更加稳定和高效。 减少瓶颈效应 - 阅读this精彩纸张并检查您的模型是否可能遇到瓶颈问题。 添加辅助分类器 - 如果您从头开始训练您的网络 - 这应该使您的功能更有意义,您的培训 - 更快,更高效。

2
投票

有可能在降低精度的同时降低损失,但它远未被称为良好的模型。在每个模型的conv层使用Batch规范化可以解决这个问题。


2
投票

是的,这是可能的。

为了提供可能发生这种情况的直观示例,假设您的分类器输出的类A和B的概率大致相同,而A类的总体密度最高。在此设置中,最小化更改模型的参数可能会将B转换为最可能的类。这种效应会使cross-entropy loss的变化最小,因为它直接取决于概率分布,但是准确性会明显注意到变化,因为它取决于输出概率分布的argmax。

作为结论,最小化交叉熵损失并不总是意味着提高准确度,主要是因为交叉熵是平滑函数,而精度是非平滑的。

© www.soinside.com 2019 - 2024. All rights reserved.