概述

多层感知机(MLP)作为深度学习最基础的架构,其缩放行为理论特性一直是研究前沿。本文档系统整理以下主题:

  1. 经典缩放定律:Kaplan et al. (2020)、Hoffmann et al. (2022)的实证发现
  2. 特征学习视角的MLP理论:2025年最新结果
  3. 归纳偏置与MLP:Bachmann et al. (2023)的”缩放MLP”研究
  4. 深度vs宽度的Scaling权衡
  5. Lyapunov初始化理论:2026新结果
  6. MLP在视觉任务中的极限

理解MLP的缩放行为是理解深度学习泛化能力的关键。1


一、神经缩放定律基础

1.1 Kaplan缩放定律(2020)

Kaplan et al. (2020) 发现语言模型性能与计算量 、数据集大小 、参数量 存在幂律关系

关键洞察

  • 性能随规模幂律改善
  • 没有看到明显的”饱和”
  • 但最优分配 - 比例固定

1.2 Chinchilla缩放定律(2022)

Hoffmann et al. (2022) 修正了Kaplan的发现,提出计算最优分配

即模型参数和数据量应等比增长,每个token训练参数比约为 20:1。

1.3 MLP的特殊性

为什么MLP的缩放特别重要?

  1. MLP是其他架构的”原子”——CNN、RNN、Transformer都包含MLP块
  2. MLP的归纳偏置最弱,更能反映纯规模效应
  3. MLP-Mixer等纯MLP架构在视觉任务中展现了ViT的竞争性能

二、Bachmann的”缩放MLP”研究

2.1 核心问题

Bachmann, Anagnosidis, Hofmann (2023, “Scaling MLPs: A Tale of Inductive Bias”) 提出:

纯MLP架构(无卷积、无注意力)在视觉任务上的性能极限在哪里?归纳偏置(conv, attention)对MLP的贡献有多大?

2.2 关键发现

实验设置

  • 在ImageNet上训练纯MLP(gMLP、MLP-Mixer等)
  • 比较不同规模的MLP与CNN、ViT

核心结论

  1. MLP-Mixer的归纳偏置:Mixer层本质上是一种token混合,等价于全局MLP作用于patch维度
  2. 数据效率:MLP-Mixer需要的数据量比CNN/ViT多一个数量级
  3. 可扩展性:当数据足够多时,MLP-Mixer可以匹配CNN/ViT

2.3 形式化分析

gMLP架构

其中:

  • :输入patch tokens
  • :可学习矩阵
  • 第一项:通道混合(每个token独立)
  • 第二项:空间混合(跨token)

数学等价性

,则:

这是 上的一个线性变换,但结构化为块对角+置换

2.4 数据复杂度

定理(Bachmann et al.):gMLP实现 -逼近所需的样本数为

相比之下,CNN通过平移等变性获得样本效率

差距 倍的样本数。

2.5 实用含义

  1. 纯MLP需要更多数据:缺乏卷积的平移等变性
  2. 可作为强基线:当数据充足时,MLP-Mixer是有效的
  3. 混合架构更优:CNN+Attention的混合架构同时获得效率和灵活性

三、特征学习视角的MLP缩放(2025)

3.1 Defilippis et al. 2025

Defilippis, Xu, et al. (arXiv 2509.24882) 研究浅层神经网络在特征学习机制下的缩放定律与谱结构。2

核心问题

为什么无限宽的神经网络(NTK regime)无法学习特征,而有限宽网络可以?这种差异如何影响缩放?

3.2 NTK vs 特征学习regime

NTK Regime(无限宽):

核函数 不随训练改变,无法学习新特征

特征学习Regime(有限宽):

特征在学习过程中演化

3.3 关键结果

定理(Defilippis et al. 2025):

对于宽度为 、深度为 的浅层ReLU网络,存在两个regime:

  • Lazy regime):(与Kaplan一致)
  • Feature learning regime 固定):

特征学习regime的指数 更大,即相同规模下性能更好。

3.4 矩阵谱分析

特征学习regime的输出矩阵 的奇异值分布:

幂律尾部意味着少数奇异值主导大部分信号。

3.5 实验验证

