如何规范化 BERT 分类器的输出

How to normalize output from BERT classifier

我使用 HuggingFace transformers.TFBertForSequenceClassification 分类器训练了 BERT 分类器。它工作正常,但是当使用 model.predict() 方法时,它给出一个元组作为输出,该元组未在 [0, 1] 之间标准化。例如。我训练模型将新闻文章分为欺诈和非欺诈类别。然后我将以下4个测试数据输入模型进行预测:

articles = ['He was involved in the insider trading scandal.', 
            'Johnny was a good boy. May his soul rest in peace', 
            'The fraudster stole money using debit card pin', 
            'Sun rises in the east']

输出是:

[[-2.8615277,  2.6811066],
 [ 2.8651822, -2.564444 ],
 [-2.8276567,  2.4451752],
 [ 2.770451 , -2.3713884]]

对我来说,label-0 代表非欺诈,label-1 代表欺诈,所以效果很好。但是我如何从这里准备得分信心呢?在这种情况下使用 softmax 进行归一化是否有意义?另外,如果我想查看模型优柔寡断的那些预测,我该怎么做?在那种情况下,这两个值会非常接近吗?

是的。你可以使用 softmax。更准确地说,使用 argmax over softmax 来获得标签预测,如 0 或 1。

y_pred = tf.nn.softmax(model.predict(test_dataset))
y_pred_argmax = tf.math.argmax(y_pred, axis=1)

这个 blog 在我有同样的查询时对我很有帮助..


为了回答你的第二个问题,我会要求你关注你的分类模型错误分类了哪些测试实例,而不是试图找出模型优柔寡断的地方。

因为 argmax 总是 return 0 或 1 而不是 0.5。而且,我会说标签 0.5 将是声称您的模型优柔寡断的适当值..