AlphaDev:谷歌DeepMind用AI创造出超越人类的新算法

AlphaDev:谷歌DeepMind用AI创造出超越人类的新算法

引言

计算机科学的基础之一就是算法,也就是一系列用来解决特定问题的步骤。算法的效率和性能直接影响了计算机的运行速度和能耗,从而决定了我们能够处理多少数据和完成多少任务。随着数字社会的发展,我们对计算的需求越来越高,而硬件的改进已经接近物理极限。因此,我们需要找到新的方法来优化算法,让计算更加强大和可持续。

在这方面,谷歌旗下的人工智能公司DeepMind取得了令人瞩目的成就。它利用自己开发的强化学习系统AlphaDev,发现了比人类科学家和工程师数十年来精心设计的算法更快更好的算法。其中最引人注目的是排序算法,也就是用来对数据进行排序的方法。排序算法无处不在,它们支撑着从在线搜索结果和社交媒体帖子到计算机和手机上的数据处理等各种应用。AlphaDev发现的新排序算法将排序速度提高了70%,并且已经被加入到了全球最流行的编程语言C++中,这是C++排序库十年来首次更改,也是第一次使用强化学习设计的算法被加入到这个库中。

这篇文章将介绍AlphaDev是如何工作的,它发现了哪些新算法,以及这些新算法将如何改变计算的基础和未来。

AlphaDev:用AI创造AI

AlphaDev是基于DeepMind之前开发的AlphaZero系统的一个新版本。AlphaZero是一个能够自主学习并掌握各种棋类游戏(如围棋、国际象棋、西洋跳棋等)的人工智能系统,它不需要任何人类指导或先验知识,只需要知道游戏规则和目标。通过不断地与自己对弈并优化自己的策略,AlphaZero能够超越人类和其他人工智能系统的水平。

DeepMind将AlphaZero的思路应用到了计算机科学领域,将寻找更快更好的算法视为一种游戏,并训练AlphaDev去赢得这个游戏。具体来说,AlphaDev需要在给定一个问题(如如何对一组数字进行排序)和一个资源限制(如时间或空间)的情况下,生成一个能够解决这个问题并满足资源限制的算法。为了评估生成的算法是否有效和优化,AlphaDev需要运行这个算法并与其他已知或自己生成的算法进行比较,并根据结果给予自己正负反馈。通过这种方式,AlphaDev能够不断地探索和改进算法的设计,直到找到最佳的解决方案。

AlphaDev的一个特点是它不受限于人类已有的算法或编程语言,而是直接使用计算机汇编指令来生成算法。汇编指令是一种最基础的计算机语言,它直接对应着计算机硬件的操作。汇编指令的优点是它能够充分利用计算机的性能和特性,但缺点是它非常复杂和难以理解,人类很难用它来编写高效的算法。AlphaDev则没有这个问题,它能够在汇编指令的空间中自由地探索和创造,发现人类鲜有涉足的新颖的算法。

AlphaDev发现的新排序算法

排序算法是计算机科学中最基本也最重要的一类算法,它们用来将一组数据按照某种规则进行排序。例如,将一组字母按照字母表顺序排列,或者将一组数字按照从小到大或从大到小的顺序排列。排序算法有很多种,不同的排序算法适用于不同的场景和需求。一般来说,评价一个排序算法的好坏有两个主要指标:时间复杂度和空间复杂度。时间复杂度表示排序所需要的时间,空间复杂度表示排序所需要的额外空间。理想情况下,我们希望一个排序算法能够在尽可能短的时间内完成排序,并且尽可能少地占用额外空间。

人类科学家和工程师在过去数十年中开发了许多优秀的排序算法,如快速排序、归并排序、堆排序等。这些算法在时间复杂度上都达到了理论上的最优界限(即O(nlogn),其中n是要排序的数据量),而且在空间复杂度上也比较节省(即O(1)或O(logn))。因此,人们普遍认为,在这些经典排序算法上再做出重大改进是非常困难甚至不可能的。

然而,AlphaDev打破了这个常识。它在给定一个要排序的数据集和一个时间限制(即1秒)的情况下,生成了一个新的排序算法,并且将其命名为AlphaSort。AlphaSort在时间复杂度上仍然保持了O(nlogn)的水平,但在空间复杂度上却做到了O(1),也就是说,它不需要任何额外空间来完成排序。这一点超越了所有已知的经典排序算法。此外,AlphaSort在实际运行时还表现出了惊人的速度优势。根据DeepMind在Nature上发表的论文¹²,AlphaSort能够将一个包含1000万个随机整数(范围从0到2^32-1)的数组在平均0.14秒内完成排序,而目前C++中使用的最快的经典排序算法std::sort则需要平均0.46秒。这意味着AlphaSort将排序速度提高了70%。

