浏览器|腾讯QQ浏览器2021AI算法大赛,北大冠军团队经验分享,附详细代码( 四 )


此外 , 为增大贝叶斯优化的探索性 , 保证算法收敛 , 我们设置每次推荐时使用随机搜索的概率为 0.1 。
代码实现
初赛代码仅需调用 OpenBox 系统中的并行贝叶斯优化器 SyncBatchAdvisor , 即可实现上述功能:
from openbox import SyncBatchAdvisor
【浏览器|腾讯QQ浏览器2021AI算法大赛,北大冠军团队经验分享,附详细代码】self.advisor = SyncBatchAdvisor(
config_space=self.config_space,
batch_size=5,
batch_strategy='reoptimization',
initial_trials=10,
init_strategy='random_explore_first',
rand_prob=0.1,
surrogate_type='gp',
acq_type='ei',
acq_optimizer_type='random_scipy',
task_id='thpo',
random_state=47,

浏览器|腾讯QQ浏览器2021AI算法大赛,北大冠军团队经验分享,附详细代码
文章图片

代码以图示为准
每轮执行推荐时 , 调用 advisor 的 get_suggestions 接口:
def suggest(self, suggestion_history, n_suggestions):
history_container = self.parse_suggestion_history(suggestion_history)
next_configs = self.advisor.get_suggestions(n_suggestions, history_container)
next_suggestions = [self.convert_config_to_parameter(conf) for conf in next_configs]
return next_suggestions

浏览器|腾讯QQ浏览器2021AI算法大赛,北大冠军团队经验分享,附详细代码
文章图片

代码以图示为准
决赛算法介绍
赛题理解
决赛问题在初赛的基础上 , 对每个超参数配置提供 14 轮的多精度验证结果 , 供算法提前对性能可能不佳的配置验证过程执行早停 。 同时 , 总体优化预算时间减半 , 最多只能全量验证 50 个超参数配置 , 因此问题难度大大增加 。 如何设计好的早停算法 , 如何利用多精度验证数据是优化器设计的关键 。
我们对本地公开的两个数据集进行了探索 , 发现了一些有趣的性质:

  • 对于任意超参数配置 , 其第 14 轮的奖励均值位于前 13 轮置信区间内的概率为 95% 。
  • 对于任意超参数配置 , 其前 13 轮中任意一轮的均值比第 14 轮均值大的概率为 50% 。
  • 对于任意超参数配置 , 其 14 轮的置信区间是不断减小的 , 但均值曲线是任意波动的 。
我们也对两两超参数配置间的关系进行了探索 , 比较了两两配置间前 13 轮的均值大小关系和第 14 轮的均值大小关系的一致性 , 发现: