Which Optimizer, At What Budget? A Tournament of Optimizers for Search-Based SE
本文证明了没有哪种单一优化器在软件工程配置任务中是普遍最优的,因为最佳选择取决于标注预算,并提出了一种利用两个任务属性来预测最优优化器的具有成本效益的查表法,其准确率可与事后先验(hindsight oracle)相媲美。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在尝试调优一款超级复杂的视频游戏。你有 460 个不同的开关、旋钮和隐藏代码。仅仅改变一个设置,可能就要求计算机重新构建整个游戏并运行一次大规模测试,以查看它是否运行得更好。你无法尝试所有的组合,因为可能的组合比天上的星星还要多。因此,你需要一个聪明的“调优器”(优化器)来猜测哪些设置值得测试。
问题在于?有数十种不同的调优器可用,但没有人知道哪一个最适合你的特定游戏。有些专家说:“就用这个著名的!”但这篇论文说:“等等,那是陷阱。”
伟大的优化器锦标赛
作者 Kishan Kumar Ganguly 和 Tim Menzies 决定通过举办一场大规模锦标赛来解决这个问题。他们不仅仅是挑选了几个,而是聚集了 20 种不同的优化器,并将它们置于 106 个不同的软件工程任务中进行对抗。
他们并没有只运行一次锦标赛。他们在四个不同的“预算”(即计算机被允许尝试设置的次数)下进行了测试:30、50、100 和 200 次尝试。为了运行所有这些测试,他们消耗了 14,000 个 CPU 小时。那可是大量的计算机时间!
大惊喜:没有“最佳”调优器
这是他们发现的最重要的一点:没有一个单一的优化器能赢得一切。
事实上,“冠军”会根据你拥有的时间(或预算)而改变。
- 当你缺时间时(只有 30 次尝试): 赢家是一个聪明、快速的学习者,叫做 EZR。它就像一个侦察兵,快速检查最有希望的区域。
- 当你时间充裕时(200 次尝试): 赢家切换到了一个暴力破解型的强力选手——差分进化算法 (DE)。它就像一支探险队,缓慢但坚定地绘制出整张地图。
论文测量到,对于 58% 的任务,最佳优化器随着预算的增长至少发生了一次变化。如果你为小预算选定了“冠军”并坚持到大预算,那么在多达一半的任务上你都会出错。
“一刀切”的迷思
作者还测试了一个流行的观点:即复杂的“多目标”调优器(试图同时平衡多个目标)总是比简单的“单目标”调优器更好。
- 结果: 他们错了。在相同的预算下,简单的调优器经常击败复杂的调优器。
- 关键点: 为了追上一个拥有 200 次尝试的简单调优器,一个复杂的调优器需要 1,000 次尝试(五倍的工作量)才能获得相同的结果。
“魔法地图” vs. “水晶球”
那么,在没有花费 14,000 小时的情况下,你该如何知道选择哪个调优器?
失败的水晶球:
科学家们经常尝试通过分析问题的“形状”(使用复杂的数学方法,称为实例聚类)来预测赢家。作者也尝试了这一点。
- 结果: 失败得很惨。它仅在 44.2% 的情况下预测对了赢家。这就像试图通过观察跑步者的鞋子颜色来猜测比赛的赢家一样;这根本行不通。
获胜的魔法地图:
作者发现,与其使用复杂的数学,不如使用一个基于你在数据表中能立即看到的两个特征的简单“速查表”:
- 你的目标是否相互冲突?(例如,让游戏变快但同时也更便宜?)
- 你的设置是什么类型的数字?(是简单的“是/否”开关,还是庞大且杂乱的数字?)
通过观察这两个因素加上你的预算,他们创建了一个 热力图指南。
- 如果你的预算很小且设置简单,选择 EZR。
- 如果你的预算很大或设置复杂,选择 DE 或 SMAC。
这个简单的指南出奇地准确。它在没有进行任何昂贵测试的前提下,在 74.2% 的任务上匹配或击败了“事后先知”(一个已经知道答案的完美预测器)。
总结
论文的结论是,选择优化器不在于寻找那个“神奇工具”,而在于将工具与你的预算和数据的形状相匹配。
- 不要在开始之前浪费钱去分析你的问题。
- 要查看你的数据表,检查你的预算,并使用简单的指南。
- 记住: 如果你只有几次尝试,请使用快速的侦察兵。如果你有很多次尝试,请使用彻底的探险家。
作者建议,在未来,我们可能会构建一个“元调度器”,它从侦察兵开始,然后随着预算的增长移交给探险家,从而兼顾两者的优点。但就目前而言,简单的指南是节省时间并获得良好结果的最佳方式。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。