无数据模型融合实验笔记:从直接平均失效到神经元对齐与 MCA-Fusion

发布时间:2026/7/7 1:46:41
无数据模型融合实验笔记:从直接平均失效到神经元对齐与 MCA-Fusion 这是一份面向可复制的无数据模型融合实验笔记记录了我从问题理解、工程重构、模型训练、直接平均、匈牙利神经元对齐、置换等价性验证到匹配置信度感知自适应融合 MCA-Fusion 的完整落地过程。本文的重点不是堆复杂模型而是把“同构模型为什么不能直接平均参数”这件事讲清楚并给出一套可以复现实验结果的最短路径。目录一、项目背景与问题定义1.1 为什么关注模型融合1.2 “无数据”到底是什么意思1.3 本文要解决的问题二、实验设置与工程结构2.1 数据集与模型结构2.2 运行环境2.3 工程目录三、直接参数平均为什么会失败3.1 最自然的 baselineDirect Average3.2 直接平均隐含的假设3.3 隐藏层神经元没有固定编号语义四、置换等价性验证4.1 为什么要做这个验证4.2 实验设计4.3 实验结果五、基于匈牙利算法的神经元对齐融合5.1 方法思路5.2 神经元距离矩阵5.3 匈牙利匹配5.4 参数重排规则对齐 fc1 时对齐 fc2 时输出层不重排5.5 Hungarian Fusion5.6 Hungarian Fusion 实验结果六、MCA-Fusion匹配置信度感知的自适应融合6.1 为什么还要改进 Hungarian Fusion6.2 MCA-Fusion 的核心思想6.3 匹配置信度计算6.4 分层参数融合规则6.5 MCA-Fusion 与 Hungarian Fusion 的区别七、实验结果与分析7.1 主实验结果7.2 结果解读7.3 Alpha 分布分析7.4 Alpha 扫描实验7.5 置换验证结果再解读八、复现流程与运行命令8.1 训练源模型8.2 运行 Direct Average 与 Hungarian Fusion8.3 运行置换等价性验证8.4 运行 MCA-Fusion8.5 绘制实验图九、结果文件说明9.1 CSV / NPY 文件9.2 图片文件十、踩坑与复盘10.1 “无数据”这个说法一定要讲清楚10.2 直接平均失败不是因为源模型训练差10.3 置换实验比普通对比实验更有解释力10.4 重排神经元时不能只改当前层10.5 输出层不能重排10.6 MCA-Fusion 不能只停留在“每个神经元一个 α”10.7 当前实验还不能过度外推十一、我的理解与思考11.1 参数空间里的“同一个位置”不一定代表同一个功能11.2 简单实验也可以形成完整证据链11.3 方法改进需要解决真实问题十二、总结十三、致谢论文参考地址arXiv 论文链接作者主页作者主页项目说明本文为本科科研项目实验记录代码为个人重构工程暂未公开仓库。一、项目背景与问题定义1.1 为什么关注模型融合在深度学习中模型融合是一个很自然的问题。如果我们已经有两个训练好的模型Model A Model B它们结构相同任务相同而且单独测试时效果都不错那么一个直观的问题是能不能把这两个模型融合成一个新的模型传统集成学习通常是在输出层面做融合比如多个模型分别预测然后对 logits、概率或投票结果进行平均。但本文关注的是更底层的方式不融合输出结果而是直接融合模型参数。也就是说我们希望得到一个新的模型Fused Model它不是通过重新训练得到的而是由两个源模型的参数融合得到的。1.2 “无数据”到底是什么意思本文中的“无数据模型融合”需要先说清楚。这里的“无数据”不是说整个项目完全不用数据。在本文实验中训练源模型 A / B 时使用 MNIST测试融合模型时也使用 MNIST但在融合阶段不使用原始训练数据。也就是说融合阶段只允许访问Model A 的参数 Model B 的参数不使用训练样本 训练标签 训练过程中的梯度因此本文所说的“无数据”准确含义是融合阶段无原始训练数据仅根据已经训练好的模型参数进行融合。这一点很重要否则很容易误解成“没有数据也能训练模型”。1.3 本文要解决的问题最自然的参数融合方式是直接平均θ_fused 0.5 θ_A 0.5 θ_B如果两个模型结构完全一样看起来每个参数都有对应位置fc1.weight 对 fc1.weight fc1.bias 对 fc1.bias fc2.weight 对 fc2.weight fc2.bias 对 fc2.bias fc3.weight 对 fc3.weight fc3.bias 对 fc3.bias那么直接平均似乎是合理的。但实验发现两个源模型单独测试都接近 97%直接平均后却只剩 68.36%。这说明同构模型之间不能简单地按参数下标直接平均。本文围绕这个现象主要回答三个问题直接参数平均为什么会失败能不能通过隐藏层神经元对齐缓解失败能不能进一步根据匹配置信度自适应控制融合强度二、实验设置与工程结构2.1 数据集与模型结构本文实验使用 MNIST 数据集。源模型为一个简单 MLP 分类器Input: 784 fc1: 784 → 64 ReLU fc2: 64 → 64 ReLU fc3: 64 → 10 Output logits训练配置如下配置项取值数据集MNIST模型MLPClassifierepoch5batch size128optimizerAdamlearning rate1e-3Model A seed2024Model B seed2025输出层为 10 个类别对应 MNIST 的数字 0 到 9。2.2 运行环境我的实验环境如下OS: Windows Conda env: agentcf Python: 3.11.13 torch: 2.5.1cu121 torchvision: 0.20.1cu121 CUDA available: True GPU: NVIDIA GeForce RTX 4060 Laptop GPU这里的 conda 环境名叫agentcf只是沿用了我之前的环境名和本文项目内容没有关系。后续运行命令统一使用conda run-n agentcf python scripts/xxx.py2.3 工程目录为了避免旧代码混乱我重新搭建了一个干净工程fly_model/ ├─ README.md ├─ requirements.txt ├─ configs/ │ └─ default.yaml ├─ src/ │ ├─ __init__.py │ ├─ data.py │ ├─ models.py │ ├─ train.py │ ├─ evaluate.py │ ├─ align.py │ ├─ fuse.py │ ├─ confidence_fuse.py │ ├─ experiments.py │ └─ plot.py ├─ scripts/ │ ├─ 01_train_models.py │ ├─ 02_run_fusion.py │ ├─ 03_run_multi_seed.py │ ├─ 04_permutation_sanity_check.py │ ├─ 05_plot_results.py │ ├─ 06_generate_report.py │ ├─ 07_run_mca_fusion.py │ ├─ 08_plot_mca_results.py │ └─ 09_plot_permutation_validation.py ├─ checkpoints/ ├─ results/ ├─ figures/ ├─ report/ └─ data/其中比较关键的文件如下文件作用src/models.py定义 MLPClassifiersrc/train.py训练源模型src/evaluate.py测试模型准确率src/align.py神经元匹配与参数重排src/fuse.py直接平均与 Hungarian Fusionsrc/confidence_fuse.pyMCA-Fusionscripts/04_permutation_sanity_check.py置换等价性验证scripts/07_run_mca_fusion.py运行 MCA-Fusion 实验三、直接参数平均为什么会失败3.1 最自然的 baselineDirect Average最简单的模型参数融合方式就是直接平均θ_fused (1 - α) θ_A α θ_B当α 0.5时就是两个模型的参数逐项平均。这个方法看起来合理因为 Model A 和 Model B 的结构完全相同。但实验结果如下方法Test AccuracyModel A96.79%Model B96.88%Direct Average68.36%两个源模型单独测试都接近 97%但是直接平均后只有 68.36%。这说明同构模型之间不能简单地按相同参数下标直接平均。3.2 直接平均隐含的假设直接平均其实隐含了一个假设Model A 和 Model B 中同编号隐藏层神经元是对应的。也就是说它默认Model A 的第 1 个隐藏神经元 ↔ Model B 的第 1 个隐藏神经元 Model A 的第 2 个隐藏神经元 ↔ Model B 的第 2 个隐藏神经元 Model A 的第 3 个隐藏神经元 ↔ Model B 的第 3 个隐藏神经元 ...但是这个假设通常不成立。Model A 和 Model B 是独立随机初始化、独立训练出来的。即使两个模型结构一样、任务一样、最终功能相近它们隐藏层神经元的排列顺序也不一定一致。可能出现的是Model A 的第 5 个神经元 ≈ Model B 的第 27 个神经元而不是Model A 的第 5 个神经元 ≈ Model B 的第 5 个神经元因此直接平均可能会把两个功能不对应的神经元强行混在一起导致融合模型性能下降。3.3 隐藏层神经元没有固定编号语义对于隐藏层来说“第几个神经元”本身没有固定语义。如果交换隐藏层中两个神经元的位置同时同步调整下一层的连接关系模型整体函数可以保持不变。也就是说隐藏层神经元可以重新排序只要前后连接同步调整模型功能不变。这就是神经元置换对称性。输出层则不同。对于 MNIST输出层 10 个节点分别对应数字 0 到 9输出节点 0 → 数字 0 输出节点 1 → 数字 1 ... 输出节点 9 → 数字 9因此输出层类别节点具有固定语义不能随便重排。四、置换等价性验证4.1 为什么要做这个验证主实验中 Direct Average 从 96% 左右掉到 68.36%只能说明直接平均失败了。但它还不能完全说明失败原因。为了验证“隐藏层神经元顺序不对齐”确实会破坏直接平均我做了一个置换等价性验证实验。这个实验的思路是先构造一个与 Model A 功能完全相同、但隐藏层神经元顺序不同的模型 A_perm然后看直接平均会不会失败。4.2 实验设计首先拿已经训练好的 Model A。然后人为打乱它的隐藏层神经元顺序得到A_perm注意这里的打乱不是随便改参数而是同步调整前后层连接关系因此模型整体函数不变。例如对齐 fc1 时需要同步处理fc1.weight 的行 fc1.bias fc2.weight 的列对齐 fc2 时需要同步处理fc2.weight 的行 fc2.bias fc3.weight 的列这样得到的 A_perm 和 Model A 虽然参数排列不同但模型函数保持一致。4.3 实验结果方法Test AccuracyModel A96.79%A_perm96.79%Direct Average(A, A_perm)57.72%Hungarian Fusion(A, A_perm)96.79%结果可以分三步理解。第一Model A 96.79% A_perm 96.79%说明隐藏层神经元顺序改变后只要前后层连接同步调整模型功能不变。第二Direct Average(A, A_perm) 57.72%A 和 A_perm 本质上是同一个模型只是隐藏层顺序不同。但直接平均后准确率掉到 57.72%。这说明哪怕两个模型功能相同只要隐藏神经元顺序没有对齐直接参数平均也会崩。第三Hungarian Fusion(A, A_perm) 96.79%只要先对齐神经元再做融合性能就可以恢复。因此置换等价性验证不是单纯展示结果而是在验证直接平均失败的核心原因之一就是隐藏层神经元顺序不对齐。五、基于匈牙利算法的神经元对齐融合5.1 方法思路既然问题出在神经元顺序不一致那么解决方案就很自然先对齐再融合整体流程如下Model A / Model B ↓ 计算神经元距离矩阵 ↓ 匈牙利算法寻找一一匹配 ↓ 重排 Model B 的隐藏层神经元 ↓ 加权参数融合 ↓ Fused Model5.2 神经元距离矩阵对于某一层第 i 个神经元可以把它看成一个参数向量。例如neuron_i concat(weight[i, :], bias[i])然后计算 Model A 第 i 个神经元和 Model B 第 j 个神经元之间的 L2 距离Cost[i, j] || neuron_A_i - neuron_B_j ||_2这样可以得到一个代价矩阵Cost ∈ R^{64 × 64}矩阵中的每个元素表示Model A 的第 i 个神经元和 Model B 的第 j 个神经元有多不相似。距离越小说明越可能对应。5.3 匈牙利匹配有了代价矩阵之后使用匈牙利算法寻找总代价最小的一一匹配关系A_i ↔ B_p(i)其中p(i)表示 Model A 的第 i 个神经元匹配到 Model B 的第 p(i) 个神经元。匈牙利算法的作用可以简单理解为在所有可能的一一匹配方案中找到整体距离最小的一组匹配。5.4 参数重排规则找到匹配关系之后需要把 Model B 的隐藏层神经元重排到和 Model A 对齐。这里最容易写错因为隐藏层神经元不是孤立的。一个隐藏层神经元既接收上一层输入也输出到下一层。因此重排某一层神经元时必须同步调整下一层的输入连接。对齐 fc1 时需要重排fc1.weight 的行 fc1.bias fc2.weight 的列原因是 fc1 的输出会作为 fc2 的输入。对齐 fc2 时需要重排fc2.weight 的行 fc2.bias fc3.weight 的列原因是 fc2 的输出会作为 fc3 的输入。输出层不重排MNIST 输出层 10 个节点对应固定类别0, 1, 2, ..., 9因此不重排 fc3.weight 的行 不重排 fc3.bias只匹配隐藏层不匹配输出层类别节点。5.5 Hungarian Fusion对齐之后再进行加权融合θ_fused (1 - α) θ_A α θ_B_aligned其中θ_B_aligned表示经过隐藏层神经元重排后的 Model B 参数。实验中取α 0.55.6 Hungarian Fusion 实验结果方法Test AccuracyModel A96.79%Model B96.88%Direct Average68.36%Hungarian Fusion95.42%可以看到Direct Average: 68.36% Hungarian Fusion: 95.42%通过神经元对齐融合模型精度从 68.36% 恢复到 95.42%。这说明在融合阶段无训练数据的条件下仅基于参数距离进行隐藏层神经元对齐就可以明显缓解直接平均失败的问题。六、MCA-Fusion匹配置信度感知的自适应融合6.1 为什么还要改进 Hungarian FusionHungarian Fusion 解决了一个问题谁和谁对齐但它没有解决另一个问题每一个匹配关系到底有多可靠匈牙利算法一定会给每个神经元找一个匹配对象。但是有些匹配很明确有些匹配其实很模糊。例如最佳匹配距离明显小于次优匹配距离说明匹配关系比较可靠。但如果最佳匹配距离和次优匹配距离很接近说明这个神经元和多个候选都差不多匹配并不确定。原始 Hungarian Fusion 对所有匹配对都使用统一融合系数α 0.5这就有一个问题低置信匹配也会被强行融合 50%可能引入错误干扰。因此我进一步设计了 MCA-Fusion。6.2 MCA-Fusion 的核心思想MCA-Fusion 全称为Matching-Confidence-Aware Adaptive Fusion中文可以理解为匹配置信度感知的自适应融合策略。它的核心思想是匹配越可靠融合比例越高 匹配越模糊融合比例越低。也就是说把原来的全局固定融合系数α扩展为逐神经元自适应融合系数α_i这样模型不再对所有匹配关系一视同仁而是让融合强度由匹配可靠性决定。6.3 匹配置信度计算对于 Model A 的第 i 个神经元匈牙利算法给它匹配到 Model B 的第 p(i) 个神经元。匹配代价为matched_cost_i Cost[i, p(i)]然后在同一行中找到除 p(i) 之外的次优匹配代价second_best_cost_i min Cost[i, k], k ≠ p(i)定义匹配间隔margin_i (second_best_cost_i - matched_cost_i) / (second_best_cost_i eps)再将其裁剪到 0 到 1 之间confidence_i clip(margin_i, 0, 1)最后将置信度映射为融合系数α_i α_min (α_max - α_min) × confidence_i实验中使用α_min 0.05 α_max 0.50 eps 1e-8含义是匹配越明确α_i 越接近 0.50匹配越模糊α_i 越接近 0.05低置信匹配更多保留 Model A减少错误融合干扰高置信匹配适度吸收 Model B 的参数信息。6.4 分层参数融合规则逐神经元 α 不能简单地直接套到所有参数上。有些参数确实只属于某个神经元例如fc1.weight[i, :] fc1.bias[i]它们属于第一隐藏层第 i 个神经元可以直接使用α_fc1[i]但是有些参数连接了两个隐藏层。例如fc2.weight[r, c]它连接的是第一隐藏层第 c 个神经元 到 第二隐藏层第 r 个神经元所以这个权重同时受到两端神经元匹配可靠性的影响。本文采用保守规则α_fc2_weight[r, c] min(α_fc2[r], α_fc1[c])也就是说只要连接两端有一端匹配不可靠这条连接就少融合 Model B。具体规则如下参数融合系数fc1.weight[i, :]α_fc1[i]fc1.bias[i]α_fc1[i]fc2.weight[r, c]min(α_fc2[r], α_fc1[c])fc2.bias[r]α_fc2[r]fc3.weight[:, c]α_fc2[c]fc3.bias保留 Model A这个设计比简单地说“逐神经元融合”更严谨因为它考虑了层间连接的双端可靠性。6.5 MCA-Fusion 与 Hungarian Fusion 的区别方法是否对齐神经元融合系数Direct Average否全局固定 αHungarian Fusion是全局固定 αMCA-Fusion是逐神经元自适应 α_i可以概括为Hungarian Fusion 解决“谁和谁对齐” MCA-Fusion 进一步解决“每个匹配该相信多少”七、实验结果与分析7.1 主实验结果方法Test AccuracyModel A96.79%Model B96.88%Direct Average68.36%Hungarian Fusion95.42%MCA-Fusion96.91%结果可以分层理解Model A / Model B 都接近 97%说明源模型训练正常Direct Average 只有 68.36%说明直接参数平均严重失败Hungarian Fusion 达到 95.42%说明神经元对齐有效MCA-Fusion 达到 96.91%在当前实验设置下取得最优结果。7.2 结果解读Direct Average 失败说明同构模型不能默认同编号隐藏神经元对应。Hungarian Fusion 恢复到 95.42% 说明用参数距离做神经元匹配再进行对齐融合可以显著缓解参数错位问题。MCA-Fusion 进一步达到 96.91% 说明匹配置信度信息对参数融合是有帮助的。不过需要注意MCA-Fusion 比 Model B 的 96.88% 只高 0.03%。因此不能夸大为“显著超过源模型”。更稳妥的结论是在当前单组实验设置下MCA-Fusion 取得最优结果初步验证了匹配置信度感知自适应融合策略的有效性。7.3 Alpha 分布分析MCA-Fusion 的统计结果如下Layeralpha_meanfc10.0665fc20.0586这个结果很有意思。虽然最大融合系数设置为α_max 0.50但实际平均 α 很低fc1 alpha_mean 0.0665 fc2 alpha_mean 0.0586说明在当前实验中大部分神经元匹配并没有高到足以支持大比例融合。MCA-Fusion 因此采取了更保守的策略以 Model A 为主体 少量吸收 Model B 中高置信匹配位置的信息这也解释了为什么它比固定 α0.5 的 Hungarian Fusion 更稳定。可以理解为Hungarian Fusion所有匹配都相信到 50% MCA-Fusion可靠的多融合不可靠的少融合7.4 Alpha 扫描实验为了观察融合系数 α 对性能的影响我还进行了 α 扫描实验。其中α 0 时等于 Model Aα 1 时等于 Model BDirect Average 在中间区域明显崩α 0.5 时 Direct Average 最低为 68.36%Hungarian Fusion 整体更稳定α 0.5 时仍有 95.42%。这个实验进一步说明直接参数平均不是在两个模型之间平滑插值而是在中间融合区域出现明显性能塌陷。7.5 置换验证结果再解读置换等价性验证结果如下方法Test AccuracyModel A96.79%A_perm96.79%Direct Average(A, A_perm)57.72%Hungarian Fusion(A, A_perm)96.79%这个实验比主结果更能解释问题。因为 A_perm 本质上和 Model A 功能相同只是隐藏层神经元顺序不同。但直接平均后57.72%说明参数平均对隐藏层排列顺序非常敏感。匈牙利对齐后恢复到96.79%说明问题确实可以通过神经元对齐解决。八、复现流程与运行命令8.1 训练源模型进入项目目录cdD:\py.code\deep learing\fly_model训练 Model A 和 Model Bconda run-n agentcf python scripts/01_train_models.py训练完成后生成checkpoints/model_a_seed2024.pth checkpoints/model_b_seed2025.pth8.2 运行 Direct Average 与 Hungarian Fusionconda run-n agentcf python scripts/02_run_fusion.py生成结果文件results/source_models.csv results/main_results.csv results/alpha_sweep.csv results/cost_matrix_fc1.npy results/cost_matrix_fc2.npy其中source_models.csv源模型测试结果main_results.csvDirect Average 与 Hungarian Fusion 结果alpha_sweep.csv不同 α 下的融合结果cost_matrix_fc1.npy/cost_matrix_fc2.npy隐藏层代价矩阵。8.3 运行置换等价性验证conda run-n agentcf python scripts/04_permutation_sanity_check.py生成results/permutation_sanity_check.csv figures/permutation_sanity_check.png该实验用于验证隐藏层神经元置换不改变模型功能但会破坏未对齐的直接参数平均。8.4 运行 MCA-Fusionconda run-n agentcf python scripts/07_run_mca_fusion.py生成results/mca_fusion_results.csv results/mca_fusion_stats.csv checkpoints/mca_fusion.pth report/mca_fusion_report.md其中mca_fusion_results.csvMCA-Fusion 与其他方法的准确率对比mca_fusion_stats.csvMCA 的 confidence / alpha 统计结果mca_fusion.pth保存的 MCA-Fusion 模型mca_fusion_report.md自动生成的实验报告。8.5 绘制实验图conda run-n agentcf python scripts/05_plot_results.py conda run-n agentcf python scripts/08_plot_mca_results.py conda run-n agentcf python scripts/09_plot_permutation_validation.py生成图片包括figures/main_results_bar.png figures/alpha_accuracy_curve.png figures/permutation_validation_panel.png figures/mca_fusion_comparison.png figures/mca_alpha_distribution.png九、结果文件说明9.1 CSV / NPY 文件文件说明results/source_models.csvModel A / Model B 测试准确率results/main_results.csvDirect Average 与 Hungarian Fusion 主实验结果results/alpha_sweep.csvα 扫描实验结果results/permutation_sanity_check.csv置换等价性验证结果results/mca_fusion_results.csvMCA-Fusion 主实验结果results/mca_fusion_stats.csvMCA-Fusion 置信度与 alpha 统计results/cost_matrix_fc1.npyfc1 神经元代价矩阵results/cost_matrix_fc2.npyfc2 神经元代价矩阵9.2 图片文件文件说明figures/main_results_bar.png主实验柱状图figures/alpha_accuracy_curve.pngα 扫描曲线figures/cost_matrix_fc1.pngfc1 代价矩阵热力图figures/cost_matrix_fc2.pngfc2 代价矩阵热力图figures/permutation_validation_panel.png置换等价性验证图figures/mca_fusion_comparison.pngMCA-Fusion 对比图figures/mca_alpha_distribution.pngMCA-Fusion alpha 分布图十、踩坑与复盘10.1 “无数据”这个说法一定要讲清楚最容易误解的地方是“无数据”。本文的无数据不是训练阶段不用数据 测试阶段不用数据而是融合阶段不用原始训练数据实际流程是训练源模型使用 MNIST 测试融合模型使用 MNIST 模型融合只使用参数这个边界一定要讲清楚。10.2 直接平均失败不是因为源模型训练差两个源模型的结果分别是Model A: 96.79% Model B: 96.88%说明源模型本身是正常的。Direct Average 掉到68.36%不是因为源模型差而是因为参数下标一致不代表隐藏神经元功能一致。10.3 置换实验比普通对比实验更有解释力普通对比实验只能说明Direct Average 失败了但置换等价性实验说明的是Direct Average 为什么会失败因为 A_perm 和 Model A 功能相同只是隐藏层神经元顺序不同。如果直接平均仍然失败就说明参数平均对神经元顺序极其敏感。10.4 重排神经元时不能只改当前层这是实现里最容易出错的地方。如果重排 fc1只改fc1.weight fc1.bias是不够的。还必须同步重排fc2.weight 的列因为 fc1 的输出是 fc2 的输入。同理重排 fc2 时也要同步重排fc3.weight 的列否则模型函数会被破坏。10.5 输出层不能重排隐藏层神经元没有固定编号语义但输出层不同。MNIST 输出层节点对应具体类别0, 1, 2, ..., 9如果重排输出层就相当于把数字类别标签打乱。因此只匹配隐藏层不匹配输出层。10.6 MCA-Fusion 不能只停留在“每个神经元一个 α”一开始很容易把 MCA-Fusion 理解成每个神经元一个 α_i但实际实现时层间连接权重同时依赖前后两个神经元。例如fc2.weight[r, c]它同时连接fc1 第 c 个神经元 fc2 第 r 个神经元所以它不能只用单侧的 α。本文采用min(α_fc2[r], α_fc1[c])作为连接级融合系数。这个规则比较保守但好处是只要连接两端有一端匹配不可靠就降低这条连接的融合强度。10.7 当前实验还不能过度外推当前实验验证范围是MNIST MLP 单组 seed 同构模型还没有充分验证CNN Transformer 更复杂数据集 多随机种子 异构模型因此本文更稳妥的结论是MCA-Fusion 在当前实验设置下取得最优结果初步验证了匹配置信度感知自适应融合的有效性。而不是直接说MCA-Fusion 一定显著优于所有方法十一、我的理解与思考这次实验最有价值的地方不是单纯跑出一个高准确率而是把一个看似简单的问题拆清楚了。一开始我以为两个模型结构一样参数平均应该可以工作但实验表明结构一样 ≠ 参数空间对齐隐藏层神经元没有固定编号语义两个独立训练的模型即使功能相近参数排列也可能不同。因此直接参数平均失败并不奇怪。整个项目给我的启发主要有三点。11.1 参数空间里的“同一个位置”不一定代表同一个功能在网络结构图里两个模型的 fc1 第 5 个神经元看起来位置一样。但在训练过程中它们可能学到不同功能。所以参数空间中的“同下标”并不等于功能空间中的“同角色”。这也是模型融合中很重要的一点融合前需要先考虑表示对齐。11.2 简单实验也可以形成完整证据链这个项目并没有使用很复杂的模型。只是 MNIST MLP。但是它形成了比较完整的证据链Direct Average 失败 ↓ 置换等价性实验定位原因 ↓ 神经元对齐恢复性能 ↓ MCA-Fusion 进一步控制融合强度这比单纯堆一个复杂网络更重要。11.3 方法改进需要解决真实问题MCA-Fusion 不是为了硬凑一个新名字而是针对 Hungarian Fusion 的真实不足Hungarian Fusion 只知道谁和谁匹配 但不知道每个匹配到底有多可靠所以 MCA-Fusion 引入匹配置信度把固定融合系数变成逐神经元自适应融合系数。这个改进的意义在于让融合强度由匹配可靠性数据驱动而不是人为固定。十二、总结本文围绕无数据同构模型参数融合问题完成了一套从问题验证到方法改进的实验闭环。主要结论如下直接参数平均会失败两个源模型接近 97%但 Direct Average 只有 68.36%。失败原因与隐藏层神经元顺序错位有关置换等价性实验中Model A 和 A_perm 功能相同但直接平均只有 57.72%。神经元对齐可以显著缓解问题Hungarian Fusion 将融合精度恢复到 95.42%。匹配置信度感知自适应融合进一步提升效果MCA-Fusion 达到 96.91%在当前实验设置下取得最优结果。当前实验仍有边界本文目前只在 MNIST MLP 单组 seed 上验证后续仍需要扩展到 CNN、Transformer、多 seed 和更复杂数据集。最终我对这个项目的理解可以概括为一句话两个同构模型虽然结构一样但隐藏层神经元顺序不一定一致如果直接平均参数就可能混合功能不对应的神经元导致性能崩塌。因此需要先进行神经元匹配与对齐再根据匹配置信度自适应控制融合强度从而实现更稳定的无数据模型融合。十三、致谢感谢相关论文作者对神经网络参数空间对称性问题的理论分析也感谢实验过程中师兄和同学对我思路整理与代码调试的帮助。这次实验让我真正理解到可复制性、问题拆解和证据链比单次最好结果更重要。希望这篇记录能给同样在学习模型融合、参数对齐和神经网络对称性的同学提供一点参考。