彩票假设 — 大网里藏着一张能独立训出来的小网
是什么
彩票假设(Lottery Ticket Hypothesis)说的是:你随机初始化一个大神经网络,里面早就藏着一张稀疏的小子网——只要你能把它”挑”出来、并且用回原来的随机初始值重新训练,它能达到和大网一样的精度,甚至更快收敛。
日常类比:买了一整本彩票(大网),开奖后发现真正中奖的就那一两张(子网),而中奖号码在你买票那一刻就定了——不是训练之后才”长”出来的,是初始化时就埋好的。
为什么重要
在这篇之前,主流剪枝(pruning)的认识是:
- 先训一个大网到收敛 → 砍掉小权重 → 微调(fine-tune)→ 得到一个小而准的网
- 但如果你直接训那个剪完的小网(哪怕用同样结构)→ 通常训不动、精度差很多
所以业界默认:“大模型容量是必需的,小模型只是大模型的尸体”。
Frankle 和 Carbin 用一个简单实验把这个共识打穿:
- 同样的剪完结构
- 关键差别是——把剩下的权重重置回原始随机初始值(不是新随机、不是 fine-tune 后的值)
- 从头训 → 精度追上甚至超过大网
这意味着:过参数化(overparameterization)也许不是为了表达能力,而是为了让 SGD 更容易”撞上”一组好初始值。这个解释直接催生了之后五年的稀疏化、剪枝、初始化研究浪潮。
核心要点
整篇论文的方法其实就一个流程,叫迭代量级剪枝(Iterative Magnitude Pruning, IMP):
- 随机初始化整个大网,记下这一组初值 θ₀
- 训练 j 步,得到训练后的权重 θⱼ
- 剪掉绝对值最小的 p%(比如 20%)权重,留下一个掩码 m(哪些位置保留、哪些清零)
- 关键一步:把保留位置的权重重置回 θ₀ 里它们对应的初值——不是新随机、不是保留 θⱼ
- 用这个稀疏初始化重训 → 看精度
- 想剪更狠 → 把以上 1-5 当一轮,迭代多轮
“中奖票”(winning ticket)= 这张稀疏掩码 m 加上原始初值 θ₀ 中对应那部分。
三个最反直觉的发现:
- 初值很重要:保留同一张掩码 m,但权重换成新随机值 → 训不出来。中奖号 = 拓扑 + 初值,缺一不可
- 迭代剪 > 一次剪:每轮剪 20% 比一次剪 80% 留下来的票更”准”
- 大网更容易抽到中奖票:网越大、越容易在随机初始化里包含一张好票。这给”为什么过参数化有用”提供了一个新解释
一段最小伪代码
# 1. 随机初始化,记下这一组theta_0 = init_random(net)net.load(theta_0)
# 2. 训 j 步for step in range(j): train_one_step(net)theta_j = net.state_dict()
# 3. 按当前权重的绝对值排序,砍掉最小 p%mask = top_k_by_magnitude(theta_j, keep_ratio=1 - p)
# 4. 关键:保留位置的权重换回 theta_0 里的值theta_init_sparse = mask * theta_0 # 注意是 theta_0 不是 theta_jnet.load(theta_init_sparse)
# 5. 用稀疏初始化重训,看精度train_full(net)整篇论文的方法其实就是反复跑这段伪代码(迭代版多套一层 for 循环)。“换回 θ₀” 那一行是论文的灵魂。
实践案例
案例 1:MNIST 上的 LeNet
LeNet 大概 26 万参数。论文做完 IMP 后:
- 剪到原大小的 10-20%(约 5-10 万参数)
- 训练同样的轮数 → 测试精度和原网持平甚至略高
- 把同样掩码下的权重换成新随机初值 → 精度大幅下降
这是最干净的一个验证。
案例 2:CIFAR10 上的 Conv-2/4/6
更大的卷积网,剪到 10-30% 大小:
- 中奖票训练收敛得更快——同样精度下迭代步数最少 3.5 倍提速
- 论文把这点解读为:“好的初始化让损失曲面变平滑了”
案例 3:VGG-19 / ResNet-18 — 假设要打补丁
到了更深更现代的网,直接重置回 θ₀ 失败——稀疏子网训不到原精度。
作者后续研究(2019-2020)打了一个补丁叫晚重置(late resetting / rewinding):
- 不是回到 θ₀,而是回到训练早期某一步 θₖ(比如训了 1-2 个 epoch 之后的权重)
- k 通常很小(占总训练步数 0.1%-1%)
晚重置版本能在 ResNet-50 / ImageNet 上工作。代价是”初值就藏好了”这个最干净的命题被弱化成”训练早期就藏好了”。
踩过的坑
-
掩码光对、初值不对 = 训不出来:很多人复现时换了随机种子就以为没事,结果精度暴跌。中奖票必须配套保存:掩码 + 当年的初值,两者绑定
-
一次剪太狠会塌:直接砍 80% 经常崩,必须迭代——每轮 20%,剪 5 轮。代价是计算量翻倍
-
late resetting 被 Liu et al. 2019 反驳:他们发现在某些设置下,直接随机重训剪后结构也能匹配——这表明在某些规模上”中奖号 = 拓扑 + 初值”的强版本不成立,只是”拓扑”就够了。这个争论持续到今天
-
跨数据集迁移弱:在 CIFAR 上抽出的中奖票直接搬到 ImageNet 通常不灵
-
结构化稀疏 vs 非结构化稀疏:本文的剪是非结构化(任意位置清零),GPU 上不一定真的更快——要靠后续工作(如 NVIDIA 2:4 稀疏)才把这变成实际加速
适用 vs 不适用场景
适用:
- 想理解”为什么过参数化有用”——彩票假设给了一个”搜索先验”的解释
- 研究稀疏化、剪枝、模型压缩 → 这是该领域 2019 年之后绕不开的起点
- 启发式地选好初始化 → 后续 SNIP / GraSP / SynFlow 都受这套思路影响
不适用:
- 直接当生产剪枝方法 → 太贵(要多轮完整训练),工业界更常用 movement pruning / SparseGPT
- LLM 时代的稀疏化 → 几十亿参数训一次都嫌贵,迭代多轮不现实,2023 年后主流转向训练后稀疏化
- 想要”只换拓扑就行”的强结论 → 后续争议多,别引用得太自信
历史小故事(可跳过)
- 2015 前后:Han et al. 提出”训练 → 剪 → 微调”三步法,业界共识”小网必须靠大网带”
- 2018 年 3 月:Frankle 和 Carbin 在 arXiv 挂出第一版,提出彩票假设。审稿人最初不信
- 2019 年 5 月:ICLR 2019 Best Paper Award,引爆稀疏化研究
- 2019 年 10 月:Liu et al. “Rethinking the Value of Network Pruning” 反向论证
- 2020 年:Frankle 团队提出 late resetting / linear mode connectivity,把假设推到 ImageNet 规模
- 2023 年至今:LLM 时代关注转向训练后稀疏(SparseGPT / Wanda),但”初值决定可训性”的直觉仍在影响初始化研究
学到什么
- 过参数化可能是搜索先验,不是表达能力——大网不是为了”装下”复杂函数,而是为了”撞上”好的子网初值
- 简单实验也能打穿共识——这篇方法没复杂数学,就是”换初值再训一次”,但视角变了
- 初始化 + 拓扑是一对——二者绑定才有意义,单独换任何一个都会塌
- 强命题 → 弱命题的妥协是正常的——从 θ₀ 到 θₖ 是论文走向规模的代价,承认这点比硬撑要诚实
延伸阅读
- 论文 PDF:The Lottery Ticket Hypothesis (arXiv 1803.03635)
- Frankle 本人讲解:ICLR 2019 oral talk
- 反方观点:Liu et al. “Rethinking the Value of Network Pruning” (ICLR 2019)
- 后续工作:Linear Mode Connectivity and the Lottery Ticket Hypothesis (Frankle et al. 2020)
- LLM 时代的稀疏化对比:sparsegpt-2023 —— 训练后一次性稀疏化,跳过迭代
关联
- lottery-1994 —— Geman 等的早期偏差-方差讨论,给”大网为什么够用”提供一种早期视角
- sparsegpt-2023 —— LLM 时代的稀疏化,与彩票假设走的是相反路线(训练后剪 vs 初始化时找)
- adam-2014 —— Adam 优化器,IMP 实验里的默认优化器之一
- adamw-2017 —— AdamW,当代 deep learning 训练的事实标准
反向链接
- adam-2014 —— Adam — 让深度学习自己挑步长的优化器
- adamw-2017 —— AdamW — 把 weight decay 从梯度里拆出来
- double-descent-2019 —— Double Descent — 模型越大越准,过参数化时代的反常识曲线
- lottery-1994 —— 彩票调度 — 用抽奖代替优先级的资源分配
- sparsegpt-2023 —— SparseGPT — 175B 大模型一次过剪 50%,不重训