【问题标题】:Ternary Classification of the type 'A', 'B' or 'any'?“A”、“B”或“任何”类型的三元分类?
【发布时间】:2021-02-20 00:00:12
【问题描述】:

对于任何通用机器学习模型(尽管我目前正在使用神经网络),对于

将集合的元素分为三组(“A”或“B”或“任何”),

(这里,标记为“A”意味着唯一有效的标签是“A”(类似于“B”),并且'any'表示两个标签'A'和'B'同样有效),应该使用什么样的损失函数强>?

这可以使用与更普遍的“三元分类”问题相关的技术来解决,但我认为这种概括会丢失一些信息。

为了举例,假设我们要根据动词的时态对动词(英语)进行分类(我们只考虑现在和过去时)

那么模型应该分类

{"work", "eat", "sing", ...} 作为“现在时

{"worked", "ate", "sang", ...} 表示为“过去时

和,

{"read", "put", "cut", ...} 为 "any"

(注意“read”的现在时和过去时的发音不同,但我们正在考虑基于文本的分类)

这与我正在处理的任务不同,但可能应该作为这个特定问题的有效示例。

PS:我是一名学生,对这个领域只有基本的了解,所以如果需要,请询问有关问题的任何说明。

【问题讨论】:

    标签: machine-learning neural-network classification text-classification


    【解决方案1】:

    我认为你是多标签分类而不是多类分类的情况。

    here所述:

    在机器学习、多标签分类和强 多输出分类的相关问题是 可以为每个标签分配多个标签的分类问题 实例

    这意味着实例可以关联多个类。

    通常,当您使用二进制分类(例如 0、1 类)时,您可以将一个神经元作为网络的最后一层,该神经元将输出 0 到 1 之间的连续值,使用 sigmoid 作为激活函数,以及作为损失binary cross-entropy

    鉴于您的情况,您可以决定使用:

    • 两个神经元作为神经网络的输出
    • 对于每一个你可以使用sigmoid 激活函数
    • 丢失binary-cross entropy

    通过这种方式,每个实例都可以通过模型以特定概率与两个类相关联。

    这意味着对于每个实例,您应该关联两个类,或者更确切地说是“标签”。 例如,对于您的动词,您应该有“过去”、“现在”类:

             present  past
    work:    1      0
    worked:  0      1
    read     1      1
    

    并且您的模型将尝试输出两个概率,并使用之前解释过的架构:

             present  past   sum
    work:    0.9      0.3    1.2
    worked:  0.21     0.8    1.01
    read     0.86     0.7    1.5
    

    基本上,您有两个独立的概率(如果您检查,一行的总和不是 1),因此您可以将两个类都关联到一个实例。

    相反,如果你想要一个互斥的分类,超过 2 个类别,你应该使用 categorical crossentropy 作为损失,并在最后一层使用 softmax activation function,它基本上会处理输出以生成总和为 1 的概率向量。示例

             present   past     both   sum
    work:    0.7       0.2      0.1    1
    worked:  0.21      0.7      0.19   1
    read     0.33      0.33     0.33   1
    

    查看here 以查看详细示例

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2020-04-15
      • 2017-12-28
      • 2019-09-25
      • 2012-03-18
      • 1970-01-01
      相关资源
      最近更新 更多