干货速递,自动超参搜索技术原理揭秘与实战攻略!

2023-11-01 14:10

本文主要是介绍干货速递,自动超参搜索技术原理揭秘与实战攻略!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击左上方蓝字关注我们

在人工智能领域,算法工程师在训练神经网络模型的过程中,在完成网络构建和训练数据准备好后,往往需要对模型进行各种参数优化,以获得更好的模型效果。但调参其实并不简单,背后往往是通宵达旦的参数调试与效果验证,并需要做大量的实验,不仅耗时也耗费大量算力。

这个时候,往往想尝试自动超参搜索,但又开始担心算力要求所带来的额外训练成本。

莫慌!百度全功能AI开发平台BML带着免费算力额度与自动超参搜索能力来了!

先来介绍百度最近全新升级的BML,何方神圣?

全功能AI开发平台BML(Baidu Machine Learning) ,是为企业和个人开发者提供机器学习和深度学习一站式AI开发服务,并提供高性价比的算力资源,助力企业快速构建高精度AI应用。BML提供了从数据采集、数据清洗、数据标注、智能标注与多人标注、模型训练生产模型管理、云端及离线推理服务管理等AI开发过程的全生命周期管理功能。

BML内置百度超大规模预训练模型,只需少量数据即可获得高精度模型效果。目前,BML已经支持脚本调参、Notebook自定义作业这三种开发建模方式,灵活匹配企业开发者的开发习惯。

在目前的脚本调参使用流程中,BML已经预设了模型超参数,但由于用户数据集内容丰富多样,预设的超参数很难在所有的数据集上得到很好的训练效果。用户可以自行调整超参数,但是手动调参十分耗费人力。为了减轻用户在调参上的精力投入, BML的研发大佬们日夜奋战,为用户上线了自动超参搜索的功能,帮助用户自动搜索效果较优的超参组合,省去调参的烦恼

BML的自动超参搜索

技术亮点


提供多种搜索算法

所谓“超参”,有别于模型网络结构内部各层的参数,是指需要人为调整,通过人为经验设置来提高模型效果的参数,常见的超参包括学习率(learning_rate)、批样本数量(batch_size)等。在超参搜索的过程中,由于模型复杂、计算成本很高,且每个超参数都有较大的取值范围,导致搜索空间十分庞大,因此我们需要有“自动”超参搜索。

自动超参搜索相比于人工调参,主要是省去了人工观察实验结果并调整参数再试验的过程,自动超参搜索把这个步骤用各种搜索算法来代替。

BML提供的搜索算法有:

1. 随机搜索

顾名思义是在参数变量的变化区间中随机采样参数组合成候选集,应用候选集进行训练和效果对比。随机搜索是普适的效率较高的搜索方法,通常作为基线标准,适用于对效率要求较高的情况,但不能保证一定能搜索到最佳的超参。

2. 贝叶斯搜索

在搜索空间中随机选取初始超参数点,然后根据已有超参对应的指标结果拟合概率模型,通过概率模型推测最佳超参点,接着再试验得到这些超参点的结果。如此反复优化,再有限试验次数中搜索出合适的超参数。基于模型的序贯优化方法(SMBO, Sequential Model-Based Optimization)是贝叶斯搜索的一种范式,包括两个部分: 代理模型(surrogate model) 和 采集函数(acquisition function)。根据代理模型和采集函数的不同,贝叶斯搜索方法也有许多实现形式,其中TPE(Tree-structured Parzen Estimator)是一种全局探索能力较佳的方法,采用核密度估计方法(KDE, Kernel Density Estimation)生成代理模型,采用EI(Expected Improvement)作为其采集函数生成新采样点。

3. 进化算法

进化算法是一种基于种群概念的超参搜索策略,把超参配置视为一个种群,并行优化多个种群并在种群内部进行优胜劣汰的筛选,最终输出最佳模型。这个过程(如下图所示)是从遗传算法获得的灵感,种群的初始化采用随机的方式生成,个体的优胜劣汰具体指利用(exploit)和探索(explore)两个步骤,不仅可能会从表现较好的个体中复制参数,它还能通过随机扰动修正当前的值而探索新的超参数组合。

图片来源:

https://arxiv.org/pdf/1711.09846v1.pdf

百度创新提出了随机微分方程无梯度优化算法PSHE2,采用哈密尔顿动力系统搜索参数空间中“势能”最低的点以替代随机扰动,加速迭代收敛。超参搜索过程中想要求得最优解就是要找到更新超参数组合的方法,即如何更新超参数,才能让算法更快更好的收敛到最优解。PSHE2算法根据超参数本身历史的最优,在一定随机扰动的情况下决定下一步的更新方向。过程如图所示。

