Py学习  »  机器学习算法

积木式深度学习的正确玩法!新加坡国立大学发布全新迁移学习范式DeRy,把知识迁移玩成活字印刷|NeurIPS 2022

新智元 • 1 年前 • 162 次点击  



  新智元报道  

编辑:LRS 好困
【新智元导读】NeurIPS 2022上的一篇论文提出一种新的迁移学习范式,称为「深度模型重组」。它可以将不同种类的深度学习模型类似积木一样,按照下游任务拼装起来,并获得极大的性能增益。

在距今980年前的北宋仁宗庆历年间,一场关于知识的革命在华夏大地正悄然发生。
这一切的导火索,并非那些身居庙堂的圣贤之言,而是一块块烧制规整的刻字泥坯。
这场革命,正是「活字印刷术」
活字印刷的精妙之处在于其中「积木拼装」的思想:工匠先制成单字的阳文反文字模,再按照稿件把单字挑选出来刷墨拓印,这些字模可按需求多次使用。
相比于雕版印刷术「一印一版」的繁琐工艺,模块化-按需组装-多次使用的工作模式几何倍数地提高印刷术的工作效率,也为千年来人类的文明发展传承奠定了基础。

回归到深度学习领域,在大预训练模型风行的今天,如何将一系列大模型的能力迁移到下游特定任务中已经成为一个关键问题。

以往的知识迁移或复用方法类似「雕版印刷」:我们往往需要按照任务需求训练新的完整模型。这些方法往往伴随着极大地训练成本,并难以扩展到大量的任务当中。

于是一个很自然的想法产生了:我们是否可以通过把神经网络,也看作一个个积木的拼装,并通过对已有网络进行重组装的方式,获得新的网络,并以此进行迁移学习呢?

在NeurIPS 2022上,来自新加坡国立大学LVlab的团队就提出了一种全新的迁移学习范式,称为《Deep Model Reassembly》深度模型重组。
论文链接:https://arxiv.org/abs/2210.17409
代码链接:https://github.com/Adamdad/DeRy
项目主页:https://adamdad.github.io/dery/
OpenReview:https://openreview.net/forum?id=gtCPWaY5bNh
 
作者首先将已有的预训练模型按照功能相似度拆解成一个个子网络,再通过把子网络重新组装的方式,构建在特定任务上高效且易用的模型。
该论文以886的评分被NeurIPS接收,并被推荐为Paper Award Nomination。 
本文中,作者探索了一种新的知识迁移任务,称为深度模型重组(Deep Model Reassembly, 简称DeRy),用于通用模型重用。
给定一组在不同数据和异构架构上训练得到的预训练模型,深度模型重组首先将每个模型拆分为独立的模型块,然后有选择地以在硬件和性能约束下对子模型块重新组装。
该方法类似于将深度神经网络模型当作成积木:将已有大积木拆解成为一个个小积木块,然后将零件按照需求组装起来。组装起来的新模型不但应具备更强的性能;且组装过程应尽可能不改变原模块的结构和参数,保证其的高效性。
把深度模型打散并重组

本文的方法可分为两部分。DeRy首先求解一个覆盖集问题(Set Cover Problem)并对所有预训练网络按照功能级进行拆分;第二步中,DeRy将模型拼装形式化为一个0-1整数规划问题,保证组装后模型在特定任务上性能最佳。

深度模型重组(Deep Model Reassembly)
首先作者对深度模型重组装的问题进行定义:给定个训练好的深度模型,称作一个模型库。
每一个模型层链接组合而成, 表示为。不同的网络可以拥有完全不同的结构和操作,只要保证模型是一层一层连接而成。
给定一个任务,希望找到在上效果最佳的层混合模型,且模型的计算量满足一定的限制:

 指代模型在任务上的性能; 表示第个模型的第层操作; 是模型的约束项。
该问题需要搜索对所有模型层的所有排列,以期最大化收益。从本质而言,这一任务牵涉一个极其复杂的组合优化。
为了简化搜索成本,本文首先将模型库模型从深度方向拆分开,形成一些更浅更小的子网络;然后进行子网络层次上的拼接搜索。
按照功能级对网络进行拆分
DeRy的第一步在于把深度学习模型像积木一样拆解开。作者采用了在深度上的网络拆分方式,将深层模型拆分为一些较浅的小模型。
文中希望拆开的子模型尽可能拥有不同的功能性。这一过程可以类比于把积木拆解,并分门别类放入玩具箱的过程:相似的积木被放在一起,不同的积木被拆开。

例如,将模型拆分为底层和高层,并期待底层主要负责识别曲线或形状等局部模式,而高层能判断样本的整体语义。

