DMR模型在求micro F1时的一点小问题(不过无伤大雅)

1 motivation

  • RNP框架(Rationalizing Neural Predictions论文提出的模型,一种自解释模型,见引用[4])通常会产生一个预测和一个解释(称作rationale)。其形式是一个个0/1二进制掩码序列,标记原始文本中哪些单词没选中/被选中,例如:[0,0,0,1,1,1,0,0,0,0...]。在评估时,需要将生成的rationale序列与人工标注的0/1序列进行对比。
  • 在RNP原论文中并没有计算这一方面的结果(可能是因为工作较早,不能评估),但随着标注数据集的出现以及benchmark的提出,通过人工标注序列评估解释质量是必不可少的。
  • 最常用的评价指标是token F1,实际上是micro F1。最近一些工作采用了macro F1,因此引发我的思考,这两者究竟谁更合理?

2 预知识

  1. 混淆矩阵(TP、TN、FP、FN)与Precision、Recall、F1:可以参考引用[2]进行补全。需要注意,引用[2]的语境是,针对于常见的分类任务(二分类、多分类)计算以上指标,即一个样本只有一个分类结果。而rationale是一个序列,序列中每一个元素(对应于原始文本中一个token)而言,进行一个分类,0表示不被选中,1表示被选中。因此常见的TP、TN、FP、FN的计算方法是,把rationale打散,以token为单位统计上述指标。
  2. micro F1和macro F1:可以参考引用[1]中的内容,以及引用[3]中的micro F1和macro F1的计算公式。需要注意:
    1. 首先明确,micro F1和macro F1是两种统计所有类别F1的方法。micro F1是将所有类别样本的结果加在一起,然后再求总的F1,以二分类举例, m i c r o _ F 1 = T P 0 − 0 + T P 1 − 1 T P 0 − 0 + T P 1 − 1 + 1 2 ( F P 0 − 0 + F P 1 − 1 + F N 0 − 0 + F N 1 − 1 ) micro\_F1=\frac{TP_{0-0}+TP_{1-1}}{TP_{0-0}+TP_{1-1}+\frac{1}{2}(FP_{0-0}+FP_{1-1}+FN_{0-0}+FN_{1-1})} micro_F1=TP00+TP11+21(FP00+FP11+FN00+FN11)TP00+TP11,其中 T P 0 − 0 TP_{0-0} TP00表示预测为0-label为0(左为预测值,右为label,因此TP_{1-1}对应于引用[3]中的“ T P 1 TP_1 TP1”)。其特点是,容易受到类别不均衡情况的干扰(根据公式假设,0类有1000个样本,而1类只有1个,那么最终的结果将会接近单独计算0类F1的结果)。而macro F1是将每个类别的F1加起来,然后进行加权平均,以二分类举例, m a c r o _ F 1 = a 1 ⋅ F 1 0 − 0 + a 2 ⋅ F 1 1 − 1 2 macro\_F1=\frac{a_1·F1_{0-0}+a_2·F1_{1-1}}{2} macro_F1=2a1F100+a2F111,通常 a 1 a_1 a1 a 2 a_2 a2都是1。其特点是,容易受到Precision或Recal较高的类别影响,因为其直接受到F1影响,而F1是由Precision和Recall得到。
    2. 引用[1]中有两点可取之处:
      1. F1的计算方法,直接通过TP、FP、FN计算,而不是先算出Precision和Recall后再计算,因此相对来说更快捷。公式如下: F 1 = T P T P + 1 2 ( F P + F N ) F1=\frac{TP}{TP+\frac{1}{2}(FP+FN)} F1=TP+21(FP+FN)TP。当然需要注意,这里的F1是单个类别的F1。
      2. 其中展示的表格是非常好的、用于了解micro F1和macro F1的工具。如下(引自引用[1]):
        表格 在这样的表格中,我们会计算每个类别的TP、FP、FN,然后求出每个类别自己的F1,这样可以轻松得到marco F1;然后得到所有类别总的TP、FP、FN,可以求得micro F1。

3 DMR的实现方法与问题

3.1 DMR的实现方法

  • 首先,在第60-62行可以看到,这里计算了一个batch中所有样本产生的rationale(变量名为predictions)和人工标注序列(变量名为labels)的TP、(TP+FP)、(TP+FN)。注意,是以token为单位计算的。
    DMR的实现方法
  • 然后将每个batch的结果加起来,最后在160-163行计算 m i c r o _ F 1 ′ = T P a l l T P a l l + 1 2 ( F P a l l + F N a l l ) micro\_F1'=\frac{TP_{all}}{TP_{all}+\frac{1}{2}(FP_{all}+FN_{all})} micro_F1=TPall+21(FPall+FNall)TPall。这里的 m i c r o F 1 micro_F1 microF1少计算了类别0的结果,因此写为 m i c r o _ F 1 ′ micro\_F1' micro_F1
    求和计算micro f1

3.2 问题

以一个例子来具体化DMR的计算过程。假设有rationale和人工标注序列,如下:

rationale:  [0,0,0,1,1,0,1,1,0,0]
annotation: [0,0,0,1,0,1,0,1,0,0]
  • 首先写出引用[1]中表格的数值,如下:
classTPFPFNF1
0522 5 7 \frac{5}{7} 75
1222 1 2 \frac{1}{2} 21
sum744
  • 由于统计的是labels * predictions,两个0/1序列相乘等价于两个序列进行“与”运算,因此DMR所求的结果为class=1这一行
  • 而正确的做法是,将0/1序列进行翻转,即1-predictions、1-labels,再求一遍TP、FP、FN。然后将两个类别的TP加起来、FP加起来、FN加起来,再求F1,即为真正的micro F1。
  • 对于macro F1,将最后一列的两个F1加起来除以2即可得到。

4 结论

  • DMR的实现方法是最早的实现方法,但并不完全符合micro F1的计算方法。不过后续工作也参考了该方法,都采用DMR的计算方法进行评估,因此不存在不公平的对比,所以模型表现的好坏仍具有参考意义。
  • 在实现代码上,这个问题处于可改可不改的地步。
  • 对于我而言,弄懂了DMR实现方法以及micro F1、macro F1之间的区别。

5 引用

[1] Micro vs Macro F1 score, what’s the difference?
[2] F1-micro 与 F1-macro区别和计算
[3] F1 micro macro 区别和详解
[4] Rationalizing Neural Predictions
[5] DMR代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值