图片来源:

https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.5/docs/tutorial/autofinetune.md

上表归纳了一下这些搜索方法的优缺点。总之,网格搜索和随机搜索实现上比较简单,不利用先验知识选择下一组超参数,其中随机搜索效率相对较高。贝叶斯搜索和进化算法利需要用前一轮的信息进行迭代搜索,搜索效率明显提升。


BML自动超参搜索的实现:系统架构

BML自动超参搜索功能基于自研自动超参搜索服务,服务运行过程如下图所示,依靠百度智能云CCE算力,支持多自动搜索任务并发。为了提供一个“好用”的自动超参搜索服务,架构实现时在并发搜索效率提升和系统容错方面着重进行了考虑。

一次超参搜索任务包含以下流程:

  1. 业务平台把超参搜索任务的用户配置信息提交到超参搜索服务,会创建一次搜索实验(Experiment),并记录到db中。

  2. 搜索服务把任务提交到Experiment controller, 由controller初始化创建Trial管理模块,并负责Experiment生命周期的管理。

  3. Trial是具体的训练试验,一个Experiment会产生多个Trial来探索不同超参数组合的最终效果。Tuner是超参生成的模块,会根据选择的超参搜索算法,推荐下一个Trial所使用的超参值。在Trial管理模块中,Exp Manager会负责生成若干Trial, 向Tuner请求具体的试验超参数,并向Trial Scheduler发送Trial任务信息。

  4. Trial Scheduler会与底层资源交互实际启动Trial。Trial Scheduler会管理所有Trial的生命周期。

  5. 每个Trial运行完成后,会向Exp Manager汇报指标等信息,用于汇报给tuner并记录到db。

BML自动超参搜索主要有以下特性:

  • 简单易用:相比于同类产品的复杂配置,BML在为用户提供必须的开放配置项的前提下,尽可能减少超参配置的繁琐程度,凡是可以自动化的工作均不对用户可见。

  • 模型丰富:与脚本调参上提供的丰富的模型打通,可以直接配置化完成相应任务的搜索,甚至不用写代码!

  • 容错机制:自动超参搜索任务具有模型训练次数多、任务整体运行时间长的特点,受显存资源限制,有些搜索出的超参数无法成功运行。兼顾搜索效果和可用产出,增设模型训练失败次数阈值,把Experiment和Trial这样多任务的复杂状态管理分拆到各层模块中,尽可能为用户提供搜索出的可用结果。

  • 支持早停与采样:搜索框架内部支持自动早停,当达到设定的预期结果时即可自动停止;同时也支持在界面上手动提前停止,减少用户的等待时间,避免不必要的算力消耗。支持用户选择大数据集时自动进行采样,减少超参搜索训练耗时,以尽快搜索出合适的超参为上。

  • 高效分布式智能搜索:深度学习模型的训练时间往往较长,对于大规模数据集或者复杂模型的搜索任务,单机串行的搜索方式几乎不可用。我们注意到有的搜索算法中每次试验是可以独立进行训练的(如网格搜索、随机搜索),可以直接对所有试验并行化;有的搜索算法虽然本质基于迭代,但每个迭代中的试验运行仍然是相互独立的,因此我们可以在迭代内部进行并行化搜索。BML内部实现了智能调度系统,根据不同的算法类型,采用不同的并发策略,可以大幅度降低整体搜索时间。

上手实操:自动超参搜索使用攻略

  1. 首先点击 

    https://ai.baidu.com/bml/app/project/script/list 创建一个脚本调参项目,如果已经有项目了,直接用就可以!目前支持超参搜索的项目类型有图像分类(单标签和多标签)及物体检测,创建对应类型的项目就可以了

  2. 在项目里新建任务,配置好任务的网络、数据、脚本之后,就可以看到“配置超参数”的选项了。这里如果已经有超参搜索的结果,可以直接勾选“已有超参搜索结果”来使用,我们第一次使用还没有,就直接选择“自动超参搜索”。

  3. 目前BML支持了三种超参搜索算法,如图,分别是贝叶斯搜索随机搜索进化算法,可以根据自己需要选择一种来搜索。具体配置项说明可以参考技术文档。

1. 贝叶斯搜索的参数说明

初始点数量】代表贝叶斯搜索中,初始化时参数点的数量,该算法基于这些参数信息推测最优点 ,填写范围1-20。