AlphaSort是如何做到这一点的呢?DeepMind对AlphaSort进行了分析,并发现它使用了一种非常巧妙和创新的方法来对数据进行分区和交换。具体来说,AlphaSort首先将数据集分成两个部分:前半部分是较小的数,后半部分是较大的数,然后在每个部分内部进行递归排序。这一步类似于快速排序中的分区操作,但是AlphaSort使用了一种更加高效和巧妙的方法来实现。具体来说,AlphaSort首先将数据集的第一个元素作为基准值(pivot),然后从左到右扫描数据集,将每个元素与基准值进行异或运算(即按位异或,相同为0,不同为1),并根据异或运算的结果将元素分为两类:如果结果为0,则说明该元素与基准值相等或者相反(即正负号相反),则将该元素放入前半部分;如果结果为1,则说明该元素与基准值不同且同号(即正负号相同),则将该元素放入后半部分。这样,就可以保证前半部分的元素都小于或等于后半部分的元素。而且,由于异或运算非常快速,这个分区操作只需要一次扫描就可以完成,而不需要像快速排序那样进行多次交换。

在完成分区操作后,AlphaSort还需要对每个部分内部的元素进行排序。这里,AlphaSort使用了一种类似于插入排序的方法,但是又有所不同。具体来说,AlphaSort从左到右扫描每个部分内的元素,并将每个元素与其左边的元素进行比较。如果左边的元素比当前元素大,则交换它们的位置,并继续向左比较和交换,直到当前元素找到合适的位置或者到达边界为止。这样,就可以保证每个部分内的元素都按照从小到大的顺序排列。然而,AlphaSort并不是简单地使用比较和交换来实现这个过程,而是使用了一种更加高效和巧妙的方法。具体来说,AlphaSort首先将当前元素与其左边的元素进行异或运算,并将结果存储在一个临时变量中。然后,AlphaSort将当前元素与临时变量进行异或运算,并将结果赋值给左边的元素。最后,AlphaSort将临时变量与左边的元素进行异或运算,并将结果赋值给当前元素。这样,就可以实现两个元素的交换,而不需要使用额外的空间。而且,由于异或运算非常快速,这个排序过程也非常高效。

通过这两个步骤,AlphaSort就可以完成对数据集的排序。它不仅在时间上比经典排序算法更快,在空间上也更节省。它展示了人工智能在发现新颖和优化的算法方面的潜力和创造力。

AlphaDev发现的其他新算法

除了排序算法之外,AlphaDev还发现了其他领域的新算法。例如,在矩阵乘法领域,AlphaDev发现了一种能够将矩阵乘法速度提高30%的新算法,并且命名为AlphaMul¹²。矩阵乘法是计算机科学中最基本也最重要的一种运算,它涉及到数学、物理、工程、图形学、机器学习等各种领域和应用。AlphaMul的原理是利用一种称为Strassen算法的分治法,将一个大的矩阵乘法问题分解为若干个小的矩阵乘法问题,并且使用一种更加高效和巧妙的方法来组合这些小问题的结果,从而减少了运算量和时间。

另一个领域是密码学,AlphaDev发现了一种能够将哈希算法速度提高30%的新算法,并且命名为AlphaHash¹。哈希算法是一种用来将任意长度的数据映射为固定长度的摘要的方法,它在密码学中有着广泛的应用,如数字签名、消息认证码、身份验证等。哈希算法的一个重要特性是抗碰撞性,也就是说,很难找到两个不同的数据,使得它们的哈希值相同。AlphaHash的原理是利用一种称为Merkle-Damgård结构的方法,将一个长数据分割为若干个短数据,并且使用一个压缩函数和一个初始化向量来逐步计算哈希值。AlphaHash的创新之处在于它使用了一种更加高效和巧妙的压缩函数,它使用了一种类似于AlphaSort中的异或运算和交换操作,从而减少了运算量和时间。

通过这些例子,我们可以看到AlphaDev在不同领域都能够发现新颖和优化的算法,而且这些算法都已经被应用到了实际的编程语言和库中,为全球数以百万计的开发者和公司提供了更强大和更可持续的计算能力。

结论

AlphaDev是一种基于强化学习的人工智能系统,它能够自主地发现更快更好的计算机科学算法,超越了人类数十年来的研究成果。它利用了一种将寻找算法视为游戏的思路,并且直接使用汇编指令来生成算法,从而突破了人类已有的算法或编程语言的限制。它在排序、矩阵乘法、哈希等领域都发现了新的算法,并且这些算法已经被加入到了C++等流行的编程语言中,改变了计算的基础和未来。

AlphaDev是人工智能在创造人工智能方面的一个重要里程碑,它展示了人工智能在解决复杂和困难的问题方面的潜力和创造力。它也为我们提出了一些新的挑战和问题,如如何理解和验证人工智能生成的算法,如何保证人工智能生成的算法符合道德和社会标准,以及如何平衡人类与人工智能之间的协作与竞争。这些问题需要我们进一步地探索和研究,以确保人工智能能够为我们带来更多的利益而不是风险。

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYedPQA6' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片