除了单热编码外,如何在机器学习中定义标签

how to define labels at machine learning excepts one-hot-encoding

我想制作可以 class 化属性而不是 class 的模型。

比如我输入这张图片的时候

我的模型输出'这件家具有[棕色,4条腿,面料sheet]'

我使用了预训练的 ResNet,但效果不佳。
所以我尝试制作新模型,但无法定义标签值

我认为one-hot-encoding无法达到我的目的。

我该如何实施?
给我一些想法..

你说得对可能不适用于单热编码,让我们看看你有哪些选择。

选项 1:仍然是一种热编码

如果你希望你的模型只输出有限数量的属性,并且它们不重叠,你可以有 k 个单热编码输出层。

例如,如果您具有 color# of legsmaterial 属性,则这些属性永远不会重叠。然后,您可以让模型为每个输入图像预测颜色、腿数和 material。这些可以使用 3 个单热编码向量来表示和学习。

优点:

  • 通常更容易训练
  • 不会有冲突的预测

缺点:

  • 需要分离class

选项 2:不使用 softmax、sigmoid FTW

如果您使用 sigmoidal 激活而不是 softmax(这是我假设您正在使用的),则每个输出节点都独立于其他输出节点。这样,每个输出都会给出自己的概率可能性。

在这种情况下,您的标签将不会被单热编码,而是一个二进制向量,具有可变数量的 1s 和 0s。

您很可能想取一个阈值概率,而不是寻找最大概率,即在评估时将所有概率 >80% 的输出作为预测标签。

优点:

  • 不需要手动分离属性(因为我们将每个 class 视为彼此独立)
  • 可变数量属性的简单表示

缺点:

  • 从数学上和经验上看,这往往更难训练
  • 有可能(坦率地说,很有可能)您会得到相互冲突的预测,即 4 legs3 legs 都可能来自您的神经网络。您将需要处理这些情况。

这实际上归结为一种偏好,并且取决于您使用的数据类型。如果您可以选择属性的方式,您可以清楚地分离神经网络的选项以供选择,例如 colormaterial(假设您不能有两种颜色或两个 materials ),第一个选项可能是最好的。

有几种其他方法可以解决这个问题,但这些方法似乎最适用。