以下代码展示了基于排名的早停方法 。 首先统计各个早停轮次下已验证配置的性能并进行排序(比赛中我们使用早停轮次为第 7 轮) , 然后判断当前配置是否处于前 1/eta(比赛中为前 1/2) , 否则执行早停:
# 基于排名的早停方法 , prune_eta=2 , prune_iters=[7]
def prune_mean_rank(self, iteration_number, running_suggestions, suggestion_history):
# 统计早停阶段上已验证配置的性能并排序
bracket = dict()
for n_iteration in self.hps['prune_iters']:
bracket[n_iteration] = list()
for suggestion in running_suggestions + suggestion_history:
n_history = len(suggestion['reward'])
for n_iteration in self.hps['prune_iters']:
if n_history >= n_iteration:
bracket[n_iteration].append(suggestion['reward'][n_iteration - 1]['value'])
for n_iteration in self.hps['prune_iters']:
bracket[n_iteration].sort(reverse=True) # maximize
# 依据当前配置性能排名 , 决定是否早停
stop_list = [False] * len(running_suggestions)
for i, suggestion in enumerate(running_suggestions):
n_history = len(suggestion['reward'])
if n_history == CONFIDENCE_N_ITERATION:
# 当前配置已完整验证 , 无需早停
print('full observation. pass', i)
continue
if n_history not in self.hps['prune_iters']:
# 当前配置不处于需要早停的阶段
print('n_history: %d not in prune_iters: %s. pass %d.'
% (n_history, self.hps['prune_iters'], i))
continue
rank = bracket[n_history].index(suggestion['reward'][-1]['value'])
total_cnt = len(bracket[n_history])
# 判断当前配置性能是否处于前1/eta , 否则早停
if rank / total_cnt >= 1 / self.hps['prune_eta']:
print('n_history: %d, rank: %d/%d, eta: 1/%s. PRUNE %d!'
% (n_history, rank, total_cnt, self.hps['prune_eta'], i))
stop_list[i] = True
else:
print('n_history: %d, rank: %d/%d, eta: 1/%s. continue %d.'
% (n_history, rank, total_cnt, self.hps['prune_eta'], i))
return stop_list
文章图片
代码以图示为准
基于置信区间的早停方法可见我们的比赛开源代码库 。
数据建模方法
对于贝叶斯优化的数据建模 , 我们尝试了多精度集成代理模型 MFES-HB[6]拟合多精度观测数据 。 该方法虽然能应对低精度噪声场景 , 但在决赛极其有限的优化时间限制内 , 可能无法快速排除噪声的干扰 , 导致效果不如仅使用最高精度数据建模 。
我们最终选择只利用最高精度数据进行建模 。 为了弥补早停造成的高精度数据损失 , 我们引入插值方法 , 增加用于模型训练的数据量 , 具体来说 , 就是对早停的配置 , 设置一个完整验证时的性能均值 , 插入优化历史执行建模 。 对于插入值的选取 , 我们使用已完整验证配置的最终均值中位数进行插值 。
推荐阅读
- 安全|Redline Stealer恶意软件:窃取浏览器中存储的用户凭证
- 吴祖榕|上线 2 周年,用户数破 2 亿,腾讯会议和我们聊了聊背后的产品法则
- 硬件|上线两年用户破两亿,腾讯会议还能做什么?
- 设计|腾讯宣布企业级设计体系 TDesign 对外开源
- 警告!|冒充老干妈员工诈骗腾讯被判12年 两被告提出上诉
- Tencent|继百度网盘后腾讯微云也已解除限速 不用单独下载App
- 文化|“视频会员”的意义,藏在腾讯视频VIP九周年里
- 彩云|解除限速!腾讯微云 App 更新,提供无差别速率服务
- 公司|《Control》开发商正在与腾讯合作开发一款PVE射击网游
- 国计民生|25万亿级新蓝海!百度、华为、腾讯重磅出击,抢食智慧城市"大蛋糕",AI巨头如何赋能?来看真实案例