Hyperopt:一个用于优化机器学习算法超参数的 Python 库
作者
James Bergstra, Dan Yamins, 和 David D. Cox
作者简介
James Bergstra 是滑铁卢大学理论神经科学中心的 NSERC Banting Fellow。他的研究兴趣包括视觉系统模型和学习算法、深度学习、贝叶斯优化、高性能计算和音乐信息检索。此前,他是哈佛大学 Rowland 科学研究所 David Cox 教授的计算机与生物视觉实验室的成员。他于 2011 年 7 月在蒙特利尔大学完成了 Yoshua Bengio 教授指导下的博士研究,其论文探讨了如何将复杂细胞融入深度学习模型。作为其博士工作的一部分,他共同开发了 Theano,一个流行的 Python 元编程系统,可以面向 GPU 进行高性能计算。
Dan Yamins 是麻省理工学院脑与认知科学系的博士后研究员。他的研究兴趣包括腹侧视觉通路的计算模型,以及用于神经科学和计算机视觉应用的高性能计算。此前,他开发了用于大规模数据分析和工作流程管理的 Python 语言软件工具。他在哈佛大学 Radhika Nagpal 的指导下完成了博士学位,其论文研究了空间分布式多智能体系统的计算模型。
David Cox 是分子与细胞生物学和计算机科学的助理教授,也是哈佛大学脑科学中心的成员。他在麻省理工学院脑与认知科学系获得了博士学位,专攻计算神经科学。在加入 MCB/CBS 之前,他是哈佛大学 Rowland 研究所的初级研究员,该研究所是一个跨学科机构,专注于传统领域边界的高风险、高回报科学研究。
演讲摘要
大多数机器学习算法都有超参数,这些超参数对端到端系统性能有着巨大影响,而调整超参数以优化端到端性能可能是一项艰巨的任务。超参数种类繁多——有带或不带边界的连续值超参数,有序或无序的离散超参数,以及并非总是适用的条件超参数(例如,可选预处理阶段的参数)——因此传统的连续和组合优化算法要么不直接适用,要么在操作时没有利用搜索空间中的结构。通常,超参数的优化是由领域专家预先在不相关的问题上进行,或者在当前问题上手动借助网格搜索进行。然而,当涉及不止几个超参数(例如 5 个)时,使用网格细化的手动搜索标准做法效率极低,以至于即使是随机搜索也被证明可以与领域专家相媲美 [1]。
出于两个原因,对更好的超参数优化算法 (HOA) 有强烈的需求
-
HOA 使模型评估实践形式化,以便基准测试实验可以在以后由不同的人重复进行。
-
只要学习算法设计者提供相应的 HOA,他们就可以为非专家提供灵活的完全可配置的实现(例如深度学习系统)。
Hyperopt 通过一个 Python 库 [2, 3] 提供串行和可并行化的 HOA。其设计的核心是用于以下各项之间通信的协议:(a) 超参数搜索空间的描述,(b) 超参数评估函数(机器学习系统),以及 (c) 超参数搜索算法。该协议使得通用的 HOA(例如捆绑的“TPE”算法)可以适用于一系列特定的搜索问题。特定的机器学习算法(或算法族)在相关项目中被实现为 hyperopt 的 *搜索空间*:深度信念网络 [4],卷积视觉架构 [5],以及 scikit-learn 分类器 [6]。我的演讲将解释 hyperopt 解决了什么问题,如何使用它,以及如何在没有人为干预的情况下,仅从数据中生成准确的模型。
投稿参考文献
[1] J. Bergstra 和 Y. Bengio (2012)。超参数优化的随机搜索。机器学习研究杂志 13:281–305。http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf
[2] J. Bergstra, D. Yamins 和 D. D. Cox (2013)。使模型搜索成为一门科学:视觉架构在数百维中的超参数优化。第 30 届国际机器学习会议 (ICML-13) 论文集。http://jmlr.csail.mit.edu/proceedings/papers/v28/bergstra13.pdf
[3] Hyperopt:http://hyperopt.github.com/hyperopt
[4] ... 用于深度信念网络:https://github.com/hyperopt/hyperopt-nnet
[5] ... 用于卷积视觉架构:https://github.com/hyperopt/hyperopt-convnet
[6] ... 用于 scikit-learn 分类器:https://github.com/hyperopt/hyperopt-sklearn
关于演讲作者的更多信息可以在他的学术网站上找到:http://www.eng.uwaterloo.ca/~jbergstr/