【发布时间】:2021-03-26 19:22:14
【问题描述】:
我正在构建一个如下所示的二元分类器。我可以替换 BCELoss 来优化 f1 分数吗?
criterion = nn.BCELoss()
preds = model(inputs)
loss = criterion(preds , labels)
【问题讨论】:
标签: tensorflow deep-learning neural-network pytorch
我正在构建一个如下所示的二元分类器。我可以替换 BCELoss 来优化 f1 分数吗?
criterion = nn.BCELoss()
preds = model(inputs)
loss = criterion(preds , labels)
【问题讨论】:
标签: tensorflow deep-learning neural-network pytorch
F1 分数不是一个平滑函数,因此不能直接用梯度下降进行优化。随着网络参数的逐渐变化,输出概率平滑变化,但 F1 分数仅在概率越过 0.5 的边界时发生变化。结果,F1 分数的梯度几乎处处为零。
您可以按照here 的说明使用 F 度量的软版本。诀窍是您基本上用一种概率版本替换了真阳性和假阳性的计数:
其中oi是网络输出,ti是ground truth目标概率。然后像往常一样继续计算 F-measure。
另外,您可能会发现这个Kaggle tutorial 很有用。
【讨论】: