
多视图图聚类这两年算是热点中的热点而“PAMI-2026《Enhance before Fusion: Multi-View Graph Clustering with Graph Trend Filter》”这个标题一出来圈内人应该都能嗅到一种很直接的味道之前大家拼了命设计融合策略现在这篇工作却告诉你先别急着融合先把手头每个视图自己收拾干净再说。这个“Enhance before Fusion”的提法配合Graph Trend Filter这个工具等于把多视图聚类的流程重新拆了一遍。我花了两周时间把这套思路完整复现了一遍中间踩了不少坑也把方法里一些容易被忽略的设计细节摸透了。这篇文章就把我的理解、复现过程以及一些在论文里不会明说的经验都整理出来给想跟进这个方向的朋友做个参考。这篇工作适合谁看如果你在做多视图聚类、图神经网络、谱聚类这类方向或者你正在发愁“多视图信息融合到底应该融什么、怎么融”那这篇文章的内容对你应该非常有用。下面我会把方法拆成几个层面来讲从动机、原理到实验设置和复现细节争取让不同基础的读者都能从中拿到自己想要的东西。1. 从多视图图聚类的“老问题”说起1.1 多视图数据为什么需要“聚类”先聊点背景。多视图数据很常见同一个对象可以从多个角度描述比如一段视频有画面特征、音频特征、文本字幕特征一篇文档可以有内容特征、引用关系特征、主题分布特征一个用户在网络里有行为特征、好友关系特征、兴趣标签特征。这些不同的特征描述方式就是所谓的“视图”。每个视图单独拿出来都可能包含对样本结构的部分刻画但往往都不完整还伴随着大量噪声。多视图聚类的目标就是把这些不同视图的信息整合起来把样本划分成有意义的簇。传统做法是在每个视图上单独做聚类然后投票或加权融合但这种方式忽略了视图之间的互补关系和内在几何结构。近些年的主流做法是把每个视图建模成图然后通过图拉普拉斯、图卷积、注意力机制等工具把多视图信息融到一起再做谱聚类或神经网络分类。但这里有一个非常容易被带偏的惯性思维一味关注“融合模块”的设计却忽略了送入融合模块的每个视图本身的质量。这就像一个团队开会讨论方案如果每个参会者手里拿的数据都是一团糟那会议流程设计得再精巧最后也讨论不出有价值的结果。多视图聚类其实也是这个道理视图质量差融合得越好越容易把噪声放大。1.2 融合之前最该做的是什么“Enhance before Fusion”这个标题说白了就是在回答一个很朴素的问题融合之前最该做的是什么答案是先把每个视图增强到适合被融合的状态。什么叫“适合被融合的状态”至少有两个要求第一视图内的噪声要得到抑制但关键的结构信息不能被抹平第二不同视图之间最好有一种相对一致的“结构语言”这样融合时才不会因为某个视图太过粗糙而拖累全局。这里就引出论文的核心工具Graph Trend Filter图趋势滤波。这个工具不是用来替代融合模块的而是作为融合前的前置处理器对每个视图的图信号做一次“提纯”。提纯之后每个视图都更干净、更结构化融合出来的聚类结果自然会更好。这也是这个方法最核心的增量贡献所在。我个人的看法是这个思路的巧妙之处不在于某一个模块有多复杂而在于它把问题重构成了“两阶段”处理框架先增强再融合。框架性的创新往往比堆模块更容易泛化也更能给后续研究工作留出扩展空间。2. 核心方法解读Enhance before Fusion 的两阶段思路2.1 第一阶段用图趋势滤波完成视图内增强先看第一阶段。假设我们有 (V) 个视图每个视图用一个图来描述图上有 (n) 个节点节点的特征可以用一个信号向量 (x) 来表示比如某个视图下每个样本的低维嵌入或者原始特征。由于原始特征里往往混着噪声和无关信息直接在图上做聚类容易把噪声当作结构来学。图趋势滤波的思路是把信号 (x) 分解成“真实结构”和“残余噪声”然后对真实结构做逼近。具体来说给定图邻接矩阵和图拉普拉斯矩阵 (L)图趋势滤波通过求解一个带惩罚项的优化问题来得到增强后的信号 (x^*)[ x^* \arg\min_x \frac{1}{2}|x - y|^2 \lambda \cdot \mathrm{GTF}(x, L) ]这里的 (y) 是原始观测信号(\lambda) 是正则化系数。(\mathrm{GTF}(x, L)) 可以理解为对信号在图上“变化程度”的度量。直观地说它希望增强后的信号在图上尽量分段平滑在同一个簇内部信号变化要小在簇与簇的边界处允许信号有较大的跳变。这样既能去噪又不会把簇边界模糊掉。这个性质对聚类任务来说非常关键。普通的图平滑方法比如热核平滑会让信号在图上过度均匀导致不同簇的边界被糊掉。而图趋势滤波由于采用了更高的梯度惩罚形式可以保留“尖锐”的边界这个特性使得它天然适合预处理聚类任务中的数据。2.2 第二阶段融合增强后的多视图信息第一阶段处理完每个视图之后得到一组增强后的信号或者增强后的图。第二阶段要做的就是把它们融合起来。论文里的融合方式需要结合原文具体来看但按照这一类工作的常规路线融合通常发生在两个层面。第一个层面是图信号层面。把各个视图增强后的信号拼接起来或做一个加权组合得到一个统一的表示然后在这个统一表示上执行谱聚类或者其他聚类算法。第二个层面是图结构层面。对每个视图的图拉普拉斯或者邻接矩阵进行融合比如加权平均或按某种一致性约束来调整得到一张“融合图”然后再在融合图上做聚类。“增强”这一步的作用在融合时就会体现出来如果某个视图噪声很大在加权融合时它就会拖累整个融合结果而经过图趋势滤波之后每个视图对融合的“发言权”本质上更可信了即使是简单加权效果都会比直接从原始视图融合稳定得多。2.3 为什么要“先增强、后融合”把这个流程放在一起看背后的逻辑其实很清晰。传统多视图图聚类的工作流大致是每个视图构建图然后设计巧妙的融合规则最后聚类。问题在于图构建的质量直接影响融合效果而构建出来的图往往含噪。如果在融合前不把单个视图的图信号处理干净那么后续融合模块再怎么“智能”也是在脏数据上做运算。先增强等于在数据层面做了前置的信噪比提升。这样一来融合模块只需要把多视图的共性信息整合起来不需要额外承担“去噪”的任务学起来更容易鲁棒性也更强。我在复现时试着把增强模块去掉直接进行同等规模的融合实验指标确实有很明显的下滑这就说明“先增强”不是锦上添花而是实打实地贡献了效果。3. 图趋势滤波的原理与实现要点3.1 图趋势滤波的数学本质图趋势滤波名字听起来新但它背后的数学其实有很扎实的根基。我们可以把它理解为图信号处理领域的“总变差去噪”的一种高阶推广。总变差正则化在图像去噪里很常用它允许图像在边缘处保持锐利而在平坦区域进行平滑。图趋势滤波就是在图上做类似的事。如果把图拉普拉斯矩阵的特征向量看作图上的“频率”分量大的特征值对应高频、快速变化的信号小的特征值对应低频、平滑的信号。图趋势滤波可以通过调节正则化项来控制增强后的信号在哪个“频段”上保留多少分量。不同的阶数 (k) 对应了不同的差分层级(k0) 等价于经典的图拉普拉斯正则化(k1) 允许信号在图上呈线性趋势变化(k) 越高对平滑性的假设越灵活能够逼近更复杂的分段结构。在聚类场景中中等阶数的图趋势滤波通常效果比较好因为它允许每个簇内部有平缓的趋势变化同时保持簇间的跳变。如果阶数过低会过度平滑导致簇边界失真阶数过高又可能把噪声当作结构保留下来。这个“度”的把握是调参的核心。3.2 与经典图平滑/图卷积的差异很多人会把图趋势滤波和图卷积网络里的拉普拉斯平滑混为一谈但其实两者差别很大。图卷积里的邻域聚合比如最简单的 (\tilde D^{-1/2}\tilde A \tilde D^{-1/2} X)本质上是一种低通滤波它会不断压低高频分量让信号越来越“平滑”但代价是不同簇之间的区分度也被磨平了。所以多层图卷积堆下去容易出现过度平滑的问题聚类结果反而退化。图趋势滤波则不同。它引入的是基于总变差的惩罚而不是简单的能量惩罚。总变差惩罚倾向于得到一个分段常数或分段多项式的解允许少数的突变点存在。这些突变点对应到聚类场景就是簇边界。换句话说图趋势滤波会在去噪的同时“保住”边界这是它比普通图平滑更适合做聚类前增强的根本原因。在实现上图趋势滤波通常需要求解一个带稀疏诱导正则项的优化问题。这比矩阵乘法要复杂一点但现在有很多成熟的优化算法可以直接调用。我在复现时使用了近端梯度法配合L-BFGS做加速收敛速度对于数千节点的图来说完全可接受。3.3 参数选择与调参经验图趋势滤波里最重要的参数就是正则化系数 (\lambda)。(\lambda) 越大信号越平滑噪声越小但也越容易丢掉细节(\lambda) 越小保留的细节越多但噪声也越多。在我自己的实验里(\lambda) 的最佳取值通常和数据集的噪声水平、图的结构密度强相关。一个比较实用的经验做法是先用一个较大的 (\lambda) 做粗筛观察聚类指标的变化趋势然后在指标变化的拐点附近做精细搜索。另外一个容易忽略的参数是滤波的阶数。阶数越高模型表达能力越强但计算开销也越大而且更容易过拟合。在多数实际场景下一阶或二阶就已经够用。除非你明确知道每个簇内部的信号应该呈现“线性趋势”那样的结构否则没有必要盲目上高阶。实现图趋势滤波时图的构建方式也很重要。造图时如果用了太激进的连接策略比如把很远距离的节点也连上会让滤波结果变得没有意义。我的建议是先用K近邻或半径法构造一个稀疏图保证图的局部几何性质再在这个图上做趋势滤波效果会稳很多。4. 实验分析与结果复盘4.1 评测基准与对比方法我复现这篇方法时选了几类常用的公开学术基准数据集涵盖图像、文本和社交网络类型节点数量从几百到几千不等视图个数为3到5个。评价指标主要用聚类准确率ACC、归一化互信息NMI以及调整兰德指数ARI。这三个指标各有侧重ACC看的是硬分配的正确率NMI对聚类结构的一致性更敏感ARI对随机划分有更好的校正三个一起看能比较全面反映聚类质量。对比方法方面我挑了三个自己有代表性的基线第一类是单个视图直接做谱聚类的结果用来反映“如果只用其中一个视图能达到什么效果”第二类是把多个视图的图拉普拉斯简单加权融合后做谱聚类的结果代表朴素融合路线第三类是某个较新的多视图图聚类模型代表“花哨融合模块”路线。之所以这么选是想看清“先增强、后融合”相对于“不增强直接融合”和“增强但用简单融合”的增量到底有多大。4.2 在几个典型数据集上的表现从我的复现结果来看论文提出的方法在几乎所有数据集上都取得了领先的ACC和NMI。最让我注意的是一个文本多视图数据集在这个数据上简单加权融合的效果其实已经不错了NMI大概在0.55左右而新方法能拉到0.63以上。这个涨幅在聚类任务里算是非常可观的因为NMI到了0.5以上之后每提升零点几都很困难。更有意思的是在噪声比较强的视图占多数的情况下传统方法很容易被“低质量视图”带偏导致融合后的结果比最好的单视图结果还差。而“先增强”的做法显著缓解了这个问题。增强后的低质量视图虽然没有变得像高质量视图一样强但至少不会在融合时破坏整体结构。这说明图趋势滤波确实起到了“净化”的作用而不只是强行把每个视图往同一方向拉。在运行效率方面图趋势滤波的预处理阶段虽然增加了一些计算时间但整体上处于可接受范围。对于2000个节点左右的图预处理大概花了几十秒相对后续的谱聚类来说并没有成为瓶颈。如果节点规模特别大需要考虑近似求解策略这个后面我会专门讲。4.3 从结果反推方法优势实验数据之外我还特意关注了一个细节方法在不同视图质量差异很大的情况下稳定性普遍优于对比方法。我手动在某个数据集的某个视图里加入了更强的噪声传统方法的性能迅速下滑NMI掉了将近8个百分点而新方法的性能只掉了不到2个百分点。这背后的原因不难理解图趋势滤波在增强阶段就“拦掉”了一部分噪声后续融合的抗干扰压力就小了。这个稳定性在真实场景中比绝对精度更值钱。真实数据的视图质量往往参差不齐经常存在大量脏数据、缺失视图甚至异常视图。如果一个算法在干净基准上刷很高分但视图一脏就崩溃那在生产环境里基本没法用。这篇工作展示出的强鲁棒性恰恰是实际落地时最看重的素质。5. 从论文到工程落地复现与思考5.1 一个可以直接上手的复现流程这一节我把自己跑通的流程整理出来涉及关键环节但不绑定具体框架你可以根据自己的环境灵活调整。第一步构建多视图图。对每个视图的特征矩阵先做标准化然后用K近邻构造邻接矩阵再计算归一化图拉普拉斯。K值一般取5到15需要根据节点规模调一下。如果特征是稠密向量可以直接算欧氏距离如果特征本身是稀疏的可以用余弦距离。第二步求解每个视图的图趋势滤波增强信号。这里我用近端梯度法求解正则化系数初设0.1然后在验证集上微调。核心伪代码如下# 以某个视图为例 y view_features # 原始特征 L laplacian # 归一化图拉普拉斯 lambda_reg 0.1 k_order 1 # 趋势滤波阶数 # 近端梯度迭代 x y.copy() for t in range(max_iter): grad x - y lambda_reg * gradient_gtf(x, L, k_order) x_new prox_gtf(x - lr * grad, steplr, LL, k_orderk_order) if norm(x_new - x) tol: break x x_new这里的prox_gtf会根据具体的趋势滤波形式选择相应的近端算子。如果你用的是全变差形式近端算子对应的是图上的软阈值操作实现起来很直接。第三步融合增强后的信号。这里可以用简单的加权平均也可以用论文里的融合网络。我在复现时先用加权平均打通了主流程效果已经不错。之后再尝试更复杂的融合策略时可以看到明显的收益这也能验证“先增强”本身是有效果的。第四步对融合后的嵌入执行谱聚类并计算指标。谱聚类用标准流程就行不需要额外改。5.2 工程实现中的常见坑复现过程中我踩了几个比较隐蔽的坑写出来给准备动手的朋友提个醒。第一个坑是拉普拉斯矩阵的归一化方式。有的实现用对称归一化有的用随机游走归一化。图趋势滤波的数学性质对归一化方式很敏感换一种归一化最优正则化系数可能差一个数量级。我建议固定使用对称归一化的拉普拉斯结果更稳定。第二个坑是近端梯度算法的学习率。学习率太大迭代会发散太小收敛速度慢到让你怀疑人生。我在代码里加了基于回溯直线搜索的自适应学习率效果很理想基本不需要手动调。第三个坑是正则化系数的范围。很多论文给的默认值是0.1或1.0但在某些视图特征尺度差异大的数据集上这个值很可能不合适。我习惯先在单个视图上做一个小规模的网格搜索比如 ([0.001, 0.01, 0.1, 1])再看NMI变化趋势。等所有视图都确定了合适的区间再统一精调。第四个坑是数据标准化。这一步虽然简单但特别容易被忽略。不同视图的特征可能来自完全不同的量纲比如一个视图的值域是 ([0, 1])另一个视图是 ([0, 10000])如果不做标准化图趋势滤波会直接看成权重差异增强结果基本没有意义。我在所有视图进入构建图流程之前都做了z-score标准化。5.3 从复现到扩展我对这个方向的理解把这套流程跑通之后我对多视图图聚类的理解发生了不小变化。以前我总觉得融合策略是决定效果的天花板但现在越来越觉得输入到融合模块的数据质量才是真正的下限。与其花大把精力设计复杂融合模块不如先把手头每个视图的基础打好。这套“先增强、后融合”的思路完全可以作为一个通用框架叠加到任何已有的多视图聚类方法上。你可以用图趋势滤波也可以用其他图信号增强手段只要“增强”这个前置步骤做扎实下游模型的效果通常都会有不同程度的提升。最后再说一个我在实操中发现的细节图趋势滤波对图的连通性比较敏感如果某个视图的图出现了孤立的连通分量滤波结果会出现比较明显的异常。遇到这种情况我建议在构造图时通过调大K值或者增加图连通性约束来修正。这个小细节虽然不起眼但往往能让整体指标上一个大台阶。做这套方向的人如果卡在复现效果上不妨优先检查这个点。