点击左上方蓝字关注我们
CVPR作为计算机视觉和模式识别领域的世界级学术顶会,不仅是学者展示前沿科技成果的平台,也是学界探索学术应用的平台。今年,百度联合悉尼科技大学和美国北卡罗来大学举办了CVPR 2021 NAS workshop,并在CVPR 2021举办了首届NAS国际竞赛。作为人工智能技术领域的领军者与深耕者,百度在NAS领域拥有强大的技术优势和深厚的技术积累。
目前,百度在NAS领域已原创性地提出了GP-NAS(CVPR)和SA-NAS(IJCV)等多个AutoDL算法,孵化了PaddleSlim模型压缩平台,并使用自研的AutoDL技术先后七次在CVPR与ECCV等国际比赛中夺得世界第一。通过此次竞赛,百度期望与全球开发者就NAS技术展开广泛交流与学习,积极分享技术成果与心得。
本次比赛吸引了全球59个国家和地区的开发者,有超过600支队伍参赛,包括清华、北大、中科院、上海交大、华中科大、剑桥、牛津、加州大学伯克利分校等国内外知名高校的师生,还包括三星、快手和海康等知名企业的工程师。本次比赛征集到众多优质的NAS解决方案,其中清华大学基于飞桨的NAS技术方案已在AI Studio和GitHub平台开源,下文将对该方案展开详细介绍。
PaddleSlim 是百度飞桨 (PaddlePaddle) 联合视觉技术部发布的模型压缩工具库,除了支持传统的网络剪枝、参数量化和知识蒸馏等方法外,还可以通过NAS+蒸馏+量化一站式模型压缩产出业界领先的小模型。
三赛道并行
探索NAS技术革新之道
早期的神经网络结构搜索技术采用基于强化学习的方法,需要将每个神经网络在训练数据上都训练到收敛,然后评估其效果。该方案虽然获得了超过人工设计的结果,但需要依赖大量的算力资源,很难在实际业务中广泛应用。因此,业界开始研究使用基于可微分框架和超网络的轻量级搜索算法,但相关算法在灵活性和搜索效果上还存在较大改进空间。本次大赛从实际研究中的关键问题出发,共设置了三个赛道,其中赛道一和赛道二的排名榜单已在AI Studio比赛页发布。
赛道一:超网络一致性track
由于算法的高效性,OneshotNAS逐渐成为研究人员的研究热点。通过参数共享的方式,研究人员不再需要独立训练并评估每个子网络的性能,只需训练一个大的超网络,然后通过继承超网络参数的方式就可快速评估每个子网络的性能,从而高效地进行模型结构自动搜索。然而,独立训练子网络的性能及性能排序与子网络继承超网络参数的性能及性能排序之间仍有很大偏差,从而导致搜索得到的结构性能差,本赛道旨在解决超网络一致性问题。
赛道二:模型性能预测track
在不训练的情况下,准确预测任意模型的结构性能非常重要,不仅有助于分析模型结构的性能优劣,而且能够预测出满足任意硬件延时约束的最优模型结构。本赛道提供了部分(小样本)模型结构与模型精度之间对应关系的bench mark,参赛选手既可以通过黑盒的方式直接训练,也可以使用白盒的方式进行参数估计,最终预测泛化性能最好的模型将夺得冠军。
赛道三:未知数据track
NAS可以在CIFAR-10和ImageNet等数据集上搜索到优秀模型结构,然而很少有人关注其在“真实场景”中的实战情况。本质上,我们希望考察NAS算法在几乎没有时间进行超参调优情况下“开箱即用”的效果。为了探索此问题,本赛道旨在评估NAS算法在未知任务和数据集上的效果,同时专门消除了外部影响,如自定义预训练方案、超参数优化和数据增强策略等。参赛选手需提供一个NAS算法,在给定未知任务和数据集时,输出该场景的最优模型。
清华大学飞桨方案详细讲解
清华大学朱文武教授的Meta_Learners团队使用飞桨PaddlePaddle深度学习平台,在赛道一中获得了0.8324的好成绩,具体方案如下:
问题分解
针对one-shot神经网络通道数搜索问题,该团队建立了一套统一的解决框架,其中包含四个关键部分(如图1)——超网络构建、架构和数据采样、超网络参数优化和子网络评估。超网络构建部分负责使用参数共享机制来构建统一的超网络;数据和架构采样部分负责从搜索空间和训练样本空间中采样每一轮优化所需的架构和数据;超网络参数优化负责利用采样出的架构和样本针对超网络进行参数更新;子网络评估旨在利用训练好的超网络来评估空间中每个网络的效果。
图1 one-shot神经网络通道数搜索框架图
超网络构建
针对赛题所给的ResNet20搜索空间,每个架构包含三种不同的操作——3x3卷积操作(conv)、批量归一化操作(batch norm)和全连接操作(fc)。对于通道数搜索任务,要考虑的是如何共享不同输入输出维度的相同操作。对于卷积操作,针对输入输出维度,一共有四种可以考虑的参数共享方式:
完全独立(Independent):对于同一层内不同输入输出维度的卷积操作,使用了完全独立的参数,即每个卷积操作拥有独立的参数 ;
输入共享(Front):对于拥有相同输入维度的卷积操作,使用同一组参数进行参数共享,每个卷积操作的参数为;
输出共享(End):和输入共享的逻辑相同,只不过针对所有输出维度一致的卷积操作使用相同的参数进行共享,每个卷积操作的参数为;
全共享(Full):同一层的所有卷积操作共享相同的一组参数,每个卷积操作的参数为。
同样的,对于批量归一化操作,按照其前面所连接的卷积层输入输出维度来区分,仍然有四种不同的权重共享方式:完全独立、输入共享、输出共享、全共享。而对于全连接层,由于只出现在模型的最后一层,其输出维度永远为100(cifar-100数据集的类别数),所以只需要考虑两种共享方式:
完全独立(Independent):每个输入不一样的FC层使用完全独立的参数;
全共享(Full):所有FC层使用同一组参数。
图2 不同种类权重共享示意图
数据和架构采样
对于数据采样,为了保持和子网络的训练方式一致,采用随机采样的方式从训练样本集中随机抽取大小为128的数据样本。对于架构采样,探究了如下两种采样策略:
均匀采样:从每层的通道数选择中均匀地采样架构;
公平采样:从每层的通道数选择中不放回地抽取每个架构,如果通道数候选集已取完,则重置候选集。这样做的目的是每经过L次采样(L为通道数可选个数),保证每个通道数选择都能够精准地被采样1次。
超网络参数优化
对于参数优化策略,探究了如下三种方式:
朴素优化:直接使用交叉熵损失来进行参数优化;
固定教师的知识蒸馏:使用训练好的空间最大网络来指导子模型,使用KL散度损失优化;
动态教师的知识蒸馏:教师和学生同时训练,教师使用交叉熵损失,学生使用KL散度损失。通过参考相关文献,还使用了三明治法则来进行参数更新。
子网络评估
针对每一个子网络,首先将超网络中对应的参数拷贝入子网络。之后,测量它在测试集上的交叉熵损失,并以此来作为子网络的效果评估代理。在每个数据批次上,对于批量归一化操作中的动态均值和方差,直接使用当前数据批次的均值和方差作为估算,来进一步提升超网络的一致性。
实验与结论
从最基本的模块设定出发,探究模块中不同策略对超网络一致性的影响。基线模块设定为:全共享超网络(包括卷积、批量归一化、全连接)+ 公平采样 + 朴素优化。
对于超网络构建,探究了超网络的不同构建方式对超网络一致性的影响。
从表格中可以发现,当卷积层使用全共享机制以外的其他方式时,超网络的一致性均会降低,而批量归一化操作和全连接操作却有着相反的结论。最终,全共享卷积、输出维度共享的批量归一化以及完全独立的全连接达到了最好的一致性指标,相比基线模块设定提升了将近0.03的肯德尔系数。
对于数据架构采样,对比了均匀采样和公平采样两种架构采样方式。
从表格中可以发现,公平采样方式得到的网络一致性更稳定,相比均匀采样也有一定的提升。
对于超网络参数优化,首先对比了固定教师的知识蒸馏和朴素优化之间的优劣,这两种方式之间唯一的差异在于所用的损失函数形式不同。
从表格中可以发现,对于神经网络通道数搜索问题,朴素优化的方式要优于固定教师的知识蒸馏。而对于动态教师,探究了同一更新轮次中不同架构数对一致性的影响。
其中same batch代表对同一更新轮次中所有架构在同一个数据批次上求取的损失。从图中可以发现,动态教师的蒸馏策略能显著提升超网络一致性。而对于same batch策略,关闭后效果明显下降。
经过对上述方法的分析,依次选择框架中表现最好的各个策略的组成完成超网络构建与训练最佳实践,并对其与原有基线模型的效果进行了对比。
从表格中可以发现,最佳算法相比原有的最佳极限模型提升了近0.06,在最终的比赛榜单中,该团队也以0.8324的成绩排名第三。
以上就是Meta_Learners队伍技术方案的核心内容。相关的模型代码已在GitHub开源,赶快为它献上你的star吧:
https://github.com/MetaLearners/CVPR2021-NAS-competition-Track-1-4th-solution/blob/main/readme.md
参考文献
[1]Guo, Zichao, et al. “Single Path One-Shot Neural Architecture Search with Uniform Sampling.” European Conference on Computer Vision, 2019, pp. 544–560.
[2]Chu, Xiangxiang, et al. “FairNAS: Rethinking Evaluation Fairness of Weight Sharing Neural Architecture Search.” ArXiv Preprint ArXiv:1907.01845, 2019.
[3]Cai, Han, et al. “Once for All: Train One Network and Specialize It for Efficient Deployment.” ICLR 2020 : Eighth International Conference on Learning Representations, 2020.
[4]Yu, Jiahui, and Thomas Huang. “AutoSlim: Towards One-Shot Architecture Search for Channel Numbers.” ArXiv Preprint ArXiv:1903.11728, 2019.
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体,是中国首个开源最早、技术领先的产业级深度学习平台。飞桨企业版针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。
END