我正在使用 Pylearn2 或 Caffe 构建一个深度网络。我的目标是名义上的。我试图找到一个合适的损失函数,但在 Pylearn2 或 Caffe 中找不到。
我读了一篇论文“偏好水平的损失函数:离散有序标签的回归”。我明白了一般的想法 - 但我不确定我是否理解阈值是什么,如果我的最后一层是基于逻辑回归的 SoftMax(输出概率)。
有人可以通过指出这种损失函数的任何实现来帮助我吗?
感谢和问候
我正在使用 Pylearn2 或 Caffe 构建一个深度网络。我的目标是名义上的。我试图找到一个合适的损失函数,但在 Pylearn2 或 Caffe 中找不到。
我读了一篇论文“偏好水平的损失函数:离散有序标签的回归”。我明白了一般的想法 - 但我不确定我是否理解阈值是什么,如果我的最后一层是基于逻辑回归的 SoftMax(输出概率)。
有人可以通过指出这种损失函数的任何实现来帮助我吗?
感谢和问候
对于 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。
你应该看看序数(逻辑)回归。这是您描述的问题设置的正式解决方案(不要使用简单的回归,因为错误的距离测量是错误的)。
https://stats.stackexchange.com/questions/140061/how-to-set-up-neural-network-to-output-ordinal-data
特别是我建议在https://github.com/ck37/coral-ordinal/issues查看 Coral 序数回归实现 。