排序算法一直以来都是计算机科学中最基本且重要的组成部分。从简单的冒泡排序到复杂的桶排序,众多算法已经被开发出来,但在大数据和机器学习的时代背景下,这些传统方法在大规模场景下的稳定性和效率仍需提升。中国科学技术大学和兰州大学的研究团队提出了一种基于机器学习的排序算法,该算法能够达到 O(N) 的时间复杂度,并能够在 GPU 和 TPU 上实现高效并行计算。
尽管目前已有大量出色的排序算法,但基于比较的传统算法仍然受到 Ω(N log N) 的基本需求限制,这意味着它们的时间复杂度至少为 O(N log N)。近年来,随着大数据的广泛应用,提高排序算法的效率变得尤为重要。许多顶尖的排序算法利用并行计算技术处理大规模数据集,取得了显著成效。例如,阿里巴巴在 2015 年推出的 FuxiSort 算法,在 Apsara 平台上实现了高效排序。同样,腾讯在 2016 年开发的 Tencent Sort 算法,能够以每分钟 60.7 TB 的速度排序 100 TB 数据。
与此同时,机器学习技术在过去几年里迅速发展,并广泛应用于图像识别、语音识别和自然语言处理等领域。神经网络方法通过模仿人脑结构,使用多层神经元进行数据处理。这些神经元通过调整连接权重来捕捉数据间的关联,从而实现从输入到输出的映射。这一特性促使研究者将机器学习技术应用于排序问题,将其视为从数据到其在数据集中位置的映射。
在这篇论文中,研究者提出了一种基于机器学习的排序算法,该算法的时间复杂度为 O(N·M),其中 M 是神经网络隐藏层中的神经元数量。通过使用一个小规模数据集训练一个 3 层神经网络,研究人员可以近似估计大规模数据集的分布情况。在推理阶段,通过应用该神经网络,可以快速预测每个数据在排序序列中的位置,从而大幅减少排序所需的时间。
算法的核心在于将排序问题转化为一种双映射函数 G(xi) = ri,其中 xi 表示数据,ri 表示其在排序序列中的位置。如果可以预先确定这个函数,那么排序算法的复杂度就可以简化为 O(N)。为了实现这一目标,研究人员使用了广义支持向量机(GVM)来拟合概率密度函数 f(x)。GVM 是一种具有隐藏层的 3 层神经网络,其结构在实验中进行了详细说明。通过这种方法,研究人员不仅提高了排序算法的效率,还使其适用于并行计算环境,特别是 GPU 和 TPU。
实验结果表明,该算法在处理不同分布的数据时表现出色。与传统的 Tim Sort 相比,该算法在处理大数据集时能够显著缩短运行时间。这项研究成果展示了机器学习在基础算法领域的巨大潜力,并为未来的研究提供了新的方向。
论文题目:《O(N) 排序算法:机器学习排序》
论文地址:https://arxiv.org/pdf/1805.04272.pdf
该研究提出的基于机器学习的排序算法,不仅在大数据处理方面具有巨大潜力,还能在 GPU 和 TPU 上实现高效并行计算。此外,该算法还被应用到稀疏哈希表中,进一步拓宽了其应用场景。