AutoML.org

弗莱堡-汉诺威-图宾根

SMAC3:用于超参数优化的多功能贝叶斯优化包

SMAC:Sequential Model-Based Algorithm Configuration(顺序模型化算法配置)

SMAC3 [Lindauer et al., 2022] 提供了一个强大而灵活的贝叶斯优化框架,以帮助用户确定其(机器学习)算法、数据集和应用程序的最佳超参数配置。其核心是贝叶斯优化与激进的竞赛机制相结合,以高效地确定哪种配置性能更好。

🐍 SMAC3 使用 Python3 编写,并持续使用 Python 3.8、3.9 和 3.10 进行测试。其随机森林是用 C++ 编写的。

👩‍💻 我们积极维护 SMAC3。

💬 欢迎通过在我们的 repo 上提交 issue 提出任何问题。

📂 文档可以在 这里 找到。

🎁 特点

  • 丰富的搜索空间,包含浮点数、序数、分类和条件
  • Ask-and-Tell 接口
  • 继续和热启动优化
  • 强化机制,以高效地比较配置
  • 用户先验
  • 并行化,本地和集群化,使用 Dask
  • 多保真度优化,例如,当我们可以使用不同的分辨率评估我们的函数时
  • 使用 ParEGO 进行多目标优化
  • 跨多个任务进行优化(又称算法配置)
  • 要优化的函数可以是 Pythonic 的,也可以通过脚本调用
  • 易于通过回调进行扩展
  • 许多组件
    • 代理模型:高斯过程、随机森林
    • 采集函数:EI、PI、LCB、TS

🐱‍🏍 用例

在我们的 examples 中,我们展示了不同的用例,例如:

  • 如何优化一个简单的函数?
  • 如何使用交叉验证优化机器学习模型?
  • 如何使用我们的 ask-and-tell 接口?我们如何继续和热启动优化?
  • 我们如何添加我们的偏好,在哪个区域搜索(用户先验)?
  • 我们如何使用多保真度,即利用过早的评估(例如,仅训练一半的 epoch)?
  • 我们如何设置一个多目标问题?
  • 如果我们的目标函数不是 Pythonic 的,我们如何与命令行接口?

⚡ 由 SMAC3 提供支持

SMAC3 不仅可以单独使用,还可以作为其他 HPO 工具的后端

📜 历史

你知道 SMAC 起源于 2011 年的 [Hutter et al., 2011] 吗? 在 Matlab 中的第一个版本之后,它被开源到 java 并经历了 2012 年的第一次重大改进。 然后 Python 于 2016 年问世。 六年后,SMAC 经历了第二次重大改进,具有全新的用户界面和核心。

SMAC 激发并包含众多出版物,以下是一个不完全的时间线

2022Lindauer, M., Eggensperger, K., Feurer, M., Biedenkapp, A., Deng, D., Benjamins, C., Ruhkopf, T., Sass, R., and Hutter, F. (2022)
SMAC3: 一种用于超参数优化的多功能贝叶斯优化包。
JMLR, 23(54):1–9.
2018Lindauer, M. and Hutter, F.
基于模型的算法配置的热启动。
AAAI 2018: 1355-1362。
2015Falkner, S., Lindauer, M. and Hutter, F.
SpySMAC:SAT 求解器的自动化配置和性能分析。
国际满足性求解会议 (SAT’15) 的论文集。
2013Hutter, F. Hoos, HH. and Leyton-Brown, K.
评估用于昂贵黑盒函数的顺序模型化优化。
GECCO (Companion) 2013: 1209-1216。
2012Hutter, F. Hoos, HH. and Leyton-Brown, K.
并行算法配置。
LION 2012: 55-70
2011Hutter, F. Hoos, HH. and Leyton-Brown, K.
具有审查响应数据的贝叶斯优化。
2011 NIPS 贝叶斯优化、实验设计和强盗研讨会。
2011Hutter, F. Hoos, HH. and Leyton-Brown, K.
用于通用算法配置的顺序模型化优化。
LION-5, 2011。
2010Hutter, F. Hoos, HH., Leyton-Brown, K. and Murphy, K.
时间受限的顺序参数优化。
LION4, 2010。

参考文献

[Deng et al., 2022] Difan Deng, Florian Karl, Frank Hutter, Bernd Bischl, Marius Lindauer: 用于时间序列预测的有效自动深度学习。ECML/PKDD (3) 2022: 664-680

[Feurer et al., 2015] Matthias Feurer, Aaron Klein, Katharina Eggensperger, Jost Tobias Springenberg, Manuel Blum, Frank Hutter: 自动机器学习的有效且强大的方法。NIPS 2015: 2962-2970

[Feurer et al., 2022] Matthias Feurer, Katharina Eggensperger, Stefan Falkner, Marius Lindauer, Frank Hutter: Auto-Sklearn 2.0:通过元学习实现免提 AutoML。J. Mach. Learn. Res. 23: 261:1-261:61 (2022)

[Hutter et al., 2011] Frank Hutter, Holger H. Hoos, Kevin Leyton-Brown
用于通用算法配置的顺序模型化优化。LION 2011: 507-523

[Kotthoff et al., 2017] Lars Kotthoff, Chris Thornton, Holger H. Hoos, Frank Hutter, Kevin Leyton-Brown
Auto-WEKA 2.0:WEKA 中自动模型选择和超参数优化。J. Mach. Learn. Res. 18: 25:1-25:5 (2017)

[Lindauer et al., 2022] Lindauer, M., Eggensperger, K., Feurer, M., Biedenkapp, A., Deng, D., Benjamins, C., Ruhkopf, T., Sass, R., and Hutter, F. (2022). SMAC3: 一种用于超参数优化的多功能贝叶斯优化包。JMLR, 23(54):1–9。

[Mendoza et al., 2019] Hector Mendoza, Aaron Klein, Matthias Feurer, Jost Tobias Springenberg, Matthias Urban, Michael Burkart, Maximilian Dippel, Marius Lindauer, Frank Hutter
通往自动调整的深度神经网络。自动化机器学习 2019: 135-149

[Thornton et al., 2013] Chris Thornton, Frank Hutter, Holger H. Hoos, Kevin Leyton-Brown
Auto-WEKA:分类算法的组合选择和超参数优化。KDD 2013: 847-855

[Zimmer et al., 2021] Lucas Zimmer, Marius Lindauer, Frank Hutter: Auto-Pytorch:用于高效且强大的 AutoDL 的多保真度元学习。IEEE Trans. Pattern Anal. Mach. Intell. 43(9): 3079-3090 (2021)