据外媒报道,谷歌的 DeepMind AI 小组开发出了一种强化学习工具 AlphaDev,能够在不需要人类代码示例的情况下,自动设计出优化的算法。
这些算法已经集成到 LLVM 标准 C++ 排序库和开源 Abseil 库中,提高了排序和散列函数的速度。这是 AI 帮助人类打破十年算法瓶颈的一个例子。
排序和散列是计算机科学中最基本也最常用的算法之一。排序算法可以将无序的数据按照一定的顺序重新排列,例如按照字母顺序或者数字大小。散列算法可以将任意长度的数据转换为固定长度的字符串,用于快速检索和存储数据。
作为一项基础操作,大多数编程语言的标准库中都内置有排序和散列算法。世界各地的代码库中使用了许多不同的排序和散列技术和算法来在线组织大量数据,但至少就与 LLVM 编译器配套使用的 C++ 库而言,排序和散列代码已经有十多年没有任何变化了。
DeepMind 的研究人员采用了一种创新的方法,将编程过程视为一种单人“组装游戏”。他们开发了一种名为 AlphaDev 的强化学习工具,能够在不需要任何人类代码示例的情况下,自动生成 x86 汇编代码,并根据代码的运行延迟和正确性给予奖励或惩罚。
通过不断地尝试、评估和改进,AlphaDev 逐渐学会了如何编写紧凑、高效、正确的代码。AlphaDev 基于 DeepMind 之前开发的 AlphaZero 算法,该算法曾在国际象棋、围棋和星际争霸等游戏中击败人类顶尖选手。
AlphaDev 首先应用于排序函数,发现了一些新颖的指令序列,能够以更快的速度对不同长度的数据进行排序。这些指令序列已经被集成到 LLVM 标准 C++ 排序库中,对于较短的序列,排序库的速度提高了 70%;对于超过 250,000 个元素的序列,速度提高了约 1.7%。
接着,AlphaDev 又应用于散列函数,发现了一些新颖的指令序列,能够以更快的速度对不同长度的数据进行散列。这些指令序列已经被集成到开源 Abseil 库中,对于 9-16 字节范围内的数据,散列函数的速度提高了 30%。
这些新发现的算法不仅提高了计算机程序的性能,也展示了 AI 在计算机科学领域的创造力和潜力。DeepMind 的研究人员表示,他们希望通过 AlphaDev 来探索更多不同类型的算法,并将其应用于更广泛的场景。