Detecting Overfitting via Adversarial Examples
发表时间:2019(NeurIPS 2019)
文章要点:这篇文章的出发点是说,大家都在数据集上刷点,虽然都分了训练集和测试集,但是刷到最后的结果肯定是在测试集上效果越来越好了,但是会不会出现在测试集上overfitting的问题?文章通过从测试集生成对抗样本并用importance weighting来修正样本分布的方式来检测有没有在测试集上出现overfitting的情况,如果说对抗样本的错误率和测试集的错误率差异很大,就可以认为这个模型在测试集上overfitting了。具体做法就是,先根据测试集生成一些对抗样本,生成的样本需要满足三个条件
G1是说生成的样本的标签和原样本要一样。G2是说如果本来这个样本就被模型分错了,就不用拿来生成对抗样本了。G3是说生成的样本和原来的样本的概率密度要一样。
满足这几个条件之后,我们就有了一个根据测试集生成的对抗样本集。令测试集表示为
对抗样本集表示为
定义分类误差为
我们有
那么模型f在测试集和对抗样本集上的经验误差都应该是无偏的,也就是说对
如果f和样本集合是独立的,对上面这两个式子,我们有
那么我们就只需要比较这两个集合的预测误差是不是差不多就行了
基于此,作者最后就用假设检验confidence intervals,Pairwise test以及训练多个模型来做检验(N-model test)的方式来检测这两集合上的预测误差是不是差不多的。最后实验用VGG和resnet在ImageNet上面做实验,结果表明这两个网络结构在ImageNet上没有overfitting。
总结:很有意思的工作,不过生成对抗样本应该也不是一个容易的事情吧,还需要控制这些样本到底加了多少扰动才能画出文章里的实验结果图。
疑问:证明啥的也没仔细看,就看了个大概意思。图里这里不知道咋来的。
这一步等号也不懂