代码之家  ›  专栏  ›  技术社区  ›  Ofer Sadan

机器学习多分类:为什么使用“一个热”编码而不是数字

  •  1
  • Ofer Sadan  · 技术社区  · 8 年前

    我已成功尝试训练输出 y 张量如下:

    y = [0,0,1,0]
    

    但我不明白背后的原理。。。

    y = 3 y = 4

    这似乎更灵活,因为我可以想象一个有200万个可能类的多分类问题,并且输出一个介于0-2000000之间的数字比为每个结果输出一个2000000项的张量要高效得多。

    3 回复  |  直到 8 年前
        1
  •  2
  •   nessuno    8 年前

    理想情况下,您可以训练模型对输入实例进行分类并生成单个输出。类似于

    y=1 方法 input=dog y=2 方法 input=airplane 然而,这样的方法带来了很多问题:

    1. y=1.5 ?
    2. 为什么我要尝试 倒退 就像我在处理连续数据,而实际上我在处理离散数据?

    事实上,你所做的是治疗一个多班级 就像一个回归问题。 这在局部是错误的(除非您正在进行二进制分类,在这种情况下,正输出和负输出都是您需要的)。

    这个,每个 输入=狗 将会有 1, 0, 0 作为输出等等。

    tf.argmax

        2
  •  1
  •   Matthias Winkelmann    8 年前

    答案在于如何计算最终张量或单个值。在NN中,您的 y=3 将由上一层的值的加权和构建。

    y=4 ,输出 y=3 会被认为比 y=1 即使类别是随机的,并且可能是 1: dogs, 3: cars, 4: cats

        3
  •  1
  •   P-Gn    8 年前

    神经网络使用梯度下降来优化损失函数。反过来,这个损失函数需要是可微的。

    通常,您描述的输出是通过取这些伪概率的argmax从这个软连续输出中推导出来的。

    推荐文章