昨日,整个社区最热门的话题无外乎是 reddit 上一名机器学习研究者对谷歌 AI 负责人 Jeff Dean 参与论文的质疑。这篇论文是《An Evolutionary Approach to Dynamic Introduction of Tasks in Large-scale Multitask Learning Systems》,于周四被提交到预印版论文平台 arXiv 上。
在论文中,Jeff Dean 等人提出了一种进化算法,可以生成大规模的多任务模型,同时也支持新任务的动态和连续添加,生成的多任务模型是稀疏激活的,并集成了基于任务的路由。新方法在 69 个图像分类任务上取得有竞争力的结果,例如对仅在公共数据上训练的模型,在 CIFAR-10 上实现了新的业界最高识别准确度 99.43%。
正是这个在 CIFAR-10 上实现的新 SOTA 遭到了质疑,此前的 SOTA 为 99.40。她表示,「产生这一结果需要总计 17,810 小时的 TPU 核心小时数,如果你不在谷歌工作,这意味着必须使用 3.22 美元 / 小时的按需付款,训练好的模型成本需 57,348 美元。」
因此,她发出灵魂一问,「Jeff Dean 花了足够养活一个四口之家五年的钱,获得了在 CIFAR-10 上 0.03% 的改进,创建了新的 SOTA,这一切值得吗?」
这一质疑得到了众多领域人士的附和。有研究人员甚至悲观地表示,「我几乎对深度学习失去了兴趣,作为小型实验室的从业者,在计算预算方面基本上不可能比得过科技巨头。即使你有一个很好的理论想法,主流环境可能也存在偏见,让它难以看到曙光。这酿成了一个不公平的竞争环境。」
随着该话题的继续发酵,Jeff Dean 亲自在 reddit 上进行了回应。他表示,「我们这项研究的目标不是为了得到一个更高质量的 cifar10 模型,而且原帖作者成本计算的方式也有问题。」
Jeff Dean 回应全文
这篇论文是我和 Andrea Gesmundo 两人一起完成的,其中 Andrea Gesmundo 做了论文大部分工作。
论文地址:https://arxiv.org/pdf/2205.12755.pdf
我想说的是,这项研究的目标不是得到一个高质量的 cifar10 模型。相反,这项研究是探索一种设置,可以动态地将新任务引入正在运行的系统中,并成功地为新任务获得一个高质量的模型,该模型将重用现有模型中的表示并稀疏地引入新参数,同时避免了灾难性遗忘或负迁移等多任务系统问题。
该研究的实验表明,我们可以从几个独立的可视化任务基准中动态地引入 69 个不同任务流,最终得到一个多任务系统,它可以为所有这些任务联合产生高质量的解决方案。所得到的模型对任何给定的任务都是稀疏激活的,系统为新任务引入的新参数越来越少(参见下图 2)。多任务系统在这个任务流的末尾只为增量任务引入了 1.4% 的新参数,每个任务平均激活模型总参数的 2.3%。任务之间有相当多的表示共享,演化过程有助于确定何时有意义以及何时应该为新任务引入新的可训练参数。
我还认为原贴作者对成本的计算是错误的,实验是训练一个多任务模型来共同解决 69 个任务,而不是训练一个 cifar10 模型。从下表 7 中可以看出,所使用的计算是 TPUv3 核和 TPUv4 核的混合,因此不能简单地计算核小时数,因为它们的价格不同。
除非你有特别紧急的任务,需要快速训练 cifar10+68 个任务,其实这类研究可以很容易地使用可抢占价格的资源,即 0.97 美元 / 小时 TPUv4、0.60 美元 / 小时 TPUv3(不是他们所说的你必须按需定价 3.22 美元 / 小时)。在这些假设下,表 7 中描述的计算公共云成本大约是 13960 美元(使用 12861 TPUv4 芯片小时和 2474.5 TPUv3 芯片小时的可抢占价格),或者说是大约 202 美元 / 任务。
我认为拥有稀疏激活的模型很重要,且能够动态地将新任务引入到现有系统中,该系统可以共享表示(在适当的情况下)并避免灾难性遗忘,这些研究至少值得探索。该系统还有一个优点,即新任务可以自动被纳入系统,而无需为此进行专门制定(这就是进化搜索过程所做的),这似乎是一个持续学习系统的有用属性。
这篇论文的代码是开源的,大家可以自行查看。
代码地址:https://github.com/google-research/google-research/tree/master/muNet
原贴作者回复 Jeff Dean
在看到 Jeff Dean 的回复后,原贴作者表示:澄清一下,我认为 Jeff Dean 的这篇论文(在每个任务中用来产生模型扩充的进化模式)真的很有趣,这让我想起了另一篇论文,但我不记得标题了,论文大概是讲对于每个新任务,向整个体系架构添加新的模块,将其他模块的隐藏状态作为每层输入的一部分,但不更新现有组件的权重。
我还有一个想法,在每个任务的模型中构建模块。你知道小鹿是如何在出生后几分钟内就能走路的吗?相比之下,在那个时候,刚出生的小鹿基本上没有「训练数据」来学习感知运动或对世界进行建模,而是必须利用大脑中的特殊结构,而这些结构必须能够继承以让小鹿拥有基本技能。这些结构将是非常有用的,所以在某种意义上,它将迅速推广到一个新的但相关的控制任务。
因此,这篇论文让我想到了那些已经存在的可继承结构的发展,这些结构可以用来更有效地学习新任务。
另一家实验室的研究人员可能有相同的 idea,但得到的结果要差得多,因为他们负担不起从现有设置转移到大型云平台的费用。并且,由于现在社区过度关注 SOTA 结果,他们的研究也无法发表。即使费用「仅为」202 美元 / 每任务,但必须经过多次迭代才能将事情做好。
因此,对于我们这些无法获得足够计算预算的人来说,我们的选择基本上只有两种。一是祈祷并希望谷歌能够公开分发现有的模型,然后我们根据自身需求进行微调。但结果是,模型可能已经学习到我们无法消除的偏见或对抗性弱点。二是啥都不做,躺平。
所以,我的问题不仅仅在于这项研究。如果 OpenAI 想在 GPT-4 上花费上百万亿美元(打个比方),那就赋予它更多的权力。这是一种过度奖励浮华、大数目和奢侈的科学和出版文化,而无益于帮助人们更好地完成实际的工作。我最喜欢的论文是 van der Oord 在 2019 年发表的《Representation Learning with Contrastive Predictive Coding》,它使用无监督预训练任务,然后对一个小的标签子集进行监督训练,以实现复制标记所有数据的准确率结果,并从数据效率的角度讨论这种提升。我在工作中复现并使用了这些结果,节省了自己的时间和金钱。就凭这篇论文,我就愿意成为他的博士生。
但是,OpenAI 在论文《Language Models are Few-Shot Learners》中提出了更大的 transformer 模型 GPT-3,获得了近四千次引用以及 NeurIPS 2020 最佳论文奖,还获得整个媒体的关注。