本文主要是介绍【AI】消融实验ablation study,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
消融实验是在科研论文中常见的一个术语,在深度学习中非常重要,用人话来说:就是消除研究过程的噪声,比如删掉一些模块或者用随机特征去替换训练好的一些特征。
作用:容易解释模型工作原理的因果性;便于理解;验证是否运行原理符合你的假设(移除系统中的特定的部分,来控制变量式的研究这个部分对于系统整体的影响。如果去除这一部分后系统的性能没有太大损失,那么说明这一部分对于整个系统而言并不具有太大的重要性;如果去除之后系统性能明显的下降,则说明这一部分的设计是必不可少的。当然,如果出现了第三种情况,也就是去除之后模型的性能不降反升,那么建议找一下bug或者修改设计);
例如,Girshick 及其同事(2014 年)提出了一个由三个 "模块 "组成的物体检测系统RCNN:第一个模块使用选择性搜索算法(Uijlings 及其同事,2012 年)提出在图像中搜索物体的区域,然后输入一个大型卷积神经网络(有 5 个卷积层和 2 个全连接层)进行特征提取,再输入一组支持向量机进行分类。为了更好地了解该系统,作者进行了一项消融研究,移除系统的不同部分–例如,移除卷积神经网络的一个或两个全连接层,性能损失却出奇地小,这让作者得出以下结论,CNN中最有代表性最显著的部分是卷积层而非连接层。
常见消融实验使用的表格形如:
metric 1…N | |
---|---|
A(baseline) | |
A+B | |
A+C | |
A+B+C(final) |
metric 1 - N 表示N个用来评价系统性能的指标,原始模型M(只含有A模块)会被首先测试,得到的结果会成为baseline用来对比。接下来,分别测试模型A+B与A+C来分别测试B模块与C模块的单独作用。最后,就要把所有的模块都放在一起,也就是模型A+B+C,来测试最终模型的性能。
这里要注意其中每个其中列出的模块是互相独立的,当模块C是基于模块B时,也就是不存在A+C模型的组合方式时,需要将上表中对应A+C的行删去。
另外,对于无法删除的变量做消融实验,比如超参数,这就需要用控制变量法来保证其他方面不变,测试不同组超参数对系统的影响;超参数调参常用的grid search和random search本质上也是消融实验,它们探究了在只改变一个参数的情况下系统性能的变化从而展示参数对于系统的影响。
当系统中变量很多时需要取舍,合理选择更值得的变量去做消融实验,阐述这个变量的作用和重要性;对于不重要的参数,可以使用常用数值或缩小范围。
Faster RCNN论文可以拿来学习针对变量的消融实验的设计。
这篇关于【AI】消融实验ablation study的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!