当前位置: 首页 > 科技观察

谷歌:不要丢弃性能不佳的微调模型,求平均权重提升性能

时间:2023-03-20 21:49:13 科技观察

本文经AI新媒体量子比特(公众号ID:QbitAI)授权转载。如何最大化模型精度?最近谷歌等机构发现,微调性能差的模型不要扔掉,要计算平均权重!它可以在不增加推理时间和内存开销的情况下提高模型的准确性和鲁棒性。例如,研究人员使用这种方法为ImageNet1K创造了新记录:90.94%。将其扩展到多个图像分类和自然语言处理任务也提高了模型的分布外性能,并提高了新下游任务的零样本性能。而这个方法还有一个有趣的名字叫做Modulesoup——是不是让人想起斐波那契汤的笑话?(昨天的汤+前天的汤=今天的新汤)△知乎网友@hzwer一共授权了三个菜谱。还记得之前大家是怎么提模型的吗?是先用各种超参数训练多个fine-tuning模型,然后挑出验证集上表现最好的一个保留,其余丢弃?由于神经网络是非线性的,在不同的lossbasins可能会有很多解,所以Modulesoup可以通过保留所有微调模型的权重并取平均来提升性能,这让人有点意外。然而,最近发现,从相同的初始化配置独立优化的微调模型位于错误景观的同一盆地。之前也已经证明,沿单个训练轨迹的权重平均可以提高随机初始化训练模型的性能。正是从这些结论中,作者受到了启发。Module汤一共有三种“食谱”(实现):统一汤、贪吃汤、习得汤。其中greedysoup是最常用的实现方式,因为它的性能比直接对所有权重进行均匀平均要高。具体来说,Greedysoup是通过将每个模型作为潜在成分依次添加到“汤”中来构建的,并且只有当它在验证集上保持性能改进时才将相应的模型保留在“汤”中。排序按验证集准确率降序排列。超越单一最佳微调模型的性能作者进行了全面的微调实验以确定Modulesoup的有效性。第一个是微调CLIP和ALIGN,这两个模型在图像-文本对上使用对比损失进行了预训练。结果在模块汤操作之后,两者在分布内和自然分布偏移(分布偏移)测试集上的表现均优于最佳单一微调模型。△左边是CLIP,右边是ALIGN,然后是在JFT数据集上预训练好的ViT-G模型。也就是说,它在ImageNet1K数据集上达到了90.94%的准确率,打破了CoAtNet之前保持的90.88%的准确率,同时在推理阶段将FLOPs减少了25%。除了图像分类任务,作者还在NLP领域验证了modulesoup。下表是BERT和T5模型在GLUEbenchmark的四个文本分类任务上的结果:可以发现虽然提升没有图像分类那么明显,但是greedysoup在大多数情况下可以和最好的单一模型进行比较任务提高绩效。当然,作者也指出modulesoup在适用性等方面存在局限性。例如,目前的测试都是在大型异构数据集上预训练的模型。在这些模型之外,效果不是很明显。最后,知乎网友@宫酱craftsman表示,其实这样的模型参数平均来说是经典trick,用的是Transformer的原论文。你发现了吗?论文地址:https://arxiv.org/abs/2203.0548