【问题标题】:Loss function for ordinal target on SoftMax over Logistic Regression基于逻辑回归的 SoftMax 上的序数目标的损失函数
【发布时间】:2015-02-16 22:54:06
【问题描述】:

我正在使用 Pylearn2 或 Caffe 构建一个深度网络。我的目标是名义上的。我试图找到一个合适的损失函数,但在 Pylearn2 或 Caffe 中找不到。

我阅读了一篇论文“偏好级别的损失函数:带有离散有序标签的回归”。我明白了一般的想法 - 但我不确定我是否理解阈值,如果我的最后一层是 SoftMax over Logistic Regression(输出概率)。

可以通过指出这种损失函数的任何实现来帮助我吗?

谢谢 问候

【问题讨论】:

  • 如果您仍需要帮助,您可能需要多描述一下您的问题。
  • 我的标签是序数,比如 1,2,3,4,5。所以我有5节课。我的模型是使用 SoftMax 而不是 LogisticRegression 的多类模型,结果为 1、2、3、4、5。现在,如果训练实例的实际标签为 3,而我的预测输出为 1,那么这比预测输出 2 更差。如果我的模型是使用均方误差作为损失函数的回归,则可以对这种损失进行建模。但是在 SoftMax 中,损失是一样的。这意味着与 1 对 3 相比,获得 2 对 3 可能同样糟糕(使用负对数似然)。那么如何修改负对数似然以适应序数目标?

标签: deep-learning theano caffe logistic-regression softmax


【解决方案1】:

对于 pylearn2 和 caffe,您的标签需要为 0-4 而不是 1-5...这正是它们的工作方式。输出层将是 5 个单元,每个单元本质上是一个逻辑单元……并且 softmax 可以被认为是对最终输出进行归一化的适配器。但是“softmax”通常用作输出类型。训练时,任何单个单元的值很少恰好是 0.0 或 1.0……它始终是跨单元的分布——可以计算对数损失。此损失用于与“完美”情况进行比较,并且错误被反向支持以更新您的网络权重。请注意,来自 PL2 或 Caffe 的原始输出不是特定的数字 0、1、2、3 或 5……它是 5 个数字,每个数字都与 5 个类别中的每个类别的可能性相关联。分类时,只需将具有最高值的类作为“获胜者”。

我会试着举个例子... 假设我有一个 3 类问题,我用 3 个单位的 softmax 训练一个网络。 第一个单元代表第一类,第二个代表第二个,第三个,第三个。

假设我提供了一个测试用例并得到...

0.25, 0.5, 0.25 ...0.5 是最高的,所以分类器会说“2”。这是 softmax 输出...它确保输出单元的总和为 1。

【讨论】:

  • 您好,感谢您的解释。我明白那个。我要说明的一点是,当反向传播错误时,这样的损失函数将强调当实际标签为 3 时,1 上的 0.x 和 2 上的 ox 同样糟糕。但我的标签是序数 0.x in 2 比 0.x on 1 好得多,因为它更接近 3。希望你明白我的意思
  • 也许你可以把它变成一个回归问题?预测单个数字 1-5 并将平方误差最小化将成为您的训练目标。
  • 是的——这就是我最终所做的。但回到我最初的问题——如果你读了那篇论文——他们使用了不同的方法。我想明白这一点。
【解决方案2】:

您应该看看序数(逻辑)回归。这是您描述的问题设置的正式解决方案(不要使用简单的回归,因为错误的距离度量是错误的)。

https://stats.stackexchange.com/questions/140061/how-to-set-up-neural-network-to-output-ordinal-data

我特别建议查看 Coral 序数回归实现,网址为 https://github.com/ck37/coral-ordinal/issues.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-16
    • 2016-07-03
    • 1970-01-01
    • 2019-09-12
    • 2020-05-24
    • 2023-03-25
    • 1970-01-01
    • 2018-01-20
    相关资源
    最近更新 更多