权重空间学习综述

引言

传统的深度学习研究通常将神经网络权重视为训练的最终产物,关注点主要集中在数据、特征和架构层面。然而,随着预训练模型的爆发式增长,权重空间学习(Weight Space Learning)作为一种新兴的研究范式,正在重新定义我们理解和操作神经网络的方式1

权重空间学习的核心思想是将已训练神经网络的参数本身作为研究对象,在权重空间中进行学习、操作和分析。这种方法不仅能够帮助我们理解神经网络的内在工作机制,还能实现模型融合、权重生成、架构搜索等下游任务。

定义与基本概念

什么是权重空间

权重空间是指神经网络所有参数张量构成的高维向量空间。设神经网络包含 个参数,则权重空间为 。例如,一个具有100万个参数的模型,其权重空间是100万维的欧几里得空间。

import torch
import numpy as np
 
def count_model_params(model):
    """计算模型参数数量"""
    return sum(p.numel() for p in model.parameters())
 
def get_weight_vector(model):
    """将模型参数展平为向量"""
    params = []
    for p in model.parameters():
        params.append(p.data.flatten())
    return torch.cat(params)
 
# 示例:简单的MLP
model = torch.nn.Sequential(
    torch.nn.Linear(784, 256),
    torch.nn.ReLU(),
    torch.nn.Linear(256, 10)
)
 
dim = count_model_params(model)
print(f"模型参数量: {dim:,}")

为什么权重空间学习重要

  1. 模型复用的基础:随着模型动物园(Model Zoo)的兴起,如何有效地理解和组合多个预训练模型成为关键问题
  2. 模型融合的需求:Task Arithmetic、Model Merging等技术的成功证明了权重空间操作的实用价值
  3. 可解释性的窗口:通过分析权重空间的几何结构,可以深入理解模型行为和训练动态
  4. 生成式AI的新方向:将权重视为数据,利用扩散模型、流匹配等技术生成新模型权重

三大任务框架

权重空间学习的研究可以系统性地划分为三个核心任务框架1

1. Understanding(理解)

理解任务旨在揭示权重空间的内在结构和性质,回答”权重空间是如何组织的”这一根本问题。

1.1 权重空间的度量与几何

权重空间中最重要的度量之一是 Fisher信息矩阵(Fisher Information Matrix, FIM)诱导的黎曼度量。在参数分布 下,Fisher信息定义为:

这种度量在信息几何中具有重要意义,它反映了参数空间的局部曲率结构。

import torch
from torch import nn
 
class FisherInfoEstimator:
    """Fisher信息矩阵估计器"""
    
    def __init__(self, model, device='cuda'):
        self.model = model
        self.device = device
        self.fisher = None
        self.param_shapes = [p.shape for p in model.parameters()]
        
    def compute_fisher(self, data_loader, num_samples=1000):
        """通过经验Fisher近似计算"""
        self.fisher = {}
        for name, param in self.model.named_parameters():
            self.fisher[name] = torch.zeros_like(param.data)
        
        self.model.eval()
        sample_count = 0
        
        for inputs, targets in data_loader:
            if sample_count >= num_samples:
                break
            inputs, targets = inputs.to(self.device), targets.to(self.device)
            
            self.model.zero_grad()
            outputs = self.model(inputs)
            loss = nn.functional.cross_entropy(outputs, targets)
            loss.backward()
            
            for name, param in self.model.named_parameters():
                if param.grad is not None:
                    self.fisher[name] += (param.grad.data ** 2) / num_samples
            
            sample_count += inputs.size(0)
        
        return self.fisher
    
    def get_reduced_fisher(self, top_k=100):
        """获取最大的K个Fisher对角元素"""
        reduced = {}
        for name, fisher_diag in self.fisher.items():
            flat = fisher_diag.flatten()
            top_values, indices = torch.topk(flat, min(top_k, len(flat)))
            reduced[name] = (top_values, indices)
        return reduced

1.2 权重空间的几何性质

权重空间具有以下重要几何性质:

性质描述研究意义
曲率Fisher-Rao度量定义的黎曼曲率影响自然梯度优化的收敛性
连通性损失景观中的模式连通性理解泛化的几何基础
对称性参数空间的置换对称性权重空间网络的表达力分析
维度高维空间的本征维度有效参数空间分析

1.3 Loss Landscape分析

权重空间的损失景观研究揭示了训练动力学的几何本质:

  • Flat Minima Hypothesis:泛化能力与损失函数的平坦极小值相关
  • Mode Connectivity:不同局部极小值通过低损失路径相连
  • Edge of Stability:学习率与曲率的相互作用导致不稳定-稳定转换2

