如何告诉我的神经网络我更关心精度而不是召回率?

数据挖掘 神经网络 优化 损失函数
2022-02-27 05:54:29

我正在为多标签分类问题训练神经网络,所以我的最后一层由n_classessigmoid 神经元组成。

现在,我知道由于噪音和我的特征缺乏可预测的能力,不可能完成学习任务。但是,我假设可预测的能力应该足以至少对某些数据点做出良好的预测。即使这些案例只是少数,如果神经网络至少能获得确定性(高精度)并且由于难度(低召回率)而错过绝大多数情况,我会很高兴。

当然,我可以正常训练模型,然后设置符合我目标的阈值,但这并不能说服我。我想在训练过程中介绍这个目标。如果某些点难以分类,我希望我的神经网络在训练期间发现这一点,忘记它们并专注于其他更可行的情况。

到目前为止,我唯一的想法是通过标签平滑使训练对异常值具有鲁棒性。

像这样在训练期间影响模型的任何其他想法?

2个回答

我认为您有两个不相互排斥的选择:

  1. 在训练期间不断检查验证数据的精度/召回指标。这样,在实验和超参数调整期间,您将选择更利于精确度而不是召回率的模型。

  2. 自定义您的损失函数,以正确的方式校正模型。问题是precision、recall、F1 score,它们都是不可微的函数,即它们不能按原样进入损失函数。出于这个原因,一些人试图以可微的方式近似这些指标。如本文所述,一个示例是soft-F1 分数如果您阅读功能代码,您会发现 TP、TN、FP、FN 的可微近似。您可以复制这些行来自定义您的个性化伪精度损失函数。

编辑 作为您目标的第一个近似值并且不需要太多努力,我会尝试自定义您的验证指标功能(例如,根据您想要的,一个对精度和召回应用不同权重的指标)并通过指标传递它网络的输入参数。