谷歌使用深度强化学习发现了更快的排序算法

来源: 投稿
作者: 罗奇奇
2023-06-08 09:08:00

谷歌旗下 AI 实验室 DeepMind 的工程师团队在 Nature 官网发表了一篇论文,称使用深度强化学习发现了更快的排序算法。

排序或散列等基本算法在一天内的使用量可达数万亿次,随着计算需求的增长,让这些算法尽可能高效变得至关重要。基础排序算法在过去取得了显著的进步,但如要进一步提高这些算法例程的效率,对人类科学家和已知的计算方法都具有挑战性。

而 DeepMind 通过将“寻找更好的排序程序”任务制定成一个名为 AssemblyGame 的单人游戏。在这个游戏中,玩家需要选择一系列低级 CPU 指令(汇编指令),然后将其组合起来产生一种新的高效排序算法。

然后 DeepMind 训练了一个新的深度强化学习代理 ”AlphaDev“ 来玩这个游戏,AlphaDev 的主要学习算法是 AlphaZero 代理的扩展,并使用深度神经网络指导蒙特卡洛树搜索 (MCTS) 规划过程。

(完整的训练过程和细节分析可以在 deepmind 的论文中细细阅读)

最终,AlphaDev 从零开始地发现了几项新的小型排序算法,分别可用于对大小为 3、4 和 5 的列表进行排序,且均优于已知的人类基准

目前这些算法已经集成到 LLVM 标准 C++ 排序库  中,使用强化学习的新算法替换掉了原有的 LLVM libc++ 标准排序 3、排序 4 和排序 5 算法,这些基础算法是 C++ 排序库的基本组件,通常被较大的排序算法多次调用。

值得一提的是,DeepMind 的提交是十多年来对 LLVM libc+ 排序算法子程序的首次更改。

展开阅读全文
点击加入讨论🔥(10) 发布并加入讨论🔥
本篇精彩评论
用libc+的重新编译一下程序就能直接享受到红利了. 不需要知道原理, 也不是通用算法. 但就是有效. 对这类基础算法,即使是部分情况下能提升1%,2%,也是极大的进步了.
2023-06-08 11:14
3
举报
不知道MSVC和GCC会不会趁机抄走,用在自己的标准库。
2023-06-08 15:57
1
举报
简单看了一下 https://www.nature.com/articles/s41586-023-06004-9 应该是针对一些简单基础的大小为 3、4 和 5列表进行排序的汇编级代码优化(例如3个元素的排序,汇编代码从18行优化为17行),上层的高级语言例如C/C++, Python 等不需要重写
2023-06-08 10:19
1
举报
这种排序算法是面向结果编程,根本不是通用排序算法,没有用的
2023-06-08 09:58
1
举报
10 评论
4 收藏
分享
返回顶部
顶部