除了单热编码外,如何在机器学习中定义标签
how to define labels at machine learning excepts one-hot-encoding
我想制作可以 class 化属性而不是 class 的模型。
比如我输入这张图片的时候
我的模型输出'这件家具有[棕色,4条腿,面料sheet]'
我使用了预训练的 ResNet,但效果不佳。
所以我尝试制作新模型,但无法定义标签值
我认为one-hot-encoding无法达到我的目的。
我该如何实施?
给我一些想法..
你说得对可能不适用于单热编码,让我们看看你有哪些选择。
选项 1:仍然是一种热编码
如果你希望你的模型只输出有限数量的属性,并且它们不重叠,你可以有 k 个单热编码输出层。
例如,如果您具有 color
、# of legs
、material
属性,则这些属性永远不会重叠。然后,您可以让模型为每个输入图像预测颜色、腿数和 material。这些可以使用 3 个单热编码向量来表示和学习。
优点:
- 通常更容易训练
- 不会有冲突的预测
缺点:
- 需要分离class
选项 2:不使用 softmax、sigmoid FTW
如果您使用 sigmoidal 激活而不是 softmax(这是我假设您正在使用的),则每个输出节点都独立于其他输出节点。这样,每个输出都会给出自己的概率可能性。
在这种情况下,您的标签将不会被单热编码,而是一个二进制向量,具有可变数量的 1
s 和 0
s。
您很可能想取一个阈值概率,而不是寻找最大概率,即在评估时将所有概率 >80% 的输出作为预测标签。
优点:
- 不需要手动分离属性(因为我们将每个 class 视为彼此独立)
- 可变数量属性的简单表示
缺点:
- 从数学上和经验上看,这往往更难训练
- 有可能(坦率地说,很有可能)您会得到相互冲突的预测,即
4 legs
和 3 legs
都可能来自您的神经网络。您将需要处理这些情况。
这实际上归结为一种偏好,并且取决于您使用的数据类型。如果您可以选择属性的方式,您可以清楚地分离神经网络的选项以供选择,例如 color
和 material
(假设您不能有两种颜色或两个 materials ),第一个选项可能是最好的。
有几种其他方法可以解决这个问题,但这些方法似乎最适用。
我想制作可以 class 化属性而不是 class 的模型。
比如我输入这张图片的时候
我的模型输出'这件家具有[棕色,4条腿,面料sheet]'
我使用了预训练的 ResNet,但效果不佳。
所以我尝试制作新模型,但无法定义标签值
我认为one-hot-encoding无法达到我的目的。
我该如何实施?
给我一些想法..
你说得对可能不适用于单热编码,让我们看看你有哪些选择。
选项 1:仍然是一种热编码
如果你希望你的模型只输出有限数量的属性,并且它们不重叠,你可以有 k 个单热编码输出层。
例如,如果您具有 color
、# of legs
、material
属性,则这些属性永远不会重叠。然后,您可以让模型为每个输入图像预测颜色、腿数和 material。这些可以使用 3 个单热编码向量来表示和学习。
优点:
- 通常更容易训练
- 不会有冲突的预测
缺点:
- 需要分离class
选项 2:不使用 softmax、sigmoid FTW
如果您使用 sigmoidal 激活而不是 softmax(这是我假设您正在使用的),则每个输出节点都独立于其他输出节点。这样,每个输出都会给出自己的概率可能性。
在这种情况下,您的标签将不会被单热编码,而是一个二进制向量,具有可变数量的 1
s 和 0
s。
您很可能想取一个阈值概率,而不是寻找最大概率,即在评估时将所有概率 >80% 的输出作为预测标签。
优点:
- 不需要手动分离属性(因为我们将每个 class 视为彼此独立)
- 可变数量属性的简单表示
缺点:
- 从数学上和经验上看,这往往更难训练
- 有可能(坦率地说,很有可能)您会得到相互冲突的预测,即
4 legs
和3 legs
都可能来自您的神经网络。您将需要处理这些情况。
这实际上归结为一种偏好,并且取决于您使用的数据类型。如果您可以选择属性的方式,您可以清楚地分离神经网络的选项以供选择,例如 color
和 material
(假设您不能有两种颜色或两个 materials ),第一个选项可能是最好的。
有几种其他方法可以解决这个问题,但这些方法似乎最适用。