一些废话:好久没有做论文阅读系列的博客了,之前放弃是因为逐渐繁忙的学业以及论文那边实验非常的揪心,自己其实也看了很多论文,但是记的笔记不足以帮助到大家;
论文下载地址:
https://arxiv.org/pdf/2403.08632.pdf
代码下载地址:
https://github.com/liuzhuang13/bias
趁着周末,那就好好读一篇最近凯明大神和刘壮大神的文章吧(凯明不用介绍了,刘壮大神是DenseNet的第一作者,贾杨清的同门师弟,和谢赛宁合作写了ConvNeXt,凯明大神和谢赛宁合作写了ResNeXt,果然优秀的人都是相互吸引的,产生的学术价值太出众了)
摘要概述:
重新审视了Torralba和Efros十年前提出的“数据集分类”实验,一些通用的神经网络可以准确的分类图像来自哪一个数据集,例如,由YFCC, CC和DataComp数据集组合的分类,准确率为84.7%;进一步的实验表明,作者设计的数据集分类器可以学习到可泛化和可转移的语义特征,而不是简单地用记忆来解释,作者以此来促使人们对数据集偏差以及模型能力的思考。
个人理解是,其实大家在提高模型性能或者在不同任务的时候都默认采用的预训练模型进行迁移学习,就会涉及到一些特殊领域数据不能很好的泛化,比如自然图像预训练权重在医学图像上表现是稍差一点,正是存在这种问题,才诞生出诸如凯明大神的反思预训练那篇论文和从零开始的训练策略;如今的数据集虽然庞大、多样,帮助模型表现出色的可能是模型的独特设计,也可能是因为它能够分辨数据集,这就不利于模型泛化,对于未知的数据也不能表现的更好。
引言部分:
介绍了Alyosha Efros和Antonio Torralba在机器学习中对数据集偏差的努力,这两个大佬一个是sora两个一作的博导,一个是本科指导过他们(学术真成一个圈了);使用模型在三个数据集混合的数据上训练,用于区分测试图片的准确率非常惊人,通过数据增强以及更多的数据上训练,让模型更加泛化,表明神经网络会用偏差的形式去解决数据集分类任务,并且进一步实验表明:通过分类数据集学习到的表示带有一些可转移到图像分类任务的语义信息。
自监督训练在联合数据集上预训练后,再训练一个分类器用来分类图像来自哪个数据集,依然可以达到78%的准确率;在如今很厉害的神经网络以及庞大的数据集任务中,数据集偏差问题并没有得到缓解;
数据集历史的简单介绍
数据集在计算机出现之前成为“刺激”;1978以来,逐渐形成用Cameraman图像作为测试图像去评估计算机视觉算法的概念;机器学习方法的引入,也清晰了数据集的定义;
ImageNet数据集如果用1000个SVM分类器进一步研究问题是不太可能的,所以有了更多样的任务,也就发展后续的深度学习,转变成另一种模式:在ImageNet上预训练表征并将其转移到下游任务中;后续则越来越多数据集为了预训练而构建,并不是单一的一个任务方向;
后续数据集通过不同的领域划分;之后的内容都是在介绍数据集的偏见有多么的不好;
数据集分类任务
顾名思义,每个数据集为一个类,类似于图像分类,作者介绍了实验的数据集:1、规模大,2、具备普遍性和多样性,3、非特定场景(城市、道路、天空、汽车等),4、以预训练数据集的标准构建或已经用于预训练;
虽然这些数据集图像看起来没有偏见,但是神经网络还是能捕捉到潜在的,尽管使用模型单独测试一张图像来避免利用到底层统计信息。
作者使用六种数据集,选取三种组合起来训练,进行分类,依旧是很高的准确率,就算包括全部六种,准确率也达69.2%
使用AlexNet,VGG,ResNet,ViT,ConvNeXt来测试YCD(YFCC、CC和DataComp)分类数据集任务,准确率都很高,每张图像1MB大小;说明无论神经网络架构怎么变化,都擅长去寻找数据集的偏差,捕获数据集偏差的能力可能是深度神经网络固有的,而不是由特定组件赋予的
使用ConvNeXt不同变体不同参数大小进行测试,准确率都非常高,最小的体积仅为7K时,精度都达到72.4%。
数据集分类可以在没有大量参数的情况下完成,参数大这个性质通常被认为是深度学习在传统视觉识别任务中取得成功的原因;
这种任务还没有发现过拟合,训练数据数量越多准确率越大,所以作者认为存在一种模式帮助模型来分类数据集,并且也说明模型学习某些语义模式去推广未见过的数据,而不是记忆和过度拟合训练数据。
数据增强有利于数据集分类的准确性,是另一个角度的增加数据量,也就回到了之前讨论的数据越多分类越好的特点;数据增强的复杂性会提高模型记忆训练图像的难度,但是对于数据集分类任务则更加容易,说明模型并不通过记忆实现分类,而是学习模式;
总结,神经网络总是能准确完成数据集分类任务,不管什么条件下。
分析
1、低级特征偏差
作者将一些图像进行损坏,如加噪声、模糊、高亮等,用于抑制低级的特征,模型虽然下降了分类准确率,但是还是试图解决数据集分类任务,而不是使用低级偏差(emm这点本人没有看明白,望其他大佬评论区讨论一下)
2、记忆或概括
作者做了一些伪数据集,这些伪数据集是从相同的数据集采样,任务逐渐难是模型无法收敛,表现为不稳定的、非递减的损失曲线。伪数据集分类任务训练的模型并没有推广到验证数据(从每个伪数据集中取出并采样)
3、自我监督学习
预训练了一个MAE,在ImageNet和YCD上准确率都很高,可以学习到更具判别性的特征
4、通过分类数据集学习特征
通过数据集分类学习到的特征明显不如通过专门的自监督学习方法学习到的特征;实验表明,神经网络模型发现的数据集偏差与对图像分类有用的语义特征相关。
用户研究
作者还让真人进行任务测试,用于与模型效果进行比对(都是行业内的专业人士,可能是人情+马内?),要求每个用户对100张与提供给他们的训练集不重叠的验证图像进行分类,不限制每个图像或整个测试所允许花费的时间;
20个用户中有11个用户的准确率在40%-45%之间,有7个用户的准确率在45%-50%之间,只有2个用户的准确率超过50%。平均值为45.4%,中位数为44%。人类的表现高于机会水平的猜测(33.3%),这表明存在人类可以发现的模式来区分这些数据集,然而人类的表现远低于神经网络的84.7%。
大部分测试人员都觉得这个任务很难,作者还通过他们自己对于不同数据集特点的描述进行概括,做了一些简单的分析(只懂了作者是想通过人来猜测神经网络所挖掘的潜在模式,其他更深层次的没看懂)
总结
总结很简洁,表述了作者对于数据集偏差的猜想:神经网络善于捕捉这种偏差,并且这种偏差还无法具体分析到,人类也很难自身注意;并呼吁更多的人在这方面研究下去,相当于开了个新坑了,就看大佬们对这个感不感兴趣了,个人认为这种是更为宏观,有助于构建AI学习世界的方向,换句话来说,需要资源更多天赋更牛逼的大佬进行深挖,其他大佬可能不太感兴趣。
最后说几句话:这篇论文阅读花了很多时间,笔记也十分的冗长,太久没做笔记了,有点生疏,后续会改变阅读和记录方法。