在人工智能领域,算法工程师在训练神经网络模型的过程中,完成网络构建和准备好训练数据后,往往需要对模型进行各种参数优化,以获得更好的模型效果。但调参其实并不简单,背后往往是通宵达旦的参数调试与效果验证,并需要做大量的实验,不仅耗时还耗费大量算力。
这个时候,往往想尝试自动超参搜索的算法工程师,大多会开始担心算力要求所带来的额外训练成本。
莫慌!百度全功能AI开发平台BML带着免费算力额度与自动超参搜索能力来了!
先来介绍百度最近全新升级的BML,何方神圣?全功能AI开发平台BML(BaiduMachineLearning),是为企业和个人开发者提供机器学习和深度学习的一站式AI开发服务,并提供高性价比的算力资源,助力企业快速构建高精度AI应用。BML提供了从数据采集、数据清洗、数据标注、智能标注与多人标注、模型训练生产到模型管理、云端及离线推理服务管理等AI开发过程的全生命周期管理功能。BML内置百度超大规模预训练模型,只需少量数据即可获得高精度模型效果。目前,BML已经支持脚本调参、Notebook与自定义作业这三种开发建模方式,灵活匹配企业开发者的开发习惯。在目前的脚本调参使用流程中,BML已经预设了模型超参数,但由于用户数据集内容丰富多样,预设的超参数很难在所有的数据集上得到很好的训练效果。用户可以自行调整超参数,但是手动调参十分耗费人力。为了减轻用户在调参上的精力投入,BML的研发大佬们日夜奋战,为用户上线了自动超参搜索的功能,帮助用户自动搜索效果较优的超参组合,省去调参的烦恼。话不多说,进入本次正题,百度BML的自动超参搜索技术有哪些亮点?提供多种搜索算法所谓“超参”,有别于模型网络结构内部各层的参数,是指需要人为调整,通过人为经验设置来提高模型效果的参数,常见的超参包括学习率(learning_rate)、批样本数量(batch_size)等。在超参搜索的过程中,由于模型复杂、计算成本很高,且每个超参数都有较大的取值范围,导致搜索空间十分庞大,因此我们需要有“自动”超参搜索。自动超参搜索相比于人工调参,主要是省去了人工观察实验结果并调整参数再试验的过程,自动超参搜索把这个步骤用各种搜索算法来代替。BML提供的搜索算法有:随机搜索:顾名思义是在参数变量的变化区间中随机采样参数组合成候选集,应用候选集进行训练和效果对比。随机搜索是普适的效率较高的搜索方法,通常作为基线标准,适用于对效率要求较高的情况,但不能保证一定能搜索到最佳的超参。
贝叶斯搜索:在搜索空间中随机选取初始超参数点,然后根据已有超参对应的指标结果拟合概率模型,通过概率模型推测最佳超参点,接着再试验得到这些超参点的结果。如此反复优化,再有限试验次数中搜索出合适的超参数。基于模型的序贯优化方法(SMBO,SequentialModel-BasedOptimization)是贝叶斯搜索的一种范式,包括两个部分:代理模型(surrogatemodel)和采集函数(acquisitionfunction)。根据代理模型和采集函数的不同,贝叶斯搜索方法也有许多实现形式,其中TPE(Tree-structuredParzenEstimator)是一种全局探索能力较佳的方法,采用核密度估计方法(KDE,KernelDensityEstimation)生成代理模型,采用EI(ExpectedImprovement)作为其采集函数生成新采样点。
进化算法:进化算法是一种基于种群概念的超参搜索策略,把超参配置视为一个种群,并行优化多个种群并在种群内部进行优胜劣汰的筛选,最终输出最佳模型。这个过程(如下图所示)是从遗传算法获得的灵感,种群的初始化采用随机的方式生成,个体的优胜劣汰具体指利用(exploit)和探索(explore)两个步骤,不仅可能会从表现较好的个体中复制参数,它还能通过随机扰动修正当前的值而探索新的超参数组合。
图片来源: