本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.
由积木拼凑的人类世界
世界是由一块块“积木”拼装起来的。这首先反映在人类对游戏世界的无限畅想中。
作为二十一世纪人类最有名的游戏IP之一,Minecraft构建了这样一个用积木造就的开放世界;其中所有的物体都是由一个个拥有不同材质不同功能的立方体组成。不同立方体虽然性质单一,但能够通过多样化的排列组合,合成新的材料或者工具。这样的世界观给予了玩家极大的自由度和游玩方式,成为了游戏史上一个重要的里程碑。
尽管游戏离我们的生活还很遥远,但现实中的通过将一个大的系统拆分为单元模块的设计方式已经深入我们生活的方方面面。科学家统称为这样的方法论为 模块化设计 。
当你随手拿起你的手机或电脑,当你打开你新买的汽车,当你搬家来到你的新房,你就可以看各式各样由零件拼装而来的人造产物。这些“积木”,可以是一颗颗螺丝,可以是精密的芯片,也可以是一块最不起眼的砖头。他们通过拼接组装的方式,自下而上的构建起人类社会的方方面面。
AI模型也是可以拼装的吗?
随着通用AI模型的逐步增大,人们也逐渐发现这些方法存在的巨大问题。
首先,大模型意味着巨量的训练成本和推理开销。另一方面,庞大的体量也极大地妨碍了模型的扩展性。例如,假设有一项从未在训练集中出现的任务或样本,我们不得不针对新任务,重新对模型进行全局的增量训练。这使得模型的迭代成本极为高昂,很难快速适应新任务或在用户提出的新需求。除此之外,通用大模型大模型也对AI的可信度提出了新的挑战。因为在训练过程中多个任务的特征提取是交织在一起的,通常的可解释性算法难以在巨大的网络架构中精准定位对预测至关重要的特征或网络参数。这使得大模型的预测更难以被人类理解。
针对上述的诸多问题,一个可能的解决方法在于把一个大模型拆分为一系列子模型。例如,彩票假设(The Lottery Ticket Hypothesis)认为一个大模型中可以找到一个足够强的子网络。另一个有名的例子是由Google提出的PathWay模型,它认为可以将一个多任务大模型看成是一系列专家的组合(Mixture of Experts)。针对每次推理,我们只需要运行大模型中一个稀疏连接的子模型即可。然而,上述方法虽然开始考虑了大模型的模块化设计,但仍然处在初步的构思阶段
建构在这样的思路之上,来自NUS的研究者设计了一种算法,希望把一个大模型看作是一系列原子能力的叠加,并分解成为得到多个小模型。其中每一个小模型拥有大模型的部分能力,处理单一任务,参数量极小。针对不同的任务,我们可以通过对原子网络的组合来实现能力的组合。这不但极大拓展了模型的扩展性,也能保证了任务之间的可解释性。
该研究已被ECCV2022接受,文章题目为《Factorizing Knowledge in Neural Networks》
Arxiv: https://arxiv.org/abs/2207.03337
Code: https://github.com/Adamdad/KnowledgeFactor
引言
知识蒸馏Knowledge Distillation(KD)是深度学习中常用的迁移学习手段。他希望将一个教师网络的知识注入一个学生网络,以达到提升性能、降低计算量的目的。尽管这一范式获得广泛的成功,知识蒸馏的过程是极难分析调控的:一方面,我们难以控制教师网络将何种知识传递给了学生模型;同时,我们一般假定教师和学生网络需要完成完全一致的任务,这大大限制了蒸馏过程的可扩展性。
图1. 知识分解的方法示意图,以及与3种常用知识蒸馏方法的比较
针对上述痛点,作者探索了一种新颖的知识迁移任务,称为知识分解Knowldege Factorization(KF)。知识分解的核心思想在于知识的模块化和可组装性:给定一个预训练的网络模型作为输入,知识分解旨在将其分解为几个原子网络,每个原子网络只处理一个专用任务并维护从源网络分解的特定知识。这种原子网络在任务上是解耦合的。同时这些原子网络可以被构建成为一个模型库,用户可以在无需额外训练的情况下对网络进行组装,就能产生更胜任的组合任务新网络。换句话说,原子网络就像乐高积木一样,允许我们以即插即用的方式构建定制的网络。
图1 展示了3 种类型的知识蒸馏和本文提出的知识分解的对比示意图。(a) Single-Task Learning to Single-Task Learning(STL2STL) 是指使用单任务的教师提炼出单任务的学生,(b) Multi-Task Learning to Multi-Task Learning~(MTL2MTL) 代表使用多任务的教师模型提炼出一个多任务的学生, (c) Sub-Knowledge Distill子集知识蒸馏指将教师知识的子集提取到其学生模型中。与将知识作为一个整体传播的蒸馏不同,我们提出的知识分解框架将预训练的教师分解为解开的原子网络,这些网络可以集成或单独运行而无需重新训练。一个简单的例子是,给定一个在 ImageNet 上预训练的分类模型,如果我们要两个网络,一个猫-狗分类,一个处理猫-鱼,我们将不得不执行两次传统的知识蒸馏;进一步的,如果我们要从 1000分类中学习所有 K分类模型,蒸馏的代价是指数次的:
这是计算上难以处理的。但是知识分解可以将这一代价大幅度降低,只需要一次训练,得到1000个原子网络,即可组装成个类型的子网络。
结构分解与表征分解
从从方法上,本文两个层面的分解机制即结构分解和表征分解
图2. 结构分解和表征分解
结构分解(Strucrual Factorizarion):结构分解将教师网络拆分为是一组具有不同功能的原子网络。
如图2所示,每个原子网络包括一个共享的公共知识网络(CKN)和一个特定任务网络(TSN)。CKN 提取与任务无关的表示以捕获任务之间的共性,而 TSN 则负责提取特定于任务的信息。原子网络通过融合任务无关的和任务相关的知识来完成某一任务。给定输入x,和分别提取任务无关和任务相关的特征。最后使用一个任务头,对该任务标签进行预测。除了有监督任务损失外,我们还使用一个知识迁移损失保证原子网络的预测与教师网络一致。通过这样的方式,我们将一个多任务网络的知识,传递给多个原子网络。
表征分解(Representation Factorizarion):表征分解将原子网络的特征解耦合成为共用特征和任务专用表征两个部分。
为了达到这一目的,我们引入了一个以信息论为指导的目标函数,称为信息最大瓶颈InfoMax-Bottleneck~(IMB)。信息最大瓶颈优化原子网络之间表示和输入之间互信息。一方面该方法最大化输入和共同特征之间的互信息,以鼓励信息在CKN中的无损传输。同时,信息最大瓶颈最小化任务之间的互信息,保证任务特征只是用于预测特定结果。具体来说,我们推导出一个变分下界使得深度网络能直接优特征之间的互信息。
在本文中,代表X和Y两个变量之间的互信息。对于每个输入样本,我们计算其公共知识特征和任务专用表征,信息最大瓶颈试图最大化 使公共知识特征尽可能多地保留输入的信息,同时最小化 以便专用表征只保留与任务相关的信息。于是我们可以将表征分解形式化为一个互信息的有约束优化问题
其中增大使得任务特征对当前任务有足够的预测能力;和代表信息熵常数。通过引入拉格朗日常数和,我们可以将该问题转化为一个无约束的优化问题。
由于连续变量的互信息难以估计,我们推导出一个变分下界来近似精确的信息最大瓶颈函数值的计算
该变分下界的三项正好对应着拉格朗日方程中的三项。变分下界的具体证明和每一项的含义请参考原文。于是我们就可以将这个优化函数加入我们的原本的训练损失中,共同优化。
实验与分析
知识分解提升了单个任务性能
作者将文章中体到的知识分解应用在三大类,6个数据集上。这些数据集包括两个多标签分类的合成数据集dSprites和Shape3D,两个多分类数据集CIFAR10和ImageNet和两个多任务的密集预测数据集NYUDv2和PACAL。在一系列的实验中,本文方法在将网络知识进行分解的基础上,能稳定提升学生网络在该任务上的性能。
知识分解能进行任务解耦合
由于我们希望分解得到的原子网络是特征解耦的,于是我们对该性质进行两个方面的验证。如图4所示首先我们在常用的特征解耦数据集dSprites和Shape3D上比较通过不同迁移学习方式训练得到的网络特征的耦合程度。我们发现相比于一般的知识蒸馏和多任务学习方式,知识分解能自动找到特征中的的独立成分并加以分解。
其次,在一系列真实数据集中,我们通过比较分解或蒸馏得到子特征的相似度,来观察任务之间的相关性。我们观察到,有相似关系的任务有较大的特征相似度。本文提出的知识分解方法能有效的解耦合不同任务子网络之间的任务相关性。
知识分解得到的共用特征有利于迁移学习
将从ImageNet上分解得到的公共知识子网络CKN应用在下游的两个分类任务中,我们发现知识分解得到的共用特征能提升网络在下游任务的迁移性。相比于一般ImageNet预训练的模型,得到了显着的精度提升。
总结与规划
在本文中,作者介绍了一种新的知识转移任务,称为知识分解。给定一个预训练的教师网络,知识分解将其分解为任务解耦合的原子网络,每个网络都掌握从源模型继承的部分知识,并专注于特定任务。这一知识分解的框架为大模型的发展与拓展提出了新的可能性:与其训练一个超大规模的模型,我们也可以想办法找到一群小模型。他们既继承了大模型卓越的泛化性和多任务能力,也能有效的提升该系统的拓展性和可解释性。多个可重新组装的小模型也能带来极大部署便利与几何倍的提高迭代灵活性。
Be First to Comment