我有一个数据集 {, }。 - 真正的价值目标,它们可以是负数。任务是教分类器 最大化下面的总和
所以 将是理想的分类器。我正在寻找合适的平滑损失函数来教授 NN。NN输出是概率, 所以 . 我尝试了下一个损失函数:
但是因为 可以是负数,这是定义错误的损失,并且 NN 收敛到什么都不好。我得到的最好结果是通常的 logloss:
是否有更好的损失函数来最大化总和 ?
我有一个数据集 {, }。 - 真正的价值目标,它们可以是负数。任务是教分类器 最大化下面的总和
是否有更好的损失函数来最大化总和 ?
定义 , IE, 如果 , 别的 . 现在数据集定义了一个二分类布尔分类问题。最高精度的布尔分类问题的解决方案解决了您的原始问题(最小化您的损失函数)。
因此,您基本上是在问如何训练神经网络来解决两类布尔分类问题。一种合理的方法是在神经网络的输出端放置一个 softmax 层,并像往常一样使用交叉熵损失对其进行训练。在测试期间,要选择一个类,您可以选择两个类中的哪一个具有从 softmax 阶段输出的更高可能性。换句话说,在训练时,您查看来自 softmax 层的实际输出(连续值)并使用交叉熵;在测试时,您比较两个输出并选择较大的一个来选择分类(除此之外忽略它们的确切值)。
这种方法的缺点是没有考虑到 的,只有他们的标志。为了改善这一点,请对样本使用权重。我们将再次在训练集上训练一个布尔分类器,但这次我们将对训练集中的每个样本进行不同的加权。把重量 在样品上 在你的训练集中。换句话说,在训练布尔分类器时,损失函数将是每个样本损失的加权和:
在哪里 是模型参数, 是分类器在输入上的输出 , 和 是交叉熵损失。请注意,样本中的错误 大的惩罚更多,样本中的错误 小则处罚少;这是合适的,因为这正是您使用分类器时会发生的事情 计算 . 这应该会改进您采用的方法。