Page 51 - 《软件学报》2026年第3期
P. 51
1014 软件学报 2026 年第 37 卷第 3 期
基于上述观察, 本文提出了一种数据密度驱动的动态更新资源分配策略. 该策略通过计算每个数据点的变化
幅度和周围数据的密度, 估算其邻居关系的变化程度, 并据此为每个数据点针对性地分配检查次数. 这种策略确保
了邻居关系变化较大的数据点获得更多检查次数, 从而提高这些区域的 K 近邻图的准确性. 而对于邻居变化较小
的区域, 这种方法则可以减少不必要的检查次数.
为了实现这一策略, 首先需要为数据密度提供一种量化的评估方法. 对于每个数据点来说, 与其最近的邻居不
再是 K 近邻的变化不容易发生, 因为要改变这种邻居关系, 需要相对较大的嵌入向量变化. 相反, 那些相对较远的
邻居更容易发生不再是 K 近邻的变化. 并且, 如果这些较远的 K 近邻点与数据点的距离比较接近, 则说明它们在
空间距离上比较密集, 小幅度的变化可能显著影响它们的顺序, 甚至使原本非 K 近邻的点成为 K 近邻. 基于上述
分析, 我们选取 K 近邻中靠后的若干个近邻 (例如, 对于 100 近邻图选择后 40 个近邻), 并使用它们距离极差的倒
数来衡量数据密度. 若这些近邻的极差较大, 说明该点周围邻居的距离差异较大, 数据密度较小, 量化指标较小
(例如图 5 中的蓝色点周围). 另一方面, 数据点微调前后的变化幅度可以直接通过微调前后嵌入向量的距离来衡量.
在图 6 中, 我们绘制了微调前后嵌入向量变化幅度与周围密度的乘积以及 K 近邻变化数量的散点图. 结果表
明, 该乘积与 K 近邻变化数量之间有较强的正相关性. 这表明该值较大时, K 近邻变化的幅度更有可能较大.
60
30
K 近邻变化数量 20 K 近邻变化数量 40
10 20
0 5 10 15 20 25 0 5 10 15 20 25
嵌入向量变化幅度与周围密度乘积 嵌入向量变化幅度与周围密度乘积
(a) Stack 数据集 (b) Wiki 数据集
图 6 嵌入向量变化幅度与数据周围密度的乘积与 K 近邻变化数量的相关性
基于这一观察, 我们将该乘积作为权重, 为不同数据点分配不同的检查次数. 通过这种方式, 算法能够根据邻
居关系的变化幅度, 动态调整各数据点的检查次数: 对于邻居关系变化较大的区域, 分配更多计算资源, 从而进行
更精细的邻居搜索和更新; 在邻居关系变化较小的区域, 则采用较低频的更新策略, 从而减少不必要的计算开销.
通过这一机制, 有限的计算资源能够得到更合理的分配, 使得 K 近邻图能够在保证质量的同时实现高效更新, 从
而更准确地反映微调后嵌入向量的嵌入空间结构.
4 实验与分析
4.1 实验设置
为了验证本文方法的有效性, 我们在如下 3 个广泛使用的真实数据集上进行实验.
● StackExchange (Stack) 数据集 (https://huggingface.co/datasets/teven/stackexchange)
● Wikipedia (Wiki) 数据集 (https://huggingface.co/datasets/wikimedia/wikipedia)
● DigiFace 数据集 (https://microsoft.github.io/DigiFace1M/)
其中, StackExchange 和 Wikipedia 是文本数据集. 除此以外, 为了验证本文方法在其他模态数据上的适用性,
我们还在广泛使用的图像数据集 DigiFace [21] 上进行了实验, 针对图像模态的数据进行评估.
数据集的详细参数如表 1 所示.

