当前位置:网站首页>剪掉ImageNet 20%数据量,模型性能不下降!Meta斯坦福等提出新方法,用知识蒸馏给数据集瘦身...
剪掉ImageNet 20%数据量,模型性能不下降!Meta斯坦福等提出新方法,用知识蒸馏给数据集瘦身...
2022-07-05 09:35:00 【QbitAl】
明敏 发自 凹非寺
量子位 | 公众号 QbitAI
这两天,推特上一个任务悬赏火得一塌糊涂。
一家AI公司提供25万美金(折合人民币约167万元),悬赏什么任务能让模型越大、性能反而越差。

评论区里已经讨论得热火朝天了。

不过这事儿倒也不是单纯整活,而是为了进一步探索大模型。
毕竟,这两年大家越发意识到,AI模型不能单纯比“大”。
一方面,随着模型的规模越来越大,训练付出的成本开始呈现指数型增长;

另一方面,模型性能的提升也已经逐渐到达瓶颈期,哪怕想要让误差再下降1%,都需要更多的数据集增量和计算增量。
比如对于Transformer而言,交叉熵损失想要从3.4奈特降低到2.8奈特,就需要原本10倍量的训练数据。
针对这些问题,AI学者们已经在从各种方向上找解决路子了。
Meta斯坦福的学者们,最近想到了从数据集上切入。
他们提出,对数据集进行知识蒸馏,使得数据集规模虽小,但还能保持模型性能不下降。
实验验证,在剪掉ImageNet 20%的数据量后,ResNets表现和使用原本数据时的正确率相差不大。
研究人员表示,这也为AGI实现找出了一条新路子。

超大数据集的效率并不高
本文提出的办法,其实就是对原本的数据集进行优化精简。
研究人员表示,过去许多方法都表明,许多训练示例是高度冗余的,理论上可以把数据集“剪”得更小。
而且最近也有研究提出了一些指标,可以根据训练示例的难度或重要性对它们进行排序,并通过保留其中一些难度高的示例,就能完成数据修剪。
基于前人的发现和研究,此次学者们进一步提出了一些可具体操作的方法。
首先,他们提出了一种数据分析方法,可以让模型只学习部分数据,就能实现同等的性能。

通过数据分析,研究人员初步得出结论:
一个数据集怎样修剪效果最好?这和它本身的规模有关。
初始数据量越多,越应该保留难度高的示例;
初始数据量越少,则应该保留难度低的示例。

而在保留困难示例进行数据修剪后,模型和数据规模的对应关系,可以打破幂律分布。
常被提起的二八定律就是基于幂律提出的。
即20%的数据会影响80%的结果。

同时在此情况下,还能找到一个处于帕累托最优的下的极值。
这里所说的帕累托最优是指资源分配的一种理想状态。
它假设固定有一群人和可分配的资源,从一种分配状态调整到另一种分配状态,在没有使任何一个人变差的前提下,至少使得一个人变得更好。
在本文中,调整分配状态即可理解为,修剪多少比例的数据集。
然后,研究人员进行了实验来验证这一理论。

从实验结果来看,当数据集越大,修剪后的效果就越明显。
在SVHN、CIFAR-10、ImageNet几个数据集上,ResNet的错误率总体和数据集修剪规模呈反比。
在ImageNet上可以看到,数据集规模保留80%的情况下,和原本数据集训练下的错误率基本相同。
这一曲线也逼近了帕累托最优。
接下来,研究人员聚焦在ImageNet上,对10种不同情况进行了大规模基准测试。
结果表明,随机修剪以及一些修剪指标,在ImageNet上的表现并不够好。

所以更进一步,研究人员还提出了一种自监督方法来修剪数据。
也就是知识蒸馏(教师学生模型),这是模型压缩的一种常见方法。

结果显示,在自监督方法下,它在找数据集中简单/困难示例上的表现都还不错。

使用自监督方法修剪数据后,正确率明显提高(图C中浅蓝色线)。

还存在一些问题
不过在论文中,研究人员也提到,虽然通过如上方法可以在不牺牲性能的情况下修剪数据集,但是有些问题仍旧值得关注。
比如数据集缩小后,想要训练出同等性能的模型,需要的时间可能会更长。
因此,在进行数据集修剪时,应该平衡缩减规模和训练增长时间两方面因素。
与此同时,对数据集进行修剪,势必会丧失一些群体的样本,由此也可能造成模型在某一个方面出现弊端。
在这方面会容易引起道德伦理方面的问题。
研究团队
本文作者之一Surya Ganguli,是量子神经网络科学家。

此前,他在斯坦福读本科期间,同时学习了计算机科学、数学和物理三个专业,之后拿下了电气工程与计算机科学硕士学位。
论文地址:
https://arxiv.org/abs/2206.14486
边栏推荐
- [team PK competition] the task of this week has been opened | question answering challenge to consolidate the knowledge of commodity details
- Understand the window query function of tdengine in one article
- Talking about the difference between unittest and pytest
- 分布式数据库下子查询和 Join 等复杂 SQL 如何实现?
- 单片机原理与接口技术(ESP8266/ESP32)机器人类草稿
- 百度智能小程序巡检调度方案演进之路
- Why does everyone want to do e-commerce? How much do you know about the advantages of online shopping malls?
- Develop and implement movie recommendation applet based on wechat cloud
- STM32 simple multi-level menu (array table lookup method)
- [JS sort according to the attributes in the object array]
猜你喜欢

百度智能小程序巡檢調度方案演進之路

Viewpager pageradapter notifydatasetchanged invalid problem

LeetCode 31. Next spread

Charm of code language

百度评论中台的设计与探索

Solve the problem of no all pattern found during Navicat activation and registration

使用el-upload封装得组件怎么清空已上传附件

Tdengine already supports the industrial Intel edge insight package

What about wechat mall? 5 tips to clear your mind

Principle and performance analysis of lepton lossless compression
随机推荐
【组队 PK 赛】本周任务已开启 | 答题挑战,夯实商品详情知识
小程序启动性能优化实践
The research trend of map based comparative learning (gnn+cl) in the top paper
How to empty uploaded attachments with components encapsulated by El upload
H. 265 introduction to coding principles
[listening for an attribute in the array]
A detailed explanation of the general process and the latest research trends of map comparative learning (gnn+cl)
Lepton 无损压缩原理及性能分析
解决idea调试过程中liquibase – Waiting for changelog lock….导致数据库死锁问题
SQL learning group by multi table grouping scenario
Design and exploration of Baidu comment Center
百度APP 基于Pipeline as Code的持续集成实践
Android SQLite database encryption
Gradientdrawable get a single color
Why don't you recommend using products like mongodb to replace time series databases?
idea用debug调试出现com.intellij.rt.debugger.agent.CaptureAgent,导致无法进行调试
【对象数组a与对象数组b取出id不同元素赋值给新的数组】
Solve liquibase – waiting for changelog lock Cause database deadlock
OpenGL - Model Loading
Wechat applet obtains household area information