【最大并发量】贝叶斯搜索中,同时进行试验的数量,并发量越大,搜索效率越高,填写范围1-20。不过这个并发量也会受限于页面最下方选择的GPU数量,实际并发量是二者的较小值。

 【超参范围设置】:可以是默认配置,也可以手动配置。默认的话百度的工程师们已经帮我们对不同网络、GPU卡型设置了一个基本靠谱的搜索范围,直接用就可以。当然也可以手动配置,可以自定义各个超参的范围,可以看到物体检测支持以下这些超参自定义搜索范围:

【最大搜索次数】:是指最多组合出多少组超参并跑试验,当然有可能会因为提前达到目标而停止,节约费用。

【数据采样比例】:使用超参搜索时,会对原始数据集进行采样后再训练,加快搜索速度。当数据集并不大时,不推荐采样哟,可能会影响最终效果,只有大数据量时才有使用采样的必要。

【最高mAP/最高精确率】:是指大家期望模型效果可以达到的mAP(物体检测)或准确率(图像分类)的值,当试验中达到这个值了搜索就会停止,避免后续浪费搜索时间。

2. 随机搜索参数说明

随机搜索最简单啦,就不需要再额外配置算法相关的参数了,其它公用的选项和贝叶斯搜索的含义是一样的,参考贝叶斯搜索即可。

3. 进化算法参数说明
       

进化算法是一种效果较好的算法,应用此算法时也需要进行较多的选项设置:

  • 【迭代轮数】:进化算法运行中迭代的轮数,范围5-50。

  • 【扰动间隔】:进化算法每隔几个epoch就会进行随机扰动,利用随机因素防止算法结果收敛于局部最优解。

  • 【扰动比例】:类似于染色体交叉的形式,迭代中一个种群内最好与最坏的个体依据扰动比例进行交叉。

  • 【随机初始化概率】:在扰动中,有一定概率对个体的超参数进行初始化。

  • 【种群个体数量】:一个个体代表一种超参数设置,一个种群中包含多个个体。

其它选项和贝叶斯搜索的含义一致,也不重复了。进化算法的配置需要对算法的原理有一定的了解,如果对算法不明白的,就直接用百度给的默认值吧!

4. 超参的选项设置完成了,最后选择GPU卡类型和数量,以及最大搜索时间,就可以提交任务啦!这里默认的搜索时间是24小时,毕竟超参搜索会运行多次试验,时间会比较长,需要耐心等待,当然如果选的GPU卡数越多,并发试验数就越高,从提交任务到搜索完成的耗时就会变少,这是显而易见的

5. 任务提交之后,过一会当任务进入“超参搜索中”的状态时,就可以看到各个试验的进度了,包括各个试验的状态、日志和准确率(mAP)

6. 超参搜索训练完成后,效果最优的5次试验可以看到详细的评估结果,也能用于后续的效果校验和发布。当然,如果在超参搜索时对数据进行了采样,这时候可以重新发起一次训练任务,用这次搜索出来效果满意的超参数进行全量数据训练,从而获得完整数据的模型效果


效果才是硬道理

超参搜索效果提升高达20%+

我们对比了图像分类、物体检测、实例分割等任务在使用普通脚本调参和超参搜索的效果情况,以下是5个不同数据集在BML平台上分别使用默认脚本调参参数、超参搜索使用进化算法、超参搜索使用贝叶斯搜索算法的效果对比。图中左边纵轴为模型的准确率,右边纵轴为超参搜索算法在效果上提升的比例。可以看到在不同数据集上使用超参搜索后效果均有提升,在默认参数精度已经超过85%的情况下,使用超参搜索仍能提升约5%,在默认参数效果较差的情况下,超参搜索的提升效果更为明显,可高达22%。

在常规操作下,可用的深度学习自动超参搜索由于需要集群计算资源,往往被认为只有大公司才能配置,普通开发者难以上手尝试。通过使用全功能AI开发平台BML,预算有限也有机会用上自动超参搜索,开发效率瞬间搭上火箭速度,摆脱人力“炼丹”的束缚。BML新用户现在还提供100小时免费P4显卡算力,羊毛在向你招手,快来薅一把!

如在使用过程中有问题,可加入QQ群进行交流:868826008。

如果您想详细了解更多飞桨的相关内容,请参阅以下文档。

·BML官网地址·

https://ai.baidu.com/bml/

·飞桨官网地址·

https://www.paddlepaddle.org.cn/

微信号 : PaddleOpenSource

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件,持续开源核心能力,为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台,针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。

这篇关于干货速递,自动超参搜索技术原理揭秘与实战攻略!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323534

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业