import torch
import torch.nn as nn
import numpy as np
 
 
def analyze_feature_learning_regime(input_dim, hidden_dim, depth, n_samples):
    """分析不同宽度下的特征学习行为"""
    
    # 构造MLP
    model = nn.Sequential()
    prev_dim = input_dim
    for _ in range(depth):
        model.add_module(f'fc{_}', nn.Linear(prev_dim, hidden_dim))
        model.add_module(f'relu{_}', nn.ReLU())
        prev_dim = hidden_dim
    model.add_module('output', nn.Linear(prev_dim, 1))
    
    # 收集激活矩阵
    activations = []
    def hook(module, input, output):
        activations.append(output.detach())
    
    handles = []
    for layer in model:
        if isinstance(layer, nn.Linear):
            handles.append(layer.register_forward_hook(hook))
    
    # 前向传播
    x = torch.randn(n_samples, input_dim)
    _ = model(x)
    
    # 计算Gram矩阵谱
    for i, act in enumerate(activations):
        gram = act @ act.T  # (n, n)
        eigenvalues = torch.linalg.eigvalsh(gram).numpy()
        
        # 幂律拟合
        positive_eigs = eigenvalues[eigenvalues > 0]
        if len(positive_eigs) > 10:
            sorted_eigs = np.sort(positive_eigs)[::-1]
            ranks = np.arange(1, len(sorted_eigs) + 1)
            
            # 拟合 log(eig) vs log(rank)
            log_eigs = np.log(sorted_eigs)
            log_ranks = np.log(ranks)
            
            # 线性拟合
            slope, intercept = np.polyfit(log_ranks, log_eigs, 1)
            print(f"Layer {i}: 幂律指数 = {-slope:.3f}")
    
    # 清理
    for handle in handles:
        handle.remove()
 
 
# 测试不同宽度
for hidden_dim in [16, 64, 256, 1024, 4096]:
    print(f"\n隐藏维度: {hidden_dim}")
    analyze_feature_learning_regime(
        input_dim=20, hidden_dim=hidden_dim, depth=3, n_samples=200
    )

四、双层网络的精确缩放分析

4.1 Worschech & Rosenow (ICLR 2025)

Worschech & Rosenow (ICLR 2025) 研究双层网络幂律数据谱下的精确缩放行为。3

4.2 模型设置

数据模型

目标函数具有幂律谱:

双层网络

4.3 精确缩放定律

定理(Worschech-Rosenow 2025):

对于上述设置,双层网络的测试误差为:

其中:

  • :隐藏单元数
  • :训练样本数
  • :目标谱的幂律指数

4.4 三种regime

根据 比例,存在三种regime:

  1. Underparameterized):
  2. Overparameterized):
  3. Critical):双线性插值

4.5 实践启示

  • 数据谱指数 决定最优缩放比例
  • 小数据集应优先增加数据,而非模型
  • 过参数化有助但有边际递减

五、初始化理论的2025新结果

5.1 权重初始化的历史

年份初始化方法提出者关键思想
2010Gaussian (small)Glorot
2015XavierGlorot & Bengio
2015He/KaimingHe et al. (ReLU)
2015LSUVMishkin & Matas数据驱动的逐层调整
2019FixupZhang et al.无归一化训练
2025Stiefel ManifoldLee, Kim, Choi优化约束初始化
2026LyapunovKogler, Schwarz, Kittle极限定理初始化

5.2 Xavier初始化推导

目标:保持前向和反向传播的激活方差稳定。

前向,假设 元素独立、 零均值:

为保持方差:,即

反向:类似推导给出

调和平均

5.3 He初始化

考虑ReLU激活的方差缩减(约一半神经元为0):

保持方差:

5.4 Lyapunov初始化(2026)

Kogler, Schwarz, Kittle (2026, arXiv 2602.10949) 给出深度Leaky ReLU网络的Lyapunov初始化极限定理4

核心定理

对于深度 、宽度 的Leaky ReLU网络,设 独立同分布、零均值、方差 。则对任意固定输入

中心极限定理

Lyapunov初始化

选择 使得激活范数的对数 在所有层后保持稳定:

其中 是Leaky ReLU的负斜率。

5.5 Stiefel流形上的优化初始化

Lee, Kim, Choi (2025, arXiv 2509.00362) 将权重约束在Stiefel流形 上。5

优化目标

实现:在Stiefel流形上做Riemannian梯度下降

import torch
 
 
def stiefel_orthogonal_init(weight):
    """在Stiefel流形上正交初始化"""
    # QR分解
    Q, R = torch.linalg.qr(weight)
    
    # 处理符号
    sign = torch.sign(torch.diag(R))
    Q = Q * sign.unsqueeze(0)
    
    return Q
 
 
