算法——让程序对数据进行排序、过滤和组合的代码块——是现代计算的标准工具。就像手表里的小齿轮,算法在更复杂的程序中执行明确定义的任务。它们无处不在,也(部分地)正因如此,随着时间的推移,它们经过了精心优化。当程序员需要对列表进行排序时,他们会使用用了几十年的标准“排序”算法。现在研究人员使用被称为机器学习的人工智能分支,重新审视传统算法。他们的方法被称为具有预测的算法,利用了机器学习工具可以提供的、对传统算法处理的数据的洞察力。
这些工具重新激发了对基本算法的研究。
MIT 计算机科学家 Piotr Indyk 表示,机器学习和传统算法是“两种截然不同的计算方式,而带有预测的算法是连接两者的一种方式。”“这是一种将两种完全不同的线程结合起来的方法。”最近对这种方法的兴趣不断上升,情况始于 2018 年,当时 MIT 的计算机科学家 Tim Kraska 和 Google 的一个研究团队发表了一篇
论文。在论文中,作者表示机器学习可以改进一种经过充分研究的传统算法——布隆过滤器(Bloom filter),该算法解决了一个简单但是令人生畏的问题。
想象你管理着公司的 IT 部门,你需要检查员工是否会访问存在安全风险的网站。你可能会很天真地以为你需要检查他们访问的每一个网站,同已知的站点黑名单比较。如果这个黑名单很大(互联网上不受欢迎的网站可能就是这种情况),问题就会变得很棘手——你无法在很短的加载时间内将每个网站与庞大的列表对比。布隆过滤器提供了一个解决方案,让你可以快速准确地检查任何特定站点的地址(URL)是否在黑名单上。本质上它是通过将巨大的列表压缩成一个较小的列表,提供一些特定的保证的方式做到这一点的。