对话某机构自动推理专家
在第八届联邦逻辑会议(FLoC)召开之际,某机构的Byron Cook、Daniel Kröning和Marijn Heule讨论了自动推理的发展前景。
逻辑与计算机科学的交汇
问: FLoC主要讨论逻辑的哪些方面?逻辑现在是否等同于自动推理?
Byron Cook: 它探讨的是逻辑与计算机科学的交叉领域。自动推理是其中一个重要维度。
Daniel Kröning: 传统上,FLoC分为两部分,前半部分偏理论,后半部分偏应用。
Cook: 自动推理常常处于可计算性的前沿。我们经常处理棘手甚至不可判定的问题,因此研究人员必须同时关注应用层面和理论层面。
从SAT求解到探索未知
问: Marijn专注于SAT求解器的研究,SAT问题本身是难以处理的,对吗?它是NP完全的?
Marijn Heule: 是的,但这些技术也可用于解决超出NP范围的问题。例如,可满足性模理论(SMT)求解器。我甚至有一个与学生合作的项目,尝试用这些工具解决著名的考拉兹猜想。
Kröning: SAT现在已成为解决真正难题的性价比很高的基础工具。许多人仍认为SAT等于NP难,因此难以或无法求解。但对我们来说,它是最基础的切入点。我们在此基础上构建算法,来解决更复杂的问题。
Cook: 该领域的一个技巧是抽象,将巨大的问题用较小的模型表示,使得对小问题的查询结果也能适用于大问题。当抽象丢失过多信息时,我们还有按需精化抽象的技术。通常,我们可以将这些抽象用SAT工具表示。Marijn关于考拉兹猜想的工作就是一个很好的例子。他将考拉兹猜想巧妙地简化为一系列SAT问题,并且已经非常接近解决,因为他只剩下一个可判定的问题——而他正是解决这类问题的世界顶尖专家。
Heule: 看似接近,实则遥远,对吧?因为这个问题即便用百万个核心也可能无法解决。
Cook: 但它仍然是可判定的。NP、PSpace这些问题实际上都是可判定的。而我们也会研究那些不可判定的问题。当一个问题是不可判定的时候,意味着你的工具有时会找不到答案,这是本质上的限制:即使用再多的计算机也无济于事。停机问题就是一个典型的例子。
Heule: 对于这类问题,我们是在问“是否存在这种形式的终止论证”。如果存在,就得到了终止论证。如果不存在这种形式的终止论证,也许存在其他形式的。所以,如果答案是SAT(可满足),问题就解决了。如果答案是否,那就尝试其他方法。
Cook: 这确实令人兴奋。在某机构,我们正利用云和分布式系统的强大能力,构建功能日益强大的SAT求解器。因此,没有比某机构更适合Marijn的地方了。
云基础设施的形式化验证
问: Daniel,能谈谈您的研究吗?
Kröning: 我目前关注的是对执行EC2实例远程管理的云基础设施进行推理——如何以可证明的方式保障其安全性,同时兼顾经济性。
Cook: Daniel关注的焦点之一是代理程序。我们有一些运行在其他机器上的软件,例如EC2实例上的遥测或控制代理,它们被授权代表你在你的机器上执行操作。我们需要确保攻击者无法欺骗这些代理去做有害的事情。
正确性驱动的软件开发
问: 形式化方法在硬件设计和交通系统中已商用多年,现在似乎在软件开发领域也开始崭露头角?
Cook: 我们观察到,这确实是出于实际需求。例如,存储团队因为使用了形式化方法,能够更加敏捷,更大胆地编写程序。他们能够编写出原本因信心不足而不敢部署的代码,部署速度提升了四倍。这是对敏捷性的一项投资,并且获得了丰厚回报。
Kröning: 确实有很多这样的案例:工程团队不敢推出某项特性、设计修订或变体,尽管它们有明显优势(如更快、功耗更低),因为团队无法确信其在所有情况下都正确无误。
Heule: 有趣的是,现在连工具本身也受益于此。我们已经能从工具中生成证明,人们开始实现过去因不确定其正确性而不敢添加的特性。求解器也因此变得更快、更复杂,因为我们现在可以检查工具产生的结果,对其正确性充满信心。
Cook: 我想强调这一点。自动推理中,“寻找证明”和“检查证明”是有区别的,而检查相对容易,更像是一个记账过程。寻找证明则极具创造性,其算法令人惊叹。但如何确保找到证明的工具本身是正确的?答案是,生成一个可审计的产物,然后用一个简单可靠的工具去检查它。
云中的SAT求解
问: 对于今年的FLoC,各位最感兴趣的是什么?
Cook: SAT会议是FLoC的一部分,届时将公布SAT竞赛的结果。我非常期待云竞赛轨道的进展。自动推理已经真正迁移到云端,过去几年云轨道的举办极大地拓展了可能性边界。预计今年也会如此。
Heule: 今年是某机构首次同时主办并行求解轨和云求解轨。而云轨之所以能成为现实,正是因为有了某机构。在此之前,我们根本没有资源来举办一个云轨。在云轨中,每个求解器与基准测试的组合都在1600个核心上运行。今年尤其特别,因为恰逢SAT竞赛20周年,我们设立了一个纪念轨,包含了历届竞赛的所有问题,总计5355个问题,所有参赛求解器都会对此进行求解。
Cook: 哇。
Heule: 我也很期待看到结果。过去两年的数据表明,云求解器在100秒内能解决的问题数量,相当于串行求解器需要5000秒才能解决的量。用户无需等待四小时,而只需四分钟。
Cook: 这带动了整体水平的提升,因为正如我们之前所说,许多问题最终都归结为SAT求解。如果SAT求解器的时间从一小时缩短到一分钟,这将是颠覆性的变化,意味着我们能做更多全新的事情。
Heule: 另一个趋势是,我们现在认识到不同类型的问题需要不同的启发式策略。求解器会组合多种启发式策略,分阶段运行:“先试试这个,再试试那个。”而切换启发式策略的代码量非常小,仅仅修改几个参数。如果发现某组启发式策略对特定问题效果好,就可以在这方面加强。
Cook: SAT求解器的一项核心能力是快速做决策。它会做出一系列选择,当这些选择行不通时,它会花时间从中学习教训。它内部有一个高效的数据库,用于管理已学到的经验和未来要避免的路径,这极大地剪枝了搜索空间。在云环境中,一个令人兴奋的发展是,比方说有1000个SAT求解器同时在解同一个问题,它们各自学到不同的东西,并能相互共享这些信息。因此,如果能在5000个求解器之间实现高效的信息通信和查找,求解速度就能突飞猛进。另一个有趣的点是,越来越清楚地看到,存在一些基本的构建模块,针对不同类型的问题,需要使用不同类型的“乐高积木”。而云环境允许你同时运行所有类型的求解器,并在它们之间共享信息。
Heule: 我们在FLoC上发表了一篇某机构的论文,提出了一些非常酷的想法。在云中运行任务时,有时会遇到时间窗口限制,超时就会停止。你从一个特定问题开始,求解器做了一些修改,然后我们得到了一个不同的问题。我们最初测试的想法是:能否暂停求解器,将修改后的问题状态存储起来,稍后当我们需要更多时间时再从中断处继续求解?但有趣的是,如果你将这个修改后的问题传递给另一个求解器,让它运行几分钟,然后存储状态,再传给下一个求解器,这个过程实际上会大大加速求解。事实证明,这是我们尝试过的所有方法中,能解决最多实例的方法。
问: 你们是按某种原则选择下一个求解器,还是随机选择?
Heule: 结果证明,一个非常有效的方法是选取两个顶尖的求解器,让它们在问题上“乒乓”式地交替求解。实现这种搜索状态的存储和恢复功能需要一些工作,所以如果要在十几个求解器中都实现它,工作量会相当大。但这将是一个非常有趣的实验。
结语
问: 各位还有什么想分享的吗?
Cook: 我想我可以代表所有参加FLoC的人说:我们已准备好再次被震撼,就像2018年那样。今年FLoC上,科学家同僚们展示的许多工具和理论,将挑战我们现有的认知,或在我们脑海中点燃下一个重大灵感的火花。我们也期待与相识近20年的老朋友重聚,并结识新朋友。我尤其期待见到进入该领域的新一代科学家,透过他们的眼睛重新认识这个世界。这真是一个投身于自动推理领域的美妙时代。FINISHED