
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 工具的后端
- Auto-WEKA [Thornton et al., 2013, Kotthoff et al., 2017]: 一种用于算法选择和 HPO 的工具
- Auto-Sklearn [Feurer et al., 2015, Feurer et al., 2022]: 一种自动机器学习工具包,以及 scikit-learn 估计器的即插即用替代品
- Auto-Pytorch [Mendoza et al., 2019, Zimmer et al., 2021, Deng et al., 2022]: 一种用于深度学习的联合 NAS 和 HPO 的工具
📜 历史
你知道 SMAC 起源于 2011 年的 [Hutter et al., 2011] 吗? 在 Matlab 中的第一个版本之后,它被开源到 java 并经历了 2012 年的第一次重大改进。 然后 Python 于 2016 年问世。 六年后,SMAC 经历了第二次重大改进,具有全新的用户界面和核心。
SMAC 激发并包含众多出版物,以下是一个不完全的时间线
| 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. |
| 2018 | Lindauer, M. and Hutter, F. 基于模型的算法配置的热启动。 AAAI 2018: 1355-1362。 |
| 2015 | Falkner, S., Lindauer, M. and Hutter, F. SpySMAC:SAT 求解器的自动化配置和性能分析。 国际满足性求解会议 (SAT’15) 的论文集。 |
| 2013 | Hutter, F. Hoos, HH. and Leyton-Brown, K. 评估用于昂贵黑盒函数的顺序模型化优化。 GECCO (Companion) 2013: 1209-1216。 |
| 2012 | Hutter, F. Hoos, HH. and Leyton-Brown, K. 并行算法配置。 LION 2012: 55-70 |
| 2011 | Hutter, F. Hoos, HH. and Leyton-Brown, K. 具有审查响应数据的贝叶斯优化。 2011 NIPS 贝叶斯优化、实验设计和强盗研讨会。 |
| 2011 | Hutter, F. Hoos, HH. and Leyton-Brown, K. 用于通用算法配置的顺序模型化优化。 LION-5, 2011。 |
| 2010 | Hutter, 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)
