算法 自动采集列表(方法网格搜索随机搜索贝叶斯搜索的实现:系统架构BML自动超参搜索功能)

优采云 发布时间: 2022-03-29 01:09

  算法 自动采集列表(方法网格搜索随机搜索贝叶斯搜索的实现:系统架构BML自动超参搜索功能)

  方法

  网格搜索

  随机搜索

  贝叶斯搜索

  进化算法

  优势

  实现简单,效果取决于用户设置的网格间隔大小

  进行多参数联合搜索时,扩大了各参数的搜索范围,提高了搜索效率。

  搜索迭代次数少,效率高,通过贝叶斯算法在已有采样点的帮助下估计最优超参数。

  减少每轮迭代的训练时间,将计算资源集中在参数搜索上,通过重用具有良好历史表现的个体的预训练参数来加速收敛

  缺点

  消耗计算资源

  效果不稳定

  可能陷入局部最优

  因超参数导致模型结构变化等因素无法加载预训练参数时不适用

  自动超参数搜索方法的比较

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

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

  BML自动超参数搜索功能是基于自主研发的自动超参数搜索服务。服务操作流程如下图所示。它依托百度智能云CCE的计算能力,同时支持多个自动搜索任务。为了提供“好用”的自动超参数搜索服务,架构实现侧重于提高并发搜索效率和系统容错能力。

  

  一个超参数搜索任务包括以下过程:

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

  2.搜索服务向实验控制器提交任务,实验控制器初始化并创建试验管理模块,负责试验生命周期的管理。

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

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

  5.每次试用完成后,会将指标等信息上报给Exp Manager,用于上报给tuner并记录到db。

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

  动手实践:如何使用自动超参数搜索

  1.先点击

  创建一个脚本参数调整项目,如果你已经有项目,可以直接使用!目前,支持超参数搜索的项目类型包括图像分类(单标签和多标签)和对象检测。只需创建相应类型的项目。

  2.在工程中新建任务,配置任务的网络、数据、脚本,可以看到“配置超参数”选项。如果这里已经有超参数搜索结果,可以直接勾选“Existing hyperparameter search results”来使用。如果我们不是第一次使用它,只需选择“自动超参数搜索”即可。

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

  

  3.1 贝叶斯搜索的参数说明

  

  【初始点数】表示贝叶斯搜索初始化时参数点的个数。该算法根据这些参数信息推断出最优点,并填充在1-20的范围内。

  [最大并发] 在贝叶斯搜索中,同时实验的数量。并发越大,搜索效率越高。填写1-20的范围。不过这个并发也受限于页面底部选择的GPU数量,实际并发是两者中较小的一个。

  【超参数范围设置】:可以是默认配置,也可以是手动配置。默认情况下,百度的工程师已经帮我们设置了针对不同网络和GPU卡类型的基本可靠的搜索范围,可以直接使用。当然也可以手动配置,可以自定义每个超参数的范围。可以看到物体检测支持以下超参数自定义搜索范围:

  

  【最大搜索次数】:指可以组合并运行测试的最大超参数组数。当然也可能因为提前达到目标而停止,节省成本。

  【数据采样率】:使用超参数搜索时,会在训练前对原创数据集进行采样,以加快搜索速度。当数据集不大时,不建议采样,可能会影响最终效果。只有当数据量很大时才需要使用采样。

  【Highest mAP/Highest Accuracy Rate】:指每个人都期望模型达到的效果的mAP(物体检测)或准确率(图像分类)的值。当实验中达到这个值时,搜索将停止,以避免将来浪费搜索时间。.

  3.2 随机搜索参数说明

  随机搜索是最简单的,不需要额外配置算法相关的参数。其他常见选项与贝叶斯搜索具有相同的含义。你可以参考贝叶斯搜索。

  3.3 进化算法参数说明

  

  进化算法是一种更好的算法,应用该算法时需要更多的选项。

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

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

  【扰动比】:类似于染色体交叉的形式,在迭代中根据扰动比对种群中最好和最差的个体进行交叉。

  【随机初始化概率】:在扰动中,有一定概率初始化各个超参数。

  【种群中的个体数】:一个个体代表一个超参数设置,一个种群收录多个个体。

  其他选项与贝叶斯搜索含义相同,不再赘述。进化算法的配置需要对算法的原理有一定的了解。不懂算法的就用百度给出的默认值吧!

  4.超参数选项设置完成,最后选择GPU卡的类型和数量,以及最大搜索时间,就可以提交任务了!此处的默认搜索时间为 24 小时。毕竟超参数搜索会运行多次测试,需要很长时间,需要耐心。当然,你选择的 GPU 卡越多,并发测试的数量就越高。从提交任务到搜索 完成时间会更短,这是显而易见的

  5.任务提交后,一段时间后任务进入“超参搜索”状态,可以看到每个实验的进度,包括每个实验的状态、日志和准确率(mAP)

  

  

  

  

  6.超参数搜索训练完成后,可以在5个结果最好的实验中看到详细的评估结果,也可以用于后续的效果验证和发布。当然,如果在超参数搜索过程中对数据进行了采样,此时可以重新启动训练任务,使用本次搜索结果满意的超参数进行全数据训练,从而获得完整的模型效果数据。

  效果是硬道理:超参搜索效果提升高达20%+

  我们使用通用脚本参数调整和超参数搜索比较了图像分类、对象检测、实例分割和其他任务的效果。进化算法和使用贝叶斯搜索算法的超参数搜索的效果比较。图中左纵轴是模型的准确率,右纵轴是超参数搜索算法生效的比例。可以看出,在不同数据集上使用超参数搜索的效果有所提升。当默认参数准确率已经超过 85% 时,使用超参数搜索仍然可以提高 5% 左右。在默认参数效果不佳的情况下,超参数搜索的提升效果更为明显,可高达22%。

  

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线