Loss Surfaces, Mode Connectivity, and Fast Ensembling of DNNs
Timur Garipov, Pavel Izmailov, Dmitrii Podoprikhin, Dmitry Vetrov, Andrew Gordon Wilson
stat.ML, cs.AI, cs.LG
2018-02-28
两个独立最优解能用单弯折线连通,沿线测试误差几乎不变。FGE据此在单模型时间内集成,CIFAR-100上错误率全面低于快照集成。
局部最优的个数可以随参数量指数增长,两个独立训好的权重之间,直线上的损失又很高。这两件事把最优解画成了孤岛。
再要一个预测不同的模型,就得换一套初始化完整重训。后验近似同样走不远:离开 mode 沿直线走,损失会上去。mode 指一次独立训练落到的权重。要查的是,这些 mode 之间有没有一条通路,上面的训练损失和测试误差都几乎不动。
两次普通训练先把两端固定。中间放一条曲线 φ(t),t 从 0 走到 1。每步均匀抽一个 t,取出对应权重,按常规损失更新曲线参数。沿弧长均匀的线积分不好求导,实际优化的是损失对 t 的均匀期望。折线切成等长两段、t 在每段里线性前进时,两个目标相同。
曲线只留很少的自由度。折线用一个弯点,初始放在两端连线的中点。二次贝塞尔曲线用一个控制点,把两端弯成光滑弧。弯点或控制点就是被优化的参数,两端不再动。
Fast Geometric Ensembling(FGE,快速几何集成)不去拟合这条曲线。沿低损失通路离开端点一小段,预测就已经不同,所以不必事先训好第二个端点。前大约 80% 的预算仍用单模型的学习率。剩余预算改成很短的分段线性周期,学习率在较高的 α1 和较低的 α2 之间来回。学习率高时权重被推开,测试误差暂时变差;落到 α2 就存一个 checkpoint,最后对这些预测取平均。VGG-16 的周期是 2 个 epoch,α1=0.01,α2=0.0005,集成含 22 个模型。ResNet 与 Wide ResNet 的周期是 4 个 epoch,α1=0.05,α2=0.0005,分别留下 6 个和 12 个模型。
Snapshot Ensembles(SSE,快照集成)也用周期学习率,但是从训练一开始就走 20 到 40 个 epoch 的余弦长周期,故意迈大步。FGE 只在末段小步采样。PreResNet-164 在 CIFAR-100 上,相邻两个 FGE 存点的欧氏距离大约是 7,SSE 两个快照大约是 40。
直线走不通。CIFAR-10 上,VGG-16 两个 mode 的连线中点,测试误差升到 90%。ResNet-158 沿线最差是 80%,Wide ResNet-28-10 是 66%。残差网络的谷更平,仍然平不到能让直线穿过。
单弯折线和二次贝塞尔把损失拉平。ResNet-164 在 CIFAR-100 上,训练损失和测试误差几乎不随 t 变化。曲线不止一条。VGG-16 在 CIFAR-10 上,同一对端点、不同随机种子的两条折线,弯点相距 29.6,两端相距 50。
集成也不必走到另一个端点。ResNet-164、CIFAR-100 上,起点和曲线上一点组成的二模型集成,t 约为 0.1 时误差开始下降,t 大于等于 0.4 时已经和两个独立端点的集成一样低。沿途是不同的表示。补充材料里可以造出靠重参数化连上、预测却不变的曲线,正文这些曲线没有那个性质。
同预算对照是独立训练 Ind 和 SSE。B 是单模型的 epoch 数:VGG 与 WRN-28-10 为 200,集成实验用的 Preactivation-ResNet-164 为 150。k 倍预算就是把该方法跑 k 次,再把收集到的模型全部平均。1 倍预算下 Ind 只有一个模型。错误率(%):
| 设置 | Ind | SSE | FGE |
| VGG-16, CIFAR-100, 1B | 27.4±0.1 | 26.4±0.1 | 25.7±0.1 |
| VGG-16, CIFAR-100, 3B | 24.45 | 24.69 | 23.54 |
| ResNet-164, CIFAR-100, 1B | 21.5±0.4 | 20.9±0.2 | 20.2±0.1 |
| ResNet-164, CIFAR-100, 3B | 18.59 | 18.91 | 18.21 |
| WRN-28-10, CIFAR-100, 1B | 19.2±0.2 | 17.9±0.2 | 17.7±0.2 |
| WRN-28-10, CIFAR-100, 3B | 17.01 | 16.97 | 16.88 |
| VGG-16, CIFAR-10, 1B | 6.75±0.16 | 6.57±0.12 | 6.48±0.09 |
| ResNet-164, CIFAR-10, 1B | 4.72±0.1 | 4.66±0.02 | 4.54±0.05 |
| ResNet-164, CIFAR-10, 3B | 3.77 | 4.3 | 3.98 |
| WRN-28-10, CIFAR-10, 1B | 3.82±0.1 | 3.73±0.04 | 3.65±0.1 |
| WRN-28-10, CIFAR-10, 3B | 3.31 | 3.55 | 3.52 |
CIFAR-100 的每一格里 FGE 都最低。CIFAR-10 上 FGE 也始终低于 SSE,和 Ind 接近,算力放到 3 倍预算时独立集成可以更低:ResNet-164 是 3.77 对 3.98,WRN-28-10 是 3.31 对 3.52。类别从 10 增到 100、训练图片数不变,两个模型更不容易答成同一类,邻近权重的分歧更值钱。论文用 CIFAR-10 上 96.4% 的准确率概括这一档。
多样性小于独立训练。CIFAR-100 上,两个独立 ResNet-164 预测不一致的比例是 19.97%,同一次 FGE 的两个成员是 14.57%。成员自己的准确率是 78.0%,完整训完的单模型是 78.5%。单模型那一格的 21.5% 错误率,就是这 78.5% 的另一面。同一预算能留下更多个还能用的网络,把成员偏弱、分歧偏小的缺口补上。
ImageNet 是附加的一组。预训练 ResNet-50 的 top-1 错误率 23.87,FGE 再跑 5 个 epoch,周期长 2 个 epoch,学习率从 0.001 到 0.00001,连原模型共 4 个,集成降到 23.31,下降 0.56 个点。SSE 报告过的最好结果是 23.33。
只够训一个模型时,日程可以直接照做。PreResNet-164 的例子是前 125 个 epoch 用普通学习率,第 126 到第 147 个 epoch 用短周期收成员,放进 B=150 的预算。训练时间不变,推理多几次前向。
低损失区把最优解连成谷,沿谷走一小段,预测就分开。讨论里据此写了三件还没做的事:随机 MCMC 沿这些桥跳到另一个 mode,变分推断按通路的平坦程度设计提议分布,对抗查询时轮换曲线上的模型。
相对 SSE,改动在步长和采样时机。CIFAR-100 上这个改动稳定。CIFAR-10 上,三份真正独立的训练可以把改动抵消。
通路是优化找出来的,多层网络上没有存在性证明。单隐层 ReLU 的损失上界推不到深层。更早用动态规划连折线的办法,在 AlexNet、CIFAR-10 上测试准确率连 80% 都困难。单弯折线覆盖了 VGG、ResNet、Wide ResNet,补充材料里还有全连接网和 RNN,两端仍是同一套超参、不同初始化。不同 batch size、优化器、数据增强和学习率方案,论文指向后续工作。同一时期 Draxler 等用 Nudged Elastic Band 独立找到了连通曲线,方法不同,没有做这套集成。
FGE 不构造 φ(t),也不检查存下的权重是否还在谷里。它和 SSE 的可见差别是末段、短周期、小步、多存几点。普通训练最后若干 epoch 不加周期、直接多存 checkpoint 再平均,表里没有这个对照。几何动机和短周期本身各贡献多少,实验没有拆开。
图 1 的二维平面用曲线上的点张成,画出来会显得连通。沿 t 画出的损失和测试误差才是证据。
成员更挤,所以类别少、单模型已经强的时候,独立集成会反超,WRN-28-10 和 ResNet-164 在 CIFAR-10 上的 3 倍预算就是这样。ImageNet 的 0.56 个点来自一个预训练模型外加 5 个 epoch,没有从头训练的同预算对照,和 SSE 只是并列。曲线上的权重要拿去推理,Batch Normalization 的测试统计得另算,做法放在补充材料里。对抗鲁棒和沿谷做贝叶斯采样仍是设想。