历时两个多月的腾讯 QQ 浏览器 2021AI 算法大赛 [9] 已经告一段落,大赛自 2021 年 8 月 15 日启动以来,受到了全球 AI 算法爱好者及业界的广泛关注。整个赛程历时 68 天,覆盖全球 279 个城市,共吸引来自 276 个不同高校、企业和社会的算法精英 1853 人,组成 852 支队伍参赛,其中进入决赛的 TOP 20 队伍就涵盖了北京大学、清华大学、复旦大学、香港科技大学、中科院大学、华南理工大学、浙江大学、西安交大、中山大学、西安电子科技大学等顶尖院校,也有来自德国、加拿大等国际高校的学生,期间共完成了近 7000 次提交。
腾讯 QQ 浏览器为优秀参赛团队提供价值共计 41.7 万人民币的总奖池,除此之外每个赛道前 15 名队伍将会额外收获校招直通复试卡,前 8 名队伍可获得 QQ 浏览器实习生直通终面卡。首届 AI 算法大赛议题设置 “多模态视频相似度” 和“自动超参数优化”两大赛道,以下为 “自动超参数优化” 赛道冠军团队,来自北京大学的队伍 PKU-DAIR 的方案分享。(PKU-DAIR 队成员:姜淮钧、沈彧、黎洋)团队介绍PKU-DAIR 团队的三位成员来自北京大学崔斌教授 DAIR 实验室的 AutoML 自动化机器学习项目组。团队研究方向包括超参数优化(HPO)、神经网络结构搜索(NAS)、自动化机器学习零碎(AutoML System)等。团队不仅在国际顶级会议上发表了多篇论文,为提高 AutoML 技术的易用性与可用性,团队还相继在 GitHub 开源了黑盒优化零碎 OpenBox[1][7]、自动化机器学习零碎 MindWare[2][8]等。在本次自动化超参数优化赛道中,团队基于实验室自研开源黑盒优化零碎 OpenBox 进行调参。预赛时应用 OpenBox 零碎中的并行贝叶斯优化(Bayesian optimization)算法,决赛在预赛基础上加入早停机制。角逐代码已在 Github 上开源[3]。下面将进行详细介绍。
Rank 1st 角逐代码开源地址:https://github.com/PKU-DAIR/2021_AIAC_Task2_1st
黑盒优化零碎 OpenBox 地址:https://github.com/PKU-DAIR/open-box
预赛算法介绍赛题理解在信息流推荐业务场景中普遍存在模型或策略效果依赖于 “超参数” 的成绩,而“超参数 " 的设定往往依赖人工经验调参,不仅效率低下维护成本高,而且难以实现更优效果。因此,本次赛题以超参数优化为主题,从真实业务场景成绩出发,并基于脱敏后的数据集来评测各个参赛队伍的超参数优化算法。参赛者需要提交超参数生成的算法代码,算法每一轮需要提供一组超参数,裁判程序会返回超参数对应的 reward。参赛者的算法要求在限定的迭代轮次和时间内,找到 reward 尽可能大的一组超参数,最终按照找到的最大 reward 来计算排名。针对该赛题,优化器需要在每轮以同步并行方式推荐 5 个超参数设置装备摆设,共施行 20 轮推荐,即总共搜索 100 个超参数设置装备摆设。对每个超参数设置装备摆设均施行完整资源的考证,并且在角逐的成绩抽象中,不同超参数的考证时间相同。根据现有研究,贝叶斯优化是超参数优化(黑盒优化)成绩上 SOTA 的格式,而且角逐场景中的超参数空间维度不超过 6 维,并非超高维成绩,较适合贝叶斯优化格式,因此我们选定贝叶斯优化作为预赛的搜索算法。另外,成绩中所有的超参数均为连续型(离散浮点型)超参数,这决定了我们的超参数空间定义格式、贝叶斯优化代理模型以及优化器的选择,接下来也将分别进行介绍。算法核心技术——贝叶斯优化模块介绍贝叶斯优化简介超参数优化是典型的黑盒优化成绩,即对于目标函数(超参数 – 赞美函数),具体表达式或导数信息是不可知的,只能通过尝试输入获取输出来推测目标函数的内部情况。贝叶斯优化是解决黑盒优化成绩的一个迭代式框架,优化流程包括如下步骤:
应用代理模型(surrogate model)对已有观测历史数据(尝试过的超参数和对应的赞美)进行建模拟合;
应用采撷函数(acquisition function)评估搜索空间内的超参数,平衡探索与利用。对采撷函数施行优化,找到考证价值最大(使采撷函数值最大)的下一组超参数;
在目标函数上评估超参数,得到赞美;
将新评估的超参数和结果加入观测历史数据,重复以上步骤。
贝叶斯优化算法封装在 OpenBox 零碎中,代码实现的主要流程如下:
超参数空间定义首先,我们应用 ConfigSpace 库 [4] 定义超参数空间。由于赛题中的超参数均为离散浮点型,并可近似为等间距分布,因此应用 Int 型定义超参数(本质上和应用 Float 定义相同,但避免了赛题中超参数取值范围边缘可能出现不同间距的成绩)。在 ConfigSpace 库中,Float 型和 Int 型超参数均被视作连续型,在施行优化时会自动将参数范围缩放至[0, 1]。初始化格式贝叶斯优化需要一定数量的历史数据才能启动,我们应用了一种贪心法生成初始超参数设置装备摆设。该格式从随机候选设置装备摆设中,逐步挑选距离已有设置装备摆设最远的设置装备摆设加入初始设置装备摆设集合。应用该格式进行初始化能更好地探索超参数空间,经测试效果稍好于完全随机初始化格式。初始化设置装备摆设数设置为 10 个。该格式集成在 OpenBox 零碎中,可通过 init_strategy="random_explore_first" 调用。代理模型贝叶斯优化中的代理模型(surrogate model)有多种选择,包括高斯过程(Gaussian process)、概率随机森林(probabilistic random forest)、Tree Parzen Estimator(TPE)等,其中高斯过程在连续超参数空间上(如数学成绩)优化效果较好,概率随机森林在含有分类超参数的空间上优化效果较好。本次角逐只包含连续型超参数,经测试,高斯过程作为代理模型效果最好。高斯过程应用 OpenBox 零碎默认的 Matern5/2 核,核超参数通过最大似然 (maximize log likelihood) 得到。采撷函数与优化我们应用常用的 Expected Improvement(EI)函数作为贝叶斯优化的采撷函数(acquisition function)。在优化采撷函数时,我们应用零碎中的 "random_scipy" 优化器。该优化器在结合局部搜索与随机采样的基础上,应用 L-BFGS-B 算法对采撷函数施行优化。测试表明,相较于单纯应用随机采样,该格式能对采撷函数进行更为充分的优化,从而更大程度发挥 GP 模型和 EI 函数的潜能。其他传统的贝叶斯优化每轮只能推荐一个超参数设置装备摆设,因此设计并行推荐格式是一个值得考虑的成绩。我们尝试了零碎中实现的并行贝叶斯格式,包括 "median_imputation" 中位数插补法,即应用历史观察结果的中位数,填补并行 batch 中推荐设置装备摆设的功能,重新训练代理模型并得到下一个并行推荐设置装备摆设,以及 "local_penalization" 局部惩罚法,对并行已推荐设置装备摆设在采撷函数上施加局部惩罚,这两种格式的目的都是提高对超参数空间的探索性。不过经过测试,在本次角逐成绩上这些格式的效果不佳,最终我们采用多次优化采撷函数并去重的方式施行并行推荐,达到了较好的功能。此外,为增大贝叶斯优化的探索性,保证算法收敛,我们设置每次推荐时应用随机搜索的概率为 0.1。代码实现预赛代码仅需调用 OpenBox 零碎中的并行贝叶斯优化器 SyncBatchAdvisor,即可实现上述功能:
每轮施行推荐时,调用 advisor 的 get_suggestions 接口:
决赛算法介绍赛题理解决赛成绩在预赛的基础上,对每个超参数设置装备摆设提供 14 轮的多精度考证结果,供算法提前对功能可能不佳的设置装备摆设考证过程施行早停。同时,总体优化预算时间减半,最多只能全量考证 50 个超参数设置装备摆设,因此成绩难度大大增加。如何设计好的早停算法,如何利用多精度考证数据是优化器设计的关键。我们对本地公开的两个数据集进行了探索,发现了一些有趣的性质:
对于任意超参数设置装备摆设,其第 14 轮的赞美均值位于前 13 轮置信区间内的概率为 95%。
对于任意超参数设置装备摆设,其前 13 轮中任意一轮的均值比第 14 轮均值大的概率为 50%。
对于任意超参数设置装备摆设,其 14 轮的置信区间是不断减小的,但均值曲线是任意波动的。
我们也对两两超参数设置装备摆设间的关系进行了探索,比较了两两设置装备摆设间前 13 轮的均值大小关系和第 14 轮的均值大小关系的一致性,发现:
在所有超参数设置装备摆设之间,部分考证(1-13 轮)和全量考证(14 轮)均值大小关系一致的概率大于 95%。
在空间中最终功能前 1% 的超参数设置装备摆设之间,这种一致性大约在 50% 到 70% 之间。
下图为 data-30 空间中最终赞美排名前 2 的超参数和随机 8 个超参数的赞美 – 轮次关系:
图:data-30 搜索空间中 2 个最好设置装备摆设和 8 个随机设置装备摆设的赞美 – 轮数曲线,包含置信上界(蓝色)、均值(红色)、置信下界(绿色)曲线。我们在角逐开源代码仓库中提供了上述 “数据探索” 代码。上述数据探索结果表明,根据前 13 轮的置信区间,我们可以推测第 14 轮赞美均值的位置。利用前 13 轮的均值大小关系,我们可以估计第 14 轮最终均值的大小关系,但是由于数据噪音的存在,排名靠前的超参数设置装备摆设大小关系无法通过部分考证结果预估。由此我们设计了两种早停算法,分别是基于置信区间的早停和基于排名的早停,将在下一部分详细描述。过于激进的早停策略在角逐中仍然存在成绩。如果应用贝叶斯优化只对全量考证数据建模,由于总体优化预算时间很少,早停会减少可用于建模的数据量,使得模型不能得到充分训练。为解决这一成绩,我们引入插值格式,增加模型可训练数据。基于以上考量,最终我们的决赛算法在预赛贝叶斯优化算法的基础上,前期施行完整贝叶斯优化使模型得到较为充分的拟合,后期应用早停技术与插值法,加速超参数考证与搜索过程。下面将对早停模块做详细介绍。算法核心技术——早停模块介绍早停格式由于超参数设置装备摆设之间的部分考证轮次均值大小关系与最终均值大小关系存在一定的相关性,我们受异步多阶段早停算法 ASHA[5]的启发,设计了基于排名的早停算法:一个超参数如果到达需要判断早停的轮次,就计算其功能均值处于历史中同一轮次的超参数功能均值的排名,如果位于前 1/eta,则继续考证,否则施行早停。依据 95% 置信区间的含义,我们还设计了另一种早停格式,即应用置信区间判断当前超参数设置装备摆设是否仍有考证价值。如果某一时刻,当前考证超参数的置信区间上界差于已完全考证的功能前 10 名设置装备摆设的均值,则代表至少有 95% 的可能其最终均值差于前 10 名的设置装备摆设,故进行早停。应用本地数据考证,以空间中前 50 名的设置装备摆设对前 1000 名的设置装备摆设应用该格式进行早停,早停准确率在 99% 以上。经过测试,结合贝叶斯优化时两种格式效果近似,我们最终选择应用基于排名的早停格式。无论是哪种格式,都需要设计施行早停的轮次。早停越早越激进,节省的考证时间越多,但是得到的数据置信度越低,后续施行插值时训练的模型就越不准确。为了权衡早停带来的时间收益和高精度考证带来的数据收益,我们选择只在第 7 轮(总共 14 轮)时判断每个设置装备摆设是否应当早停。早停判断准则依据 eta=2 的 ASHA 算法,即如果当前设置装备摆设均值功能处于已考证设置装备摆设第 7 轮的后 50%,就进行早停。以下代码展示了基于排名的早停格式。首先统计各个早停轮次下已考证设置装备摆设的功能并进行排序(角逐中我们应用早停轮次为第 7 轮),然后判断当前设置装备摆设是否处于前 1/eta(角逐中为前 1/2),否则施行早停:
基于置信区间的早停格式可见我们的角逐开源代码库。数据建模格式对于贝叶斯优化的数据建模,我们尝试了多精度集成代理模型 MFES-HB[6]拟合多精度观测数据。该格式虽然能应对低精度噪声场景,但在决赛极其有限的优化时间限制内,可能无法快速排除噪声的干扰,导致效果不如仅应用最高精度数据建模。我们最终选择只利用最高精度数据进行建模。为了弥补早停造成的高精度数据损失,我们引入插值格式,增加用于模型训练的数据量,具体来说,就是对早停的设置装备摆设,设置一个完整考证时的功能均值,插入优化历史施行建模。对于插入值的选取,我们应用已完整考证设置装备摆设的最终均值中位数进行插值。以下为插值代码示例:
总结本文介绍了自动化超参数优化赛道的冠军方案,包括贝叶斯优化算法和早停格式。很幸运能够拿到此次角逐的冠军。感谢赛事主办方为我们提供了富有现实意义的角逐场景,让我们积累了宝贵的角逐经验和超参数优化实际经验。希望我们的分享能够对大家有所帮助。引用[1] 黑盒优化零碎 OpenBoxhttps://github.com/PKU-DAIR/open-box[2] 自动化机器学习零碎 MindWarehttps://github.com/PKU-DAIR/mindware[3] 角逐冠军源码https://github.com/PKU-DAIR/2021_AIAC_Task2_1st[4] https://github.com/automl/ConfigSpace[5] Liam Li, Kevin Jamieson, Afshin Rostamizadeh, Ekaterina Gonina, Jonathan Bentzur, Moritz Hardt, Benjamin Recht, and Ameet Talwalkar. 2020. A System for Massively Parallel Hyperparameter Tuning. Proceedings of Machine Learning and Systems 2 (2020), 230–246.[6] Yang Li, Yu Shen, Jiawei Jiang, Jinyang Gao, Ce Zhang, and Bin Cui. 2021. MFES-HB: Efficient Hyperband with Multi-Fidelity Quality Measurements. In Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 35. 8491–8500.[7] Yang Li, Yu Shen, Wentao Zhang, Yuanwei Chen, Huaijun Jiang, Mingchao Liu, Jiawei Jiang, Jinyang Gao, Wentao Wu, Zhi Yang, Ce Zhang, and Bin Cui. 2021. OpenBox: A Generalized Black-box Optimization Service. Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery & Data Mining (2021).[8] Yang Li, Yu Shen, Wentao Zhang, Jiawei Jiang, Bolin Ding, Yaliang Li, Jingren Zhou, Zhi Yang, Wentao Wu, Ce Zhang, and Bin Cui. 2021. VolcanoML: Speeding up End-to-End AutoML via Scalable Search Space Decomposition. Proceedings of VLDB Endowment 14 (2021), 2167–2176.[9]QQ 浏览器 2021AI 算法大赛https://algo.browser.qq.com/
原创文章,作者:机器之心,如若转载,请注明出处:https://www.iaiol.com/news/31423