浅谈Threats to Validity

软件工程领域里的很多论文在最后都会有Threats to Validity,之前读论文的时候都是一眼带过。自己曾经写过,也是随便写写。前几天写论文写到这一章,仔细去看了一些论文,发现这也分很多种类。搜了一下,发现还有一篇论文是专门对这个的研究。所以在这里就依据这篇论文做一个总结吧。由于现在我的研究方向是机器学习,所以就结合这个方向进行讨论。这些都是我所理解的,可能不严谨,也可能不正确。

作者首先强调了一些概念,有效性(validity)关心的是得出的结论怎样可能会错,也就是说,结论和现实之间的关系。它和质量(quality)不同,质量比有效性大很多,例如可复现性(replicability)就属于一个研究的质量,而不是有效性。另外,有效性是一个目标。一个有效性威胁(validity threat, VT)就是一个在前往目标时,你可能会出错的路径。

作者将Threats to Validity分成了以下几类:

Conclusion Validity

大多数人都认为结论有效性是特指“统计”学上的有效性,其实并不是,几乎所有工作都会有结论有效性(只要你得出结论了)。结论有效性是指我们从数据的关系中得出的结论的合理程度。只要你的论文是在说明某种关系,那么结论无非就是两种结果,有关系或没有关系。无论是哪种情况,得出的结论都有可能是错的。有可能本来没有关系,你的结论是有关系,也有可能本来有关系,只是你没有发现而已。结论有效性就是在讨论这种可能性。

举个例子,如果你通过统计一些数据发现学校中参加某一个项目的学生成绩都很高,其他学生的成绩都很低。结论有效性就是根据这些数据就得出这样结论的合理性。也许参加这个项目并不是原因而是结果(可能参加项目的门槛就是成绩优秀),也许这些学生本来就比对照组聪明,这就导致了结论的不合理性。

在机器学习中,大部分时间就是在提出一个新的方法,通过实验来证明这种方法可以达到更好的效果。这本质上也是在证明你提出的方法和更好的结果之间存在必然的关系。所以,这时结论有效性就应该讨论你所提出的方法是否是导致更好效果的原因。也就是说,到底是你提出的方法导致结果变好,还是有可能是由于其它的原因导致结果变好。

不过在机器学习中,这个类别不是经常被讨论,因为你可以通过消融实验(ablation study)来证明你提出的方法的有效性。

Internal Validity

内部有效性就是说采用方法的内部的有效性,所以,讨论内部有效性的前提是,已经有证据证明所采用的方法对最终的结果有影响。有人说结论有效性是内部有效性的特例,但是当它们两个分开的时候,内部有效性更多地关注于方法内部。下图就形象地表达了内部有效性。
内部有效性

机器学习中的内部有效性最常见的是超参数的设置了,超参数的不同可能会导致结果的偏差。这也很好理解,你提出了新的方法,或者改进,你实现的方法和别人实现的方法肯定不完全相同。就算你是在某个方法上进行的更改,那么你也不能保证其它对比的方法都是在一个代码上进行的更改。所以,你用了你的方法,同时也引入了其它的不可预期的变量。有时候看似你的方法,模型效果很好,但可能是超参数的原因。除非你有大规模的调参,或者在所有的实验上,包括对比方法的参数、技巧(例如warmup等提分的技巧)都设置成一模一样(通常来说不太可能实现),那么内部有效性都会超参数这一项。

Construct Validity

在论文中,我们都会基于一个理论,提出一种方法,然后通过对这个方法观测到的结果,来进行推论,从基于的这个理论,推理到结果所基于的理论。因此就会存在两种结界:第一种是观测到的结界,从提出的方法到观测到的实验结果;另一种是理论的结界,从提出方法基于的理论到结果的理论。通过下图可以很直观地看到。
结构有效性

我们所能保证的是下面的,观测到的是真实的,但是无法保证你所说明的,基于观测到的理论的完全正确性,包括两个结界之间的联系,以及理论中Cause Construct到Effect Construct的推论是否正确。所以,结构有效性关注的就是你所基于的,解释的理论是否是正确的。

例如,你为了证明一个新的学习桌对小学生的成绩有提升的作用,你为它们换上了学习桌。这么看来你所做的改变仅仅是书桌,而最终的结果也证明了你的猜想。但是有可能是你错了,学生成绩提高的原因是它得到了更多的关注。所以,你虽然改变的仅仅是书桌,但是改变书桌所带来的其它不可预期的变化,可能导致你得出错误的结论。

机器学习中,举一个例子就是我如果用自监督学习来提高某一个任务的性能。最后实验也证明了使用自监督学习可以提升结果。但是自监督使用的数据集里面包括了下游任务的测试集中的数据,那么这就叫结构有效性。

有人可能会混淆内部有效性和结构有效性,我的理解是,内部有效性关注的是是你在实践中引入的其它因子,而结构有效性指的是在依据理论进行实践时,这个从理论到实践的环节,是否是一一对应的。拿很火的Transformer举例,作者认为RNN不能并行计算,速度很慢,而且对长序列依赖来说效果不好,因此提出了Transformer模型,最终发现Transformer的结果要比RNN更好,速度更快。所以这里的内部有效性就是实验中使用的Transformer是否和对比的RNN一样的超参数设置,并且模型大小是否相当,其它的各种变量都相同。而结构有效性就是Transformer是否是像作者解释的那样,速度快是因为使用了多头注意力机制,从而可以并行,而不是另外的原因。

External Validity

简单来说外部有效性就是泛化性。关注的是样本是否代表所有情况,在其它情况下的是否还会得到相同的结果。

References

[1] Feldt, Robert, and Ana Magazinius. “Validity Threats in Empirical Software Engineering Research-An Initial Survey.”


浅谈Threats to Validity
http://nougatca.github.io/2021/08/29/threats-to-validity/
作者
Changan NIU
发布于
2021年8月29日
许可协议