【问题标题】:How to add a new class to an existing classifier in deep learning?如何在深度学习中向现有分类器添加新类?
【发布时间】:2020-04-01 19:49:28
【问题描述】:

我训练了一个深度学习模型,将给定的图像分为三类。现在我想在我的模型中再添加一个类。我试图查看“在线学习”,但它似乎是针对现有课程的新数据进行训练。我是否需要在所有四个课程上再次训练我的整个模型,或者有什么方法可以让我在新课程上训练我的模型?

【问题讨论】:

    标签: python keras deep-learning multiclass-classification online-machine-learning


    【解决方案1】:

    您可能在架构末端的 3 个神经元密集层之后使用了 softmax 来分类为 3 个类别。添加一个类将导致在 4 个神经元密集层上进行 softmax,因此无法在当前图中使用冻结权重来容纳额外的神经元,基本上你正在修改图,因此你必须训练整个从头开始建模

    -----或-----

    一种方法是加载模型并移除最后一层,将其更改为 4 个神经元并再次训练网络!这基本上会从头开始训练最后一层的权重。我认为在添加新类时无论如何都不能保持这些(最后一层的权重)权重不变。

    【讨论】:

    • 现在我了解了如何更新网络以对新类进行分类...我认为我可以使用迁移学习,而不是从头开始训练我的模型(随机权重初始化)。谢谢你们的cmets。
    • 是的,您可以初始化最后一层的权重,保持前一层的权重不变。干杯!
    【解决方案2】:

    您必须移除最终的全连接层,冻结特征提取层中的权重,添加具有四个输出的新全连接层,并使用原始三类和新的第四类图像重新训练模型。

    【讨论】:

    • 嘿!在我的上一个模型中,有 13 个类。我需要在其中再添加 4 个类。我使用迁移学习来做到这一点。但现在我在模型中只有 4 个类。我不知道我哪里出错了。你能告诉我发生了什么吗?
    【解决方案3】:

    我尝试查看“在线学习”,但它似乎是针对现有课程的新数据进行训练。

    在线学习是一个术语,用于指代在训练时采用连续或顺序输入数据流的模型,与离线学习(也称为批处理学习),其中模型是在静态预定义数据集上进行预训练的。

    持续学习(也称为增量、持续、终身学习)是指在线学习环境中工作的 ML 的一个分支,其中模型旨在学习新任务,同时保持历史任务的性能。它可以应用于多种问题范式(包括类增量学习,其中每个新任务为不断扩展的超分类问题呈现新的类标签)。

    我是否需要在所有四个课程上再次训练我的整个模型,或者有什么方法可以让我在新课程上训练我的模型?

    在更新的数据集上天真地重新训练模型确实是一种解决方案。 Continual learning 旨在解决无法访问历史数据(即原始 3 类)或在越来越大的数据集上重新训练不切实际的情况(出于效率、空间、隐私等问题)。已经提出了多个使用不同底层架构的此类模型,但几乎所有示例都专门处理图像分类问题。


    相关问题:

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2017-05-20
      • 2021-06-17
      • 2020-07-02
      • 2020-03-18
      • 2019-06-30
      • 2016-03-19
      • 1970-01-01
      • 2016-08-21
      相关资源
      最近更新 更多