2. Representation(表示)

表示任务关注如何有效地编码和表示权重向量,使下游任务更加高效。

2.1 权重编码器

权重编码器将高维权重向量映射到低维潜在空间:

常见的编码方法包括:

  • 降维方法:PCA、自编码器
  • 任务无关表示:利用神经网络直接学习权重表示
  • 神经场表示:使用连续函数编码权重3

2.2 权重空间的自编码器

class WeightAutoencoder(nn.Module):
    """权重自编码器"""
    
    def __init__(self, input_dim, latent_dim, hidden_dims=[512, 256]):
        super().__init__()
        
        # 编码器
        encoder_layers = []
        in_dim = input_dim
        for h_dim in hidden_dims:
            encoder_layers.extend([
                nn.Linear(in_dim, h_dim),
                nn.LayerNorm(h_dim),
                nn.GELU()
            ])
            in_dim = h_dim
        encoder_layers.append(nn.Linear(in_dim, latent_dim))
        self.encoder = nn.Sequential(*encoder_layers)
        
        # 解码器
        decoder_layers = []
        in_dim = latent_dim
        for h_dim in reversed(hidden_dims):
            decoder_layers.extend([
                nn.Linear(in_dim, h_dim),
                nn.LayerNorm(h_dim),
                nn.GELU()
            ])
            in_dim = h_dim
        decoder_layers.append(nn.Linear(in_dim, input_dim))
        self.decoder = nn.Sequential(*decoder_layers)
    
    def forward(self, w):
        z = self.encoder(w)
        w_recon = self.decoder(z)
        return w_recon, z
    
    def encode(self, w):
        return self.encoder(w)
    
    def decode(self, z):
        return self.decoder(z)

2.3 权重空间的网络架构

最近的工作提出了专门设计用于处理权重空间数据的神经网络架构。权重空间网络(Weight Space Networks)是一类置换等变(permutation equivariant)的神经网络,能够直接操作神经网络的参数4

  • Message Passing机制:在权重之间传递信息
  • 层级结构建模:尊重原始网络的层级组织
  • 对称性感知:处理权重空间的结构化对称性

3. Generation(生成)

生成任务旨在从学习到的分布中采样或生成新的权重向量。

3.1 基于扩散模型的权重生成

扩散模型已在图像、文本生成领域取得巨大成功,最近被扩展到权重空间学习。D2NWG(Diffusion-based Neural Network Weights Generation)提出了一种两阶段扩散框架5

class WeightDiffusionModel(nn.Module):
    """权重扩散模型"""
    
    def __init__(self, weight_dim, latent_dim=128, time_dim=64):
        super().__init__()
        self.weight_dim = weight_dim
        self.latent_dim = latent_dim
        
        # 时间嵌入
        self.time_mlp = nn.Sequential(
            nn.Linear(1, time_dim),
            nn.SiLU(),
            nn.Linear(time_dim, time_dim)
        )
        
        # U-Net风格的噪声预测网络
        self.net = nn.Sequential(
            nn.Linear(weight_dim + time_dim, 512),
            nn.LayerNorm(512),
            nn.SiLU(),
            nn.Linear(512, 256),
            nn.LayerNorm(256),
            nn.SiLU(),
            nn.Linear(256, weight_dim)
        )
    
    def forward(self, x, t):
        """
        x: 加噪的权重向量 (batch, weight_dim)
        t: 时间步 (batch,) in [0, 1]
        """
        t_embed = self.time_mlp(t.unsqueeze(-1))
        h = torch.cat([x, t_embed], dim=-1)
        return self.net(h)
    
    @torch.no_grad()
    def sample(self, num_samples, num_steps=100, w_init=None):
        """DDPM采样"""
        x = torch.randn(num_samples, self.weight_dim).to(next(self.parameters()).device)
        
        if w_init is not None:
            x = w_init
        
        dt = 1.0 / num_steps
        for i in range(num_steps - 1, -1, -1):
            t = torch.full((num_samples,), i / num_steps).to(x.device)
            noise_pred = self.forward(x, t)
            
            # 简化的反向过程
            alpha_t = 1 - (i / num_steps)
            x = (x - (1 - alpha_t) / alpha_t ** 0.5 * noise_pred) / (1 - alpha_t) ** 0.5
            if i > 0:
                x = x + dt ** 0.5 * torch.randn_like(x)
        
        return x

3.2 基于流匹配的权重生成