class StiefelLinear(nn.Module):
    """Stiefel流形约束的线性层"""
    
    def __init__(self, in_features, out_features, bias=True):
        super().__init__()
        self.in_features = in_features
        self.out_features = out_features
        
        # 初始化为正交矩阵
        weight = torch.randn(out_features, in_features)
        weight = stiefel_orthogonal_init(weight)
        self.weight = nn.Parameter(weight)
        
        if bias:
            self.bias = nn.Parameter(torch.zeros(out_features))
        else:
            self.register_parameter('bias', None)
    
    def project_to_stiefel(self):
        """投影回Stiefel流形"""
        with torch.no_grad():
            Q, _ = torch.linalg.qr(self.weight)
            self.weight.data = Q
    
    def forward(self, x):
        return F.linear(x, self.weight, self.bias)

5.6 Laor初始化(2025)

MDPI 2025 提出的新方法,专注于反向传播的稳定性。

核心思想:除了保持前向方差,还需保证反向梯度方差稳定。

对数修正项减小了小网络的初始化方差,改善训练初期稳定性。


六、MLP表达能力的理论分析

6.1 通用逼近定理回顾

定理(Cybenko 1989, Hornik et al. 1989):

单隐层MLP可以以任意精度逼近任何连续函数:

所需宽度可能指数级增长。

6.2 深度vs宽度的表达能力

定理(Telgarsky 2016):

存在函数 ,可被深度 、宽度 的ReLU网络表示,但任何深度 的网络需要宽度

深度指数优势:深度 的网络表达能力指数级超过深度 的网络。

6.3 缩放定律与表达能力

关键问题:给定参数量 ,深度 和宽度 如何分配?

总参数:

最优深度

其中 是输入维度。


七、MLP在视觉任务中的极限

7.1 MLP-Mixer vs ViT vs CNN

模型ImageNet Top-1关键操作
ResNet-5076.1%卷积
ViT-B/1677.9%注意力
MLP-Mixer-B76.4%纯MLP
ConvMixer79.4%深度卷积+MLP

7.2 MLP-Mixer的失效模式

已知问题

  1. 数据效率差:需要更多数据才能匹配CNN
  2. 空间结构弱:不能很好处理大尺度平移
  3. 对扰动敏感:对抗鲁棒性低于CNN

7.3 增强方法

1. 数据增强

mlpmixer_transform = transforms.Compose([
    transforms.RandomResizedCrop(224, scale=(0.08, 1.0)),
    transforms.RandomHorizontalFlip(),
    transforms.RandAugment(),
    transforms.ToTensor(),
    transforms.Normalize(IMAGENET_MEAN, IMAGENET_STD),
])

2. 训练正则化

  • Mixup、CutMix
  • Dropout in MLP layers
  • Stochastic Depth

3. 架构增强

  • 局部MLP(局部窗口)
  • 层次化MLP
  • Shift操作

八、缩放定律的实践应用

8.1 训练预算分配

给定计算预算 ,如何最优分配模型规模 和数据量

Chinchilla法则:

def chinchilla_allocation(compute_budget, params_per_token=20):
    """Chinchilla最优分配"""
    # 假设每个token的计算量与参数成线性关系
    # C ≈ 6 * N * D (forward+backward)
    # N = params_per_token * D
    
    # 解出 D
    D = np.sqrt(compute_budget / (6 * params_per_token))
    N = params_per_token * D
    
    return N, D
 
 
# 示例
C = 1e20  # FLOPs
N, D = chinchilla_allocation(C)
print(f"最优模型大小: {N/1e9:.2f}B参数")
print(f"最优数据量: {D/1e9:.2f}B tokens")

8.2 缩放曲线拟合

import numpy as np
from scipy.optimize import curve_fit
 
 
def power_law(x, a, b):
    """幂律函数 y = a * x^b"""
    return a * np.power(x, b)
 
 
def fit_scaling_law(sizes, losses):
    """拟合缩放定律"""
    # 过滤正值
    mask = (np.array(sizes) > 0) & (np.array(losses) > 0)
    sizes = np.array(sizes)[mask]
    losses = np.array(losses)[mask]
    
    log_sizes = np.log(sizes)
    log_losses = np.log(losses)
    
    # 线性拟合 log-log
    popt, _ = curve_fit(power_law, sizes, losses, p0=[1.0, -0.1])
    a, b = popt
    
    return a, b
 
 
def predict_loss(size, a, b):
    """预测给定规模下的损失"""
    return a * np.power(size, b)
 
 
