损失与准确性之间的关系

AKS*_*HAN 7 machine-learning neural-network deep-learning conv-neural-network keras

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

在此输入图像描述

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

谢谢!

Mar*_*jko 11

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

  1. 异常值:假设你有10个完全相同的图像,其中9个属于A类,1个属于B类.在这种情况下,由于大多数示例,模型将开始为此示例分配A类的高概率.但是 - 来自异常值的信号可能会破坏模型的稳定性并降低准确性.从理论上讲,模型应该稳定在90%的分数给A,但它可能会持续很多时代.

    解决方案:为了处理这些示例,我建议您使用渐变剪辑(您可以在优化器中添加此选项).如果您想检查是否发生这种现象 - 您可以检查您的损失分布(从训练集中丢失个别示例)并查找异常值.

  2. 偏见:现在想象你有10个完全相同的图像,但其中5个分配了A类和5个B类.在这种情况下,模型将尝试在这两个类上分配大约50%-50%的分布.现在 - 你的模型在这里可以达到最多50%的准确度 - 选择两个有效的一个类.

    解决方案:尝试增加模型容量 - 通常你有一组非常相似的图像 - 增加表达能力可能有助于区分类似的例子.但要注意过度拟合.另一种解决方案是在培训中尝试这种策略.如果要检查是否发生这种现象 - 请检查各个示例的损失分布.如果分布偏向更高的价值 - 你可能会遭受偏见.

  3. 类失衡:现在想象你的90%的图像都属于A类.在训练的早期阶段,您的模型主要集中在为几乎所有示例分配此类.这可能会使个人损失达到非常高的价值,并通过使预测分布更不稳定来破坏您的模型.

    解决方案:再一次 - 渐变剪裁.第二件事 - 耐心,试着让你的模型更多的时代.模型应该在进一步的培训阶段学到更多细微之处.当然 - 尝试课堂平衡 - 通过分配sample_weightsclass_weights.如果您想检查是否发生这种现象 - 请检查您的班级分布.

  4. 过于强烈的正规化:如果你将正则化设置得过于严格 - 训练过程主要集中在使你的权重比实际学习有趣的见解更小的规范.

    解决方案:添加一个categorical_crossentropy指标,并观察它是否也在减少.如果不是 - 那么这意味着你的正则化过于严格 - 试着分配更少的权重惩罚.

  5. 糟糕的模型设计 - 这种行为可能是由错误的模型设计引起的.为了改进您的模型,有一些可能适用的良好实践:

    批量标准化 - 由于这种技术,您可以防止您的模型彻底改变内部网络激活.这使得培训更加稳定和高效.如果批量较小,这也可能是规范模型的真正方法.

    渐变剪裁 - 这使您的模型训练更加稳定和高效.

    减少瓶颈效应 - 阅读这篇精彩的论文并检查您的模型是否可能遇到瓶颈问题.

    添加辅助分类器 - 如果您从头开始训练您的网络 - 这应该使您的功能更有意义,您的培训 - 更快,更高效.