DeepWeightFlow 提出了一种基于流匹配(Flow Matching)的方法来生成神经网络权重6。流匹配通过学习一个向量场 将噪声分布传输到目标分布:

class WeightFlowMatching(nn.Module):
    """权重流匹配模型"""
    
    def __init__(self, weight_dim, hidden_dim=256):
        super().__init__()
        
        # 条件向量场网络
        self.velocity_net = nn.Sequential(
            nn.Linear(weight_dim + 1, hidden_dim),  # +1 for time
            nn.ReLU(),
            nn.Linear(hidden_dim, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, weight_dim)
        )
    
    def forward(self, w, t):
        """预测向量场"""
        t_expanded = t.view(-1, 1).expand(-1, 1)
        wt = torch.cat([w, t_expanded], dim=-1)
        return self.velocity_net(wt)
    
    def compute_loss(self, w1, w0=None):
        """
        w1: 目标权重
        w0: 噪声(默认为标准正态分布)
        """
        if w0 is None:
            w0 = torch.randn_like(w1)
        
        t = torch.rand(w1.shape[0], device=w1.device)
        t_expanded = t.view(-1, 1)
        
        # 线性插值路径
        w_t = t_expanded * w1 + (1 - t_expanded) * w0
        
        # 目标向量场
        v_t = w1 - w0
        
        # 预测向量场
        pred_v_t = self.forward(w_t, t)
        
        return nn.functional.mse_loss(pred_v_t, v_t)

3.3 超网络方法

超网络(Hypernetwork)通过另一个神经网络生成目标网络的权重:

其中 是潜在代码, 是超网络, 是超网络参数。

class HyperNetwork(nn.Module):
    """简单的超网络实现"""
    
    def __init__(self, latent_dim, target_shapes):
        super().__init__()
        self.target_shapes = target_shapes
        self.total_params = sum(s.numel() for s in target_shapes)
        
        self.net = nn.Sequential(
            nn.Linear(latent_dim, 256),
            nn.ReLU(),
            nn.Linear(256, 512),
            nn.ReLU(),
            nn.Linear(512, self.total_params)
        )
    
    def forward(self, z):
        """从潜在代码生成权重"""
        params = self.net(z)
        
        weights = []
        idx = 0
        for shape in self.target_shapes:
            size = shape.numel()
            weights.append(params[:, idx:idx+size].view(-1, *shape))
            idx += size
        
        return weights

数学基础

Fisher信息与自然梯度

在权重空间中,标准的欧几里得度量往往不是最自然的选择。自然梯度方法使用Fisher信息矩阵作为黎曼度量:

自然梯度具有以下优点:

  • 适应参数空间的曲率结构
  • 在概率分布空间中是KL散度的最速下降方向
  • 与最优传输理论有深层联系

黎曼几何结构

权重空间在Fisher-Rao度量下形成一个 黎曼流形,具有:

  • 黎曼度量
  • 测地线:概率分布空间中的最短路径
  • 截面曲率:描述局部几何性质

这种几何视角为理解学习动力学提供了强有力的工具。

对称性与不变性

权重空间存在多种对称性:

  1. 置换对称性:神经元顺序的可交换性
  2. 尺度对称性:权重和偏置的联合缩放不变性
  3. 正交变换对称性:某些网络架构的参数空间对称性

这些对称性对权重空间学习的表达力和算法设计有重要影响。

核心技术方法对比

方法优点缺点代表性工作
扩散模型生成质量高,可控性强采样慢,计算开销大D2NWG5
流匹配采样快,训练稳定对复杂分布建模能力有限DeepWeightFlow6
自编码器重建质量好,可解释性强潜在空间可能不够连续Weight Autoencoder
超网络端到端训练,效率高生成质量依赖于超网络容量HyperNet Fields

应用场景

1. 模型融合与合并

模型融合(Model Merging)旨在将多个训练好的模型合并为一个统一模型,无需额外训练:

  • Task Arithmetic7:在权重空间中执行向量加减操作
  • Model Soup:对多个检查点进行加权平均
  • TIES-Merging:解决任务向量冲突问题
def task_arithmetic_merge(model_a, model_b, model_base, alpha=0.5, beta=0.5):
    """
    任务向量合并
    
    Task Vector = W_finetuned - W_pretrained
    Merged = W_pretrained + alpha * TV_a + beta * TV_b
    """
    merged_state = {}
    for key in model_a.state_dict().keys():
        tv_a = model_a.state_dict()[key] - model_base.state_dict()[key]
        tv_b = model_b.state_dict()[key] - model_base.state_dict()[key]
        merged_state[key] = model_base.state_dict()[key] + alpha * tv_a + beta * tv_b
    
    merged_model = type(model_a)(*model_a.args, **model_a.kwargs)
    merged_model.load_state_dict(merged_state)
    return merged_model