# 示例:多个模型大小的loss
sizes = np.array([1e6, 1e7, 1e8, 1e9])
losses = np.array([4.5, 3.8, 3.2, 2.8])
 
a, b = fit_scaling_law(sizes, losses)
print(f"拟合: L = {a:.3f} * N^{b:.3f}")
 
# 预测更大模型
loss_10b = predict_loss(1e10, a, b)
print(f"10B参数预测loss: {loss_10b:.3f}")

8.3 缩放曲线可视化

import matplotlib.pyplot as plt
 
 
def plot_scaling_law(sizes, losses, fitted_a, fitted_b):
    """绘制缩放曲线"""
    fig, ax = plt.subplots(figsize=(8, 6))
    
    # 散点
    ax.scatter(sizes, losses, color='blue', label='实测')
    
    # 拟合曲线
    size_range = np.logspace(np.log10(min(sizes)), np.log10(max(sizes)*10), 100)
    loss_pred = predict_loss(size_range, fitted_a, fitted_b)
    ax.plot(size_range, loss_pred, 'r--', label=f'拟合 L = {fitted_a:.3f} * N^{fitted_b:.3f}')
    
    ax.set_xscale('log')
    ax.set_yscale('log')
    ax.set_xlabel('参数量 N')
    ax.set_ylabel('Loss L')
    ax.legend()
    ax.set_title('神经缩放定律')
    ax.grid(True, alpha=0.3)
    
    plt.savefig('scaling_law.png', dpi=100)
    plt.show()

九、深度vs宽度的Scaling权衡

9.1 经验法则

Bengio的”深而窄”原则

def compute_optimal_architecture(total_params, target_complexity):
    """
    给定总参数,确定深度vs宽度的最优分配
    """
    # 参数近似: P ≈ L * n^2 (假设每层宽度n)
    
    # 经验法则:对于固定P,深度L增加(宽度n减少)通常更有效
    # 直到 n 不小于任务复杂度要求的下界
    
    # 例如:
    # P = 10M
    # L=10, n=1000: P=10*1M = 10M ✓
    # L=20, n=700: P=20*490K = 9.8M ✓
    # L=50, n=450: P=50*202K = 10.1M ✓
    
    n = np.sqrt(total_params / target_complexity)
    L = target_complexity
    
    return L, int(n)

9.2 计算FLOPs

对于宽度 、深度 的MLP,每个输入的FLOPs:

参数量:

9.3 内存FLOPs比

对于Transformer架构,KV Cache注意力主导内存:

相比之下,MLP的内存是:

时,Transformer内存主导;否则MLP主导。


十、2026最新研究方向

10.1 概率缩放定律

传统缩放定律假设确定性模型,2026年开始研究概率模型(贝叶斯神经网络)的缩放:

关键问题:模型集成是否优于单一大模型?

初步答案:计算预算相当时,集成不如单一大模型

10.2 跨任务缩放

任务族

多任务缩放定律

10.3 计算最优架构搜索

结合NAS缩放定律

其中 是架构参数。

10.4 理论新结果(2026)

Lyapunov初始化提供严格保证

任何深度Leaky ReLU网络,使用Lyapunov初始化,可在 步内达到 -接近平衡态。

这是深度网络可训练性的形式化保证。


十一、参考资料


最后更新:2026-06-21

Footnotes

  1. Kaplan, J., et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361.

  2. Defilippis, L., Xu, Y., et al. (2025). Scaling Laws and Spectra of Shallow Neural Networks in the Feature Learning Regime. arXiv:2509.24882. https://arxiv.org/html/2509.24882

  3. Worschech, R. & Rosenow, B. (2025). Analyzing Neural Scaling Laws in Two-Layer Networks with Power-Law Data Spectra. ICLR 2025. https://proceedings.iclr.cc/paper_files/paper/2025/file/dd92d96ec1a0987562492f5446f6c838-Paper-Conference.pdf

  4. Kogler, C., Schwarz, T., & Kittle, S. (2026). Optimal Initialization in Depth: Lyapunov Initialization and Limit Theorems for Deep Leaky ReLU Networks. arXiv:2602.10949. https://arxiv.org/pdf/2602.10949

  5. Lee, H., Kim, T., & Choi, H. (2025). Optimized Weight Initialization on the Stiefel Manifold for Deep ReLU Neural Networks. arXiv:2509.00362. https://arxiv.org/html/2509.00362