使用一般的特征相似度衡量指标,可以对任意模型的功能四相似度进行量化的度量。
其中的关键思想在于,对于相似的输入,相同功能的神经网络能产生相似的输出。
于是,对于两个网络 和起对应的输入张量X和X',他们的功能相似性被定义为:
于是就可以通过功能相似性将模型库划分成为功能等价集
在每一个等价集中的子网络拥有较高的功能相似度,同时每个模型的划分保证模型库的可分性。
这样进行拆解的一个核心好处在于,由于具有功能相似性,每一个等价集中的子网络可以看做近似可交换的,即一个网络块可以被同一等价集的另一子网络所替换,而不影响网络预测。
上述拆分问题可以形式化为一个三层的有约束的优化问题:
该问题的内层优化和一般的覆盖集问题或的图分割问题有较大的相似性。于是,作者使用一种启发式的Kernighan-Lin (KL)算法对内层进行优化。
其大意在于,对两个随机初始化的子模型,每次交换一层操作,如果该交换能增加评估函数的值,则保留这一交换;否则放弃这一交换。
这里的外层循环采取了一种K-Means的聚类算法。
对于每一次的网络划分,总是将每一个子网络分配到中心距离与其最大的一个功能集。 由于内外层循环都是迭代式切有收敛性保证的,就能通过求解以上问题得到按照功能级的最优子网络拆分。
基于整数优化的网络组装
网络拆分将每个网络分成个子网络,每个子网络属于一个等价集。可以由此作为搜索空间,找到在下游任务上最优的网络拼接。

由于子模型的多样性,这种网络组装是一个搜索空间较大的组合优化问题,定义了一定的搜索条件:每次网络组合从同一个功能集拿出一个网络块,并按照其在原始网络中的位置进行放置;合成的网络需满足计算量的限制。这一过程被描述为一个0-1整数优化问题优化。

为了进一步减小每一次计算组合模型性能的训练开销,作者借鉴了NAS训练中一种无需训练的替代函数,称为NASWOT。由此,可以只是用网络在指定数据集上的推理,来近似网络的真实性能
通过上述的拆分-重组过程,就能将不同的预训练模型拼接融合起来,以得到全新且更强的模型。

实验结果

模型重组适用于迁移学习

作者将一个包涵30个不同预训练网络的模型库尽心拆解重组,并在ImageNet和其他9个下游分类任务上进行性能评估。
实验中采用了两种不同的训练方式:Full-Tuning,表示对拼接之后的模型所有参数都进行训练;Freeze-Tuning,表示只对拼接后的连接层进行训练。
此外,还选择了五种尺度的模型并进行比较,称为DeRy( ,)。

可以再上图看到,在ImageNet数据集上,DeRy得到的不同尺度的模型都可以优于或持平模型库中大小相当的模型。

可以发现,即便只训练链接部分的参数,模型仍然可以获得较强的性能增益。例如DeRy(4,90,20)的模型在只训练1.27M参数的条件下达到了78.6%的Top1准确率。

同时在9个迁移学习的实验也验证了DeRy的有效性。可以看到在没有预训练的情况下,DeRy的模型在各个模型大小的比较中都能优于其他模型;通过对重新组装的模型进行持续预训练,模型性能还能够有较大幅度的提升,达到红色的曲线。
相比于其他的一些从模型库做迁移学习的方法例如LEEP或LogME,DeRy可以超越模型库本身的性能限制,甚至优于原本模型库中的最佳模型。
模型重组的性质探究
作者也很好奇本文提出的模型重组的性质,例如「模型会按照什么样的模式进行拆分?」和「模型会按照何种规则进行重组?」。对此作者提供了实验进行分析。

功能相似性,重组位置与重组性能

作者探究了将同一个网络块被其他拥有不同功能相似度的网络块进行替换后,Freeze-Tuning 20个epoch的的性能对比。
对在ImageNet上训练后的ResNet50, 将其第3和第4个stage的网络块, 与ResNet101, ResNeXt50和RegNetY8G的不同网络块进行替换。
可以观察到,替换的位置对性能有极大的影响。
比如将第3个stage换成其他网络的第3个stage,重组网络的性能会特别强。同时,功能相似性也是和重组性能正向匹配的。
在同一深度的网络模型块有较大的相似度,导致了训练后有较强的模型能力。这指向了相似性-重组位置-重组性能三者的依存和正向关系。
拆分结果的观察 
下图中,作者画出了第一步拆分的结果。颜色代表网络块和美歌等价集中心网络块的相似性。
可以看到,本文提出的划分倾向于将子网络按照深度聚类在一起并加以拆分。同时CNN和Transformer的功能相似性数据较小,但CNN与不同架构CNN之间功能相似性通常较大。
使用NASWOT作为性能指标 
由于本文第一次应用NASWOT来进行零训练迁移性预测,作者也对这一指标的可靠性进行了检验。
在下图中,作者计算不同模型爱不同数据集上NASWOT的分数数值,并与迁移学习的准确的准确率加一对比。
可以观察到,NASWOT分数得到了较准确的性能排序(Kendall's Tau相关性)。这表明本文使用的零训练指标能有效预测模型的在下游数据的性能。

总结

本文提出了一种新的知识迁移任务,称为深度模型重组 (Deep Model Reassembly, 简称DeRy)。他通过打散已有异质预训练模型并重新组装的方式,来构造与下游任务适配的模型。
作者提出了一个简单的两阶段实现方式来完成这一任务。首先,DeRy求解一个覆盖集问题并对所有预训练网络按照功能级进行拆分;第二步中,DeRy将模型拼装形式化为一个0-1整数规划问题,保证组装后模型在特定任务上性能最佳。
该工作不但收获了较强的性能提升,同时也映射出了不同神经网络之间可能存在的连接性。
参考资料:
https://arxiv.org/abs/2210.17409


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/150057
 
162 次点击