概述
多层感知机(MLP)作为深度学习最基础的架构,其缩放行为和理论特性一直是研究前沿。本文档系统整理以下主题:
- 经典缩放定律:Kaplan et al. (2020)、Hoffmann et al. (2022)的实证发现
- 特征学习视角的MLP理论:2025年最新结果
- 归纳偏置与MLP:Bachmann et al. (2023)的”缩放MLP”研究
- 深度vs宽度的Scaling权衡
- Lyapunov初始化理论:2026新结果
- 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的缩放特别重要?
- MLP是其他架构的”原子”——CNN、RNN、Transformer都包含MLP块
- MLP的归纳偏置最弱,更能反映纯规模效应
- 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
核心结论:
- MLP-Mixer的归纳偏置:Mixer层本质上是一种token混合,等价于全局MLP作用于patch维度
- 数据效率:MLP-Mixer需要的数据量比CNN/ViT多一个数量级
- 可扩展性:当数据足够多时,MLP-Mixer可以匹配CNN/ViT
2.3 形式化分析
gMLP架构:
其中:
- :输入patch tokens
- 、:可学习矩阵
- 第一项:通道混合(每个token独立)
- 第二项:空间混合(跨token)
数学等价性:
令 ,则:
这是 上的一个线性变换,但结构化为块对角+置换。
2.4 数据复杂度
定理(Bachmann et al.):gMLP实现 -逼近所需的样本数为
相比之下,CNN通过平移等变性获得样本效率:
差距: 倍的样本数。
2.5 实用含义
- 纯MLP需要更多数据:缺乏卷积的平移等变性
- 可作为强基线:当数据充足时,MLP-Mixer是有效的
- 混合架构更优: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:
- Underparameterized():
- Overparameterized():
- Critical():双线性插值
4.5 实践启示
- 数据谱指数 决定最优缩放比例
- 小数据集应优先增加数据,而非模型
- 过参数化有助但有边际递减
五、初始化理论的2025新结果
5.1 权重初始化的历史
| 年份 | 初始化方法 | 提出者 | 关键思想 |
|---|---|---|---|
| 2010 | Gaussian (small) | Glorot | |
| 2015 | Xavier | Glorot & Bengio | |
| 2015 | He/Kaiming | He et al. | (ReLU) |
| 2015 | LSUV | Mishkin & Matas | 数据驱动的逐层调整 |
| 2019 | Fixup | Zhang et al. | 无归一化训练 |
| 2025 | Stiefel Manifold | Lee, Kim, Choi | 优化约束初始化 |
| 2026 | Lyapunov | Kogler, 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-50 | 76.1% | 卷积 |
| ViT-B/16 | 77.9% | 注意力 |
| MLP-Mixer-B | 76.4% | 纯MLP |
| ConvMixer | 79.4% | 深度卷积+MLP |
7.2 MLP-Mixer的失效模式
已知问题:
- 数据效率差:需要更多数据才能匹配CNN
- 空间结构弱:不能很好处理大尺度平移
- 对扰动敏感:对抗鲁棒性低于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
-
Kaplan, J., et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361. ↩
-
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 ↩
-
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 ↩
-
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 ↩
-
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 ↩