贝叶斯优化

论文链接:https://arxiv.org/pdf/1807.02811.pdf
代码链接:https://github.com/fmfn/BayesianOptimization

AutoML 走到今天,已演化出诸多行之有效的自动调参机制,贝叶斯优化 (Bayes optimization) 是其中的优秀代表。原理上,贝叶斯优化通过 高斯过程 (Gaussian process)、TPE (Tree Parzen Estimators) 或 随机森林 (random forest) 拟合超参数与损失函数间的隐藏关系,并在每一轮迭代完成时基于当前拟合函数给出最优参数的建议,进入下一次迭代。相对于网格搜索和随机搜索等无头绪的超参数尝试,贝叶斯优化显然更为高效和精确。可以预期的是,不久的将来,目前流行的网格搜索和随机搜索都将被取代。

贝叶斯优化_第1张图片
关于贝叶斯优化的具体细节请读者自行参考论文,以下提供基于 Python 官方第三方库实现的贝叶斯调参方式。

# 命令行安装
$ pip install bayesian-optimization

# 导入
from bayes_opt import BayesianOptimization

# 定义黑盒算法
def black_box_function(x, y):    						#输入超参数
	loss = -x ** 2 - (y - 1) ** 2 + 1
    return loss											#输出损失函数

# 主过程
pbounds = {'x': (2, 4), 'y': (-3, 3)}					#定义边界
optimizer = BayesianOptimization(f=black_box_function,	#导入黑盒算法
								 pbounds=pbounds,		#导入参数边界
								 verbose=2, 			#0,沉默;1,print最优参数;2,print每一次结果
    							 random_state=1)
optimizer.maximize(init_points=2,n_iter=10)				#优化
print(optimizer.max)									#查看最优参数及表现
for i, res in enumerate(optimizer.res):					#查看其他参数及表现
    print("Iteration {}: \n\t{}".format(i, res))
optimizer.set_bounds(new_bounds={"x": (-2, 3)})			#重新设置边界

你可能感兴趣的:(算法,机器学习,深度学习)