2. 神经网络架构搜索(NAS)

权重空间学习方法可以用于高效地搜索网络架构:

  • 权重共享策略下的架构选择
  • 基于权重重用的架构进化
  • 超网络架构的端到端优化

3. 可解释性与可解释AI

通过分析权重空间的几何结构:

  • 识别功能相关的权重模式
  • 理解不同任务在权重空间中的分离程度
  • 分析训练过程中的权重演化轨迹

4. 迁移学习与少样本学习

权重空间学习方法能够:

  • 从模型动物园中检索相关预训练模型
  • 基于权重相似度进行高效的知识迁移
  • 生成针对特定任务的模型权重

5. 持续学习与灾难性遗忘

在权重空间中理解和缓解灾难性遗忘:

  • 基于Fisher信息的正则化(EWC)
  • 在权重空间中识别重要参数
  • 利用模型融合恢复被遗忘的知识

相关领域的关系

与模型融合的关系

模型融合是权重空间学习最重要的应用之一。通过在权重空间中操作,可以:

  • 无需重新训练地组合多个专业模型
  • 利用任务向量的线性结构进行编辑
  • 基于几何平均或几何融合提升模型性能

与NAS的关系

权重空间学习与神经架构搜索有天然的联系:

  • 超网络本质上是一种权重生成方法
  • 架构搜索可以看作在权重空间中的优化问题
  • 可微分架构搜索利用权重共享探索架构空间

与可解释性的关系

权重空间分析为理解神经网络提供了新视角:

  • 通过可视化权重空间理解模型行为
  • 分析权重空间的低维结构揭示功能模块
  • 利用权重空间的测地线理解泛化特性

与贝叶斯深度学习的关系

两者都关注权重的不确定性:

  • 贝叶斯方法在权重上定义概率分布
  • 权重空间学习可以用于后验分布的建模
  • Fisher信息是两者共同的数学基础

未来研究方向

理论基础

  1. 权重空间的几何理论:更深入地理解权重空间的拓扑和几何结构
  2. 表达力理论:权重空间网络与标准神经网络的表达力比较
  3. 泛化理论:权重空间学习的泛化边界分析

方法创新

  1. 更高效的生成模型:结合扩散模型和流匹配的优点
  2. 大规模权重空间:处理数十亿参数模型的方法
  3. 结构化生成:生成具有特定结构的权重

应用拓展

  1. 多模态权重学习:处理视觉-语言模型等异构权重
  2. 动态权重系统:时变权重的建模与生成
  3. 安全与隐私:权重空间的隐私保护和安全分析

评估与基准

  1. 标准化基准:建立权重空间学习的标准评估协议
  2. 下游任务评估:设计针对权重空间方法的任务套件
  3. 效率评估:测量不同方法的计算和存储效率

总结

权重空间学习代表了一种新兴的、令人兴奋的研究方向,它将神经网络权重从”训练终点”转变为”学习对象”。通过理解、表示和生成三大任务框架,我们能够:

  • 深入理解神经网络的内在工作机制
  • 有效地组合和编辑预训练模型
  • 从分布中生成新的模型权重

随着预训练模型和模型动物园的持续发展,权重空间学习的重要性将进一步凸显。这一领域正处于快速发展阶段,充满了理论挑战和应用机遇。

参考文献

Footnotes

  1. Han, X., Wang, Z., Zhao, B., et al. (2026). A Survey of Weight Space Learning: Understanding, Representation, and Generation. arXiv:2603.10090. 2

  2. Schurholt, K., et al. (2024). Towards Scalable and Versatile Weight Space Learning. arXiv:2406.09997.

  3. Yang, Z., Salzmann, M., & Susstrunk, S. (2025). Weight Space Representation Learning with Neural Fields. arXiv:2512.01759.

  4. Dayan, A., Eitan, Y., & Maron, H. (2026). On the Expressive Power of Permutation-Equivariant Weight-Space Networks. arXiv:2602.01083.

  5. Soro, B., et al. (2025). Diffusion-based Neural Network Weights Generation. ICLR 2025. 2

  6. Gupta, S., et al. (2026). DeepWeightFlow: Re-Basined Flow Matching for Generating Neural Network Weights. arXiv:2601.05052. 2

  7. Ilharco, G., et al. (2023). Editing Models with Task Arithmetic. ICLR 2023.