【摘 要】 集成方法已被证明在提高神经网络的准确性和预测不确定性方面取得了广泛的成功。然而,一个集成的训练和测试成本会随着神经网络数量的增加而线性增加,这很快就会变得难以接受。在本文中,我们提出了一种新的集成方法:BatchEnsemble,其计算和内存成本明显低于典型集成。 BatchEnsemble 在神经网络的每一层都将成员神经网络相互连接起来,集成成员的权重被描述为一个共享权重矩阵 WRn×mW \in \mathbb{R}^{n \times m}MM 个成员 Rank-1 矩阵 FiRn×mF_{i} \in \mathbb{R}^{n \times m} 的 Hadamard 乘积。与典型集成方法不同,BatchEnsemble 不仅可以跨设备并行化(其中每个设备训练一个成员),而且还可以在一个设备内并行化(其中多个集成成员同时更新给定的 mini-batch )。在 CIFAR-10、CIFAR-100、WMT14 EN-DE/EN-FR 翻译等任务和分布外任务中,BatchEnsemble 均产生了较典型集成方法更具竞争力的准确性和不确定性;在成员数 M=4M=4 的集成中,测试时效率提升 33 倍,内存减少 33 倍。我们还将 BatchEnsemble 应用于终身学习,在 Split-CIFAR-100 上,BatchEnsemble 产生与渐进式神经网络相当的性能,同时具有低得多的性能计算和内存成本。我们进一步表明,BatchEnsemble 可以轻松扩展到 Split-ImageNet 上的终身学习,其中涉及 100100 个顺序学习任务。

【原 文】 Wen, Y., Tran, D. and Ba, J. (2020) ‘BatchEnsemble: An Alternative Approach to Efficient Ensemble and Lifelong Learning’, Eighth International Conference on Learning Representations (ICLR 2020) [Preprint].

主要贡献

  • 在本文中,我们旨在通过构建一个参数更高效的集成方法来解决计算和内存瓶颈:BatchEnsemble。我们通过利用一种新的集成权重生成机制来实现这一目标:每个集成成员的权重由以下两个要素之间的 Hadamard 乘积 生成:一是所有集成成员之间共享的权重,二是在所有成员之间变化的 Rank-1 矩阵,在本文剩余部分中也被称为 快速权重图 1 比较了 BatchEnsemblenaive ensemble 之间的测试和内存成本,可以看出,与典型集成不同,BatchEnsemble 对小批量友好,它不仅可以像典型集成一样跨设备并行化,而且还可以在设备内并行化。此外,它只产生很小的内存开销,因为大量的权重会在集成成员之间共享。

  • 根据经验,我们表明 BatchEnsemble 在几种深度学习架构和学习任务中的准确性、运行时间和内存之间取得了最佳平衡,它们分别是:采用 ResNet32(He 等人,2016)架构的 CIFAR-10/100 图像分类任务、采用 Transformer(Vaswani 等人,2017) 的 WMT14 EN-DE /EN-FR 机器翻译任务。

第 4.1 节首先展示了 BatchEnsemble 作为在 Split-CIFAR 和 Split-ImageNet 上终身学习的替代方法的有效性。接下来,第 4.2 节和第 4.3 节在几个具有常见深度学习架构的基准数据集上评估 BatchEnsemble,包括使用 ResNet 进行图像分类(He 等人,2016 年)和使用 Transformer 进行神经机器翻译(Vaswani 等人,2017 年)。第 4.4 节演示了 BatchEnsemble 可用于校准预测。最后,我们在附录 C 和附录 D 中展示了它在不确定性建模中的应用。我们使用的数据集的详细描述在附录 A 中。实施细节在附录 B 中。

  • 最后,我们展示了 BatchEnsemble 可以成功地应用于终身学习,并且可以扩展到 100100 个持续学习任务,而不会发生灾难性遗忘和内存缓冲区的需要。

  • 第 5 节 进一步提供了多样性分析作为理解 BatchEnsemble 为何在实践中运作良好的工具。

图 1:Batch Ensemble 的测试时间成本(蓝色)和内存成本(橙色)相对于集大小的关系。数据结果以单一模型的成本为比较基准。Naive Ensemble 的测试时间成本和内存成本以绿色绘制。

1 概述

集成是机器学习文献中最古老的技巧之一(Hansen & Salamon,1990)。通过结合几个模型的输出,一个集成可以实现比它的任何成员更好的性能。许多研究人员证明,一个好的合奏是合奏的成员既准确又会犯独立错误的合奏(Perrone & Cooper, 1992; Maclin & Opitz, 1999)。在神经网络中,SGD (Bottou, 2003) 及其变体如 Adam (Kingma & Ba, 2014) 是最常见的优化算法。在类似 SGD 的算法中采样小批量数据的随机噪声和深度神经网络的随机初始化,以及在高维优化问题中存在多种局部最小值解决方案的事实(Ge et al., 2015 ; Kawaguchi, 2016; Wen et al., 2019),得出以下观察结果:使用不同随机种子训练的深度神经网络可以收敛到非常不同的局部最小值,尽管它们具有相似的错误率。结果之一是使用不同随机种子训练的神经网络通常不会在测试集上产生所有相同的错误,即即使模型已经收敛,它们也可能在给定相同输入的情况下对预测产生不同意见(Fort et al., 2019 )。

神经网络的集合受益于上述观察,通过对每个集合成员的输出进行平均或多数投票来实现更好的性能(Xie et al., 2013; Huang et al., 2017)。结果表明,模型集合的性能至少与其单个成员一样好,并且不同的集合成员会带来更好的性能(Krogh & Vedelsby,1995)。最近,Lakshminarayanan 等人。 (2017) 表明,深度集成提供了可靠的预测不确定性估计,同时保持简单和可扩展。进一步的研究证实,与其他方法(如 MC-dropout) 相比,深度集成通常在分布外不确定性基准上取得最佳性能(Ovadia 等人,2019; Gustafsson 等,2019)。在其他应用中,例如基于模型的强化学习 (Deisenroth & Rasmussen, 2011; Wang et al., 2019),神经网络的集成可用于估计模型的不确定性,从而获得更好的整体性能 (Kurutach et al., 2018)

尽管它们在基准测试上取得了成功,但由于其昂贵的计算和内存成本,集成在实践中受到较大的限制,这在训练和测试中随着集成大小的增加而线性增加。在计算方面,每个集成成员都需要对其输入进行单独的神经网络前向传递。在存储方面,每个集成成员都需要一个独立的神经网络权重副本,每个权重可达数百万(有时数十亿)参数。这种记忆要求也使许多超出监督学习的任务望而却步。例如,在终身学习中,一个自然的想法是为每个任务使用一个单独的集成成员,通过为每个新任务创建一组新的独立权重来自适应地增加参数的总数。以前没有任何工作通过集成方法在终身学习方面取得有竞争力的表现,因为存储是一个主要瓶颈。

2 背景

2.1 提高性能的集成

Bagging(也称为 bootstrap aggregating )是一种通过组合几个不同模型来提高总体泛化性能的算法(Breiman,1996)。将这些模型(例如平均和多数投票)结合起来的策略被称为集成方法(Ensemble Method)。结果表明,模型集成的性能至少与其每个集合成员一样好(Krogh & Vedelsby,1995)。此外,当每个成员都犯了独立错误时,集成会取得最佳表现(Goodfellow et al., 2015; Hansen & Salamon, 1990)。

集成的相关工作:集成已被广泛研究以提高模型性能(Hansen & Salamon, 1990; Perrone & Cooper, 1992; Dietterich, 2000; Maclin & Opitz, 1999)。集成研究的一个主要方向是如何在测试时降低成本。Bucila 等 (2006) 开发了一种将大型复杂集合压缩成更小更快模型的方法。Hinton 等(2015)通过将一组模型中的知识提取到一个单一神经网络中,进一步发展了上述方法。集成研究的另一个主要方向是如何降低训练时成本。Xie 等(2013 年)通过在多个训练检查点内组合网络的输出来形成集成,并称之为 水平投票、垂直投票和水平堆叠集成(Horizontal Voting Vertical Voting and Horizontal Stacked Ensemble)。此外,经过不同正则化和增强训练的模型也可以用作集成,以在半监督学习中实现更好的性能(Laine & Aila,2017)。最近,Huang 等 (2017) 提出了 Snapshot ensemble,其中单个模型通过循环学习率 (Loshchilov & Hutter, 2016; Smith, 2015) 进行训练,从而鼓励它访问多个局部最小值。然后将这些局部最小值的解用作集成成员。Garipov 等 (2018) 提出了 快速几何集成(fast geometric ensemble),它寻找可以通过简单曲线连接的峰值,并将每个峰值都作为一个集成成员。上述工作是对 BatchEnsemble 的补充,并且可以将这些技术结合起来以实现更好的性能。 BatchEnsemble 在计算(包括训练和测试)和内存方面都很高效,并且对当前训练方案(如学习率计划)的更改最小。例如,Snapshot Ensemble 对循环学习率的需求,使其与需要预热和逆平方根学习率的 Transformer (Vaswani et al., 2017) 不兼容。

显式的集成方法需要很昂贵的成本,因此还有一些工作在做所谓的“隐式”集成。例如,Dropout (Srivastava et al., 2014) 可以被解释为创建了指数级权重共享的子网络,这些子网络隐式集成在测试时间的预测中 (Warde-Farley et al., 2014)。 MC-dropout 可用于不确定性估计(Gal & Ghahramani,2015)。隐式集成方法在训练和测试中通常是成本较低的。

2.2 提升不确定性的集成

图 5:CIFAR-10 损坏的校准:箱线图显示了 ECE 在 CIFAR-10 上所有类型的损坏下的比较。每个框都显示了总结所有偏斜类型结果的四分位数,而误差线表示不同偏斜类型的最小值和最大值。 Ensemble/BatchEnsemble:4 个 ResNet32x4 模型的 Naive/Batch 集成。 Dropout-8:样本大小为 8 的 Dropout 集成。BEDrop-8:4 个模型的 BatchEnsemble + 样本大小为 8 的 Dropout 集成。类似的测量可以在 Ovadia 等人中找到。 (2019)

4.4 损坏数据集的校准

2.3 终身学习

在终身学习中,模型按照一定的顺序训练序列(在线)任务,而无需访问所有先前任务的数据(Thrun,1998;Zhao & Schmidhuber,1996)。终身学习的一个核心困难是 “灾难性遗忘”:神经网络在后续任务训练后往往会忘记它当前所学的内容(McCloskey,1989;French,1999)。以往减轻灾难性遗忘的方法可以分为两类:

  • 在第一类中,对当前任务的更新进行了正则化,这样神经网络就不会忘记以前的任务。弹性权重合并 (EWC) 使用 Fisher 信息度量 (Kirkpatrick et al., 2016),根据新任务和旧任务的参数之间的距离对参数更新施加惩罚。其他方法维护一个内存缓冲区,该缓冲区存储来自先前任务的许多数据点。例如,梯度情景记忆方法对当前任务的梯度进行惩罚,使其不会增加内存缓冲区中样本的损失(Lopez-Paz & Ranzato, 2017; Chaudhry et al., 2018)。 另一种方法将经验回放算法与终身学习相结合(Rolnick 等人,2018;Riemer 等人,2018)。

  • 在第二类中,随着新任务的添加,模型容量会增加。例如,渐进式神经网络 (PNN) 为前一个任务复制整个网络,并在采用新任务时添加新的隐藏单元 (Rusu et al., 2016)。这可以防止通过构造忘记以前的任务(以前任务的网络保持不变)。然而,当面对大量的终身学习任务时,它会导致显著的内存消耗。以下一些方法以更有效的参数方式扩展模型,但代价是引入了额外的学习任务,而不是完全防止遗忘。Yoon 等 (2017) 应用组稀疏正则化来有效地扩展模型容量; Xu & Zhu (2018) 通过精心设计的强化学习策略学会寻找最佳的架构变化。

3 方法

如上所述,集成受到昂贵的内存和计算成本的影响。在本节中,我们将介绍 BatchEnsemble,一种集成深度神经网络的有效方法。

3.1 批量集成

(1) 基本原理

在本节中,我们将介绍如何以有效的方式集成神经网络。令 WW 为神经网络层中的权重,将输入维度表示为 mm,将输出维度表示为 nn,即 WRm×nW \in \mathbb{R}^{m \times n} 。对于集成,假设集成大小为 MM,每个集成成员都有权重矩阵 Wiˉ\bar{W_i} ,每个集成成员都有一个可训练的向量元组 rir_isis_i ,(分别与输入和输出共享相同的维度 mmnn ),其中 ii 的范围从 11MM 。我们的算法通过以下方式生成一系列集成权重 Wˉi\bar{W}_i

Wˉi=WFi, where Fi=risi\bar{W}_{i}=W \circ F_{i}, \text { where } F_{i}=r_{i} s_{i}^{\top}

上式中,符号 \circ 表示 Hadamard 积

对于小批量中的每个训练样本,集成方法通过逐元素做 WW(称之为“慢权重”)和一个 Rank-1 秩矩阵 FiF_i(称之为“快权重”)的 Hadamard 积 来生成一个集成权重 Wˉi\bar{W}_i ,下标 ii 表示集成成员。由于 WW 在集成成员之间共享,因此在下文中也将其称为“共享权重”。图 2 可视化了 BatchEnsemble。除了调制权重矩阵之外,该方法还可以用于调制神经网络的中间特征,这在视觉推理任务中取得了可喜的性能(Perez et al., 2017)。

图 2:关于如何为两个集成成员生成集成权重的说明。

(2)向量化表示

下面我们展示如何使上述集成权重的生成机制能够在设备内可并行化,即在一个前向传递中并行地计算多个集成成员。这可以通过操纵小批量的矩阵计算来实现(Wen et al., 2018)。让 xx 表示神经网络层中传入神经元的激活,则下一层的激活由下式给出:

yn=ϕ(Wˉixn)(2)y_{n} =\phi\left(\bar{W}_{i}^{\top} x_{n}\right) \tag{2}

=ϕ((Wrisi)xn)(3)=\phi\left(\left(W \circ r_{i} s_{i}^{\top}\right)^{\top} x_{n}\right) \tag{3}

=ϕ((W(xnri))si)(4)=\phi\left(\left(W^{\top}\left(x_{n} \circ r_{i}\right)\right) \circ s_{i}\right)\tag{4}

其中 ϕ\phi 表示激活函数,下标 nn 表示在小批量中的索引。输出代表来自第 ii 个成员的下一层激活。为了向量化这些计算,我们定义矩阵 RRSS,它们的行分别由小批量中所有样本的向量 rir_isis_i 组成。上述方程可以向量化为:

Y=ϕ(((XR)W)S)(5)Y = \phi(((X \circ R)W) \circ S) \tag{5}

其中 XX 是小批量输入。通过计算 式 5,可以以小批量的友好方式为每个集成成员计算j下一层的激活。这使我们能够充分利用并行加速器来有效地实现集成。为了使输入和集成权重匹配,我们可以将小批量输入分成 MM 个子批次,每个子批次接收集成权重 Wˉi,i={1,,M}\bar{W}_i, i = \{1,\ldots,M\}

(3)测试期间的集成

在我们的实验中,取所有集成成员预测结果的平均值。假设测试的 Batch SizeBB ,并且有 MM 个集成成员。为了得到高效的实现,重复输入小批量 MM 次,使有效的 Batch SizeBMB·M。这使所有集成成员能够在单个前向传递中计算相同 BB 个输入数据点的输出。它不再需要按顺序计算每个集成成员的输出,因此降低了集成的计算成本。

3.2 计算成本

BatchEnsemble 在单个神经网络上的唯一额外计算是 Hadamard 积 。与矩阵乘法相比,其成本较低。因此,BatchEnsemble 几乎不会产生额外的计算开销( 图 1 )。 BatchEnsemble 的一个限制是,如果我们保持 Batch Size 与单模型训练相同,则每个集成成员只能获得一部分输入数据。在实践中,这可以通过增加 Batch Size 来解决此问题,以便每个集成成员接收与普通单模型训练相同数量的数据。由于 BatchEnsemble 在设备内是可并行化的,因此在可以充分利用大批量的硬件上,增加 Batch Size 几乎不会在训练和测试阶段产生额外的计算开销。此外,当增加 Batch Size 的收益达到递减状态时,BatchEnsemble 依然可以通过增加集成大小 MM 来使用更大的 Batch Size

BatchEnsemble 中唯一的内存开销是向量集 {r1,,rm}\{r_1, \ldots,r_m\}{s1,,sm}\{s_1,\ldots,s_m\},与权重矩阵相比,它们的存储成本也不高。由于不再需要存储每个集成成员的权重矩阵,BatchEnsemble 几乎没有增加额外的内存成本。例如,大小为 44 的 ResNet-32 的 BatchEnsemble 会产生 10%10\% 以上的参数,而 naive ensemble 会产生 33 倍以上的参数。

3.3 BatchEnsemble 作为终身学习方法

集成方法的内存成本严重限制了它在许多现实世界场景中的应用,例如多任务学习和终身学习,在这些场景中,人们可能会为每个任务应用一个独立的模型。 而 BatchEnsemble 并非如此,而是采用了一种渐进式的训练方式。具体来说,考虑总共有 TT 个任务按顺序到达。令l Dt=(xi,yi,t)D_t = (x_i,y_i,t) 表示任务 tt 中的训练数据,其中 t{1,2,,T}t \in \{1,2,\ldots,T\}ii 是数据点的索引;令 Tt=(xi,yi,t)\mathcal{T}_t = (x_i,y_i,t) 表示任务 tt 中的测试数据集 。则在测试阶段,我们在测试集 Tt\mathcal{T}_t 上计算迄今为止所有任务的平均性能作为评估指标。

为了将 BatchEnsemble 扩展到终身学习,我们用任务 tt 中的权重 Wtˉ=W(rtstT)\bar{W_t} = W \circ (r_t s_t^T ) 来计算任务 tt 中的神经网络预测。换句话说,每个集成成员负责一项终身学习任务。依据此训练协议,我们在第一个任务上训练共享权重 WW 和两个快速权重 r1r_1 ,s1s_1

minW,s1,r1L1(W,s1,r1;D1),\min _{W, s_{1}, r_{1}} L_{1}\left(W, s_{1}, r_{1} ; D_{1}\right),

其中 L1L_{1} 是第一个任务中的目标函数,例如图像分类中的交叉熵。在后续任务 tt 中,我们只训练相关的快速权重 rtstr_{t}、s_{t}

minst,rtLt(st,rt;Dt).\min _{s_{t}, r_{t}} L_{t}\left(s_{t}, r_{t} ; D_{t}\right) .

BatchEnsemble渐进式神经网络 (PNN) 具有相似的优势:它完全防止了灾难性遗忘,因为之前看到的任务模型保持不变,仅仅训练新的快速权重,从而避免了每个新任务都要存储先前任务数据的要求。此外,BatchEnsemble 的内存消耗明显少于 PNN,因为只有快速权重 被训练以适应新任务。因此,BatchEnsemble 可以轻松扩展到多达 100100 个任务(见 第 4.1 节 的 split ImageNet 示例)。

BatchEnsemble 的另一个好处是,如果未来任务是并行而不是按顺序到达的,则可以同批次训练所有任务(参见 第 3.1 节 )。我们尚未发现有任何其他终身学习方法可以做到这一点。

局限性: BatchEnsemble 是迈向完整终身学习代理的一步,它既不受灾难性遗忘的影响,又具有参数效率。在 split-CIFAR 和 split-ImageNet 等现有基准上,第 4.1 节 表明,BatchEnsemble 中每层的 rank-1 扰动 为具有竞争力的 SOTA 准确率提供了足够的表达能力。然而,BatchEnsemble 的一个限制是对于每一个终身学习任务,只有一个 rank-1 扰动 是适合的。因此当每个任务都显著变化时,模型的表达能力可能是一个问题。另一个限制是 共享权重 仅在第一个任务上进行训练。这意味着只有为第一个任务学习的信息,才能转移到后续任务中( 例如,第二个和第三个任务之间没有明确的转移)。一种解决方案是建立与先前学习任务权重提取的特征之间的横向连接,就像在 PNN 中所做的那样。然而,我们发现 Split-CIFAR100 和 Split-ImageNet 不需要横向连接也能达到效果。因此,我们将上述解决方案留给未来的工作,进一步改进 BatchEnsemble 以实现终身学习。

表 1:LeNet 上 Split-CIFAR100 的计算和内存成本。其中的数值是相对于普通神经网络的。

与其他方法相比的计算成本:

动态可扩展网络 (Yoon et al., 2017) 和 强化持续学习 (Xu & Zhu, 2018) 是最近提出的两种有竞争力的终身学习方法。就记忆效率而言,这两种方法可以看作是改进版的渐进神经网络 (PNN) (Rusu et al., 2016)。如 Xu & Zhu (2018) 所示,这三种方法在 Split-CIFAR100 任务中的准确度测量结果相似。因此,在三个评估指标(准确度、遗忘和成本)中,我们仅在 第 4.1 节 中比较了 BatchEnsemblePNN 的准确度,在本节中比较了成本。我们首先基于 LeNet 在 Split-CIFAR100 上计算了相对于 PNN 的成本,然后根据 Xu & Zhu (2018) 的文献计算了其余数字指标。请注意,PNN 在 Split-CIFAR100 上没有太多计算开销,因为总任务数限制为 1010 。即使在上面的简单设置中,BatchEnsemble 也提供了最佳的计算和内存效率。 BatchEnsemble 可以降低大型终身学习任务(例如 Split-ImageNet)的成本。

4 实验

在本节中,我们测量 BatchEnsemble 在损坏数据集上的校准预测。其他不确定性建模任务(例如上下文强盗)被委托给附录 C 和附录 D。

4.1 终身学习

我们展示了在 Split-CIFAR100 和 Split-CIFAR100 上用于终身学习的 BatchEnsemble图像网。 Rebuffi等人提出的Split-CIFAR100。 (2016 年)是一项比 MNIST 排列和 MNIST 旋转(Kirkpatrick 等人,2016 年)更难的终身学习任务,其中在新任务到来时引入一组新的类。每个任务由一组不相交的 100/T 个类的示例组成,假设总共有 T 个任务。为了证明 BatchEnsemble 能够扩展到 100 个顺序任务,我们还构建了自己的 Split-ImageNet 数据集,它与 Split-CIFAR100 具有相同的属性,除了涉及更多的类(因此更多的任务)和更高的图像分辨率。附录 A 中提供了有关这两个终身学习数据集的更多详细信息。

按照 Lopez-Paz & Ranzato (2017) 的设置,我们在 Split-CIFAR100 上考虑 T = 20 个任务。我们使用了 ResNet-18,所有卷积层的过滤器数量略少。请注意,为了使用任务描述符,我们为每个任务构建不同的最终密集层。我们将 BatchEnsemble 与渐进式神经网络 (PNN) (Rusu et al., 2016)、普通神经网络和 Split-CIFAR100 上的弹性权重合并 (EWC) 进行了比较。 Xu & Zhu (2018) 报告了 DEN (Yoon et al., 2017)、RCL (Xu & Zhu, 2018) 和 PNN 之间的相似准确度。因此,我们仅将准确性与具有官方实现的 PNN 进行比较,并且仅将计算和内存成本与表 1 中的 DEN 和 RCL 进行比较。

图 3b 显示了 Split-CIFAR100 在三个指标上的结果,包括准确性、遗忘和成本。准确度衡量终身学习结束后总共 20 个任务的平均验证准确度。图 3b 还显示了所有任务的平均遗忘。对任务 t 的遗忘是通过任务 t 训练后与终身学习结束时的准确度之间的差异来衡量的。它衡量灾难性遗忘的程度。如图 3b 所示,BatchEnsemble 实现了与 PNN 相当的精度,同时具有 4 倍的加速和 50 倍的内存消耗。它还保留了 PNN 的不遗忘特性。因此,BatchEnsemble 在所有比较方法中具有最佳权衡。

对于 Split-ImageNet,我们考虑 T = 100 个任务并应用 ResNet-50,然后每个任务使用最终的线性分类器。 BatchEnsemble 在 Split-ImageNet 上超过 100 个顺序任务的参数开销为 20%:参数总数为 30M vs. 25M(普通 ResNet-50)。由于显着的内存消耗,PNN 无法学习 100 个顺序任务;上面提到的其他方法也没有在 ImageNet 规模上显示结果。因此,我们采用了我们的两个基线。第一个基线是“BN-Tuned”,它微调每个任务的批量标准化参数,并且之前在多任务学习方面表现出强大的性能(Mudrakarta 等人,2018 年)。为了进行公平比较,我们增加了 BN-Tuned 中的过滤器数量,以便两种方法具有相同数量的参数。第二个基线是一个简单的集成,它为每个任务训练一个单独的 ResNet-50。这为 BatchEnsemble 每个任务的表现力提供了一个粗略的上限。注意 BatchEnsemble 和两个基线都不受灾难性遗忘的影响。因此,我们将每个后续任务的验证准确性视为评估指标。图 3a 显示 BatchEnsemble 始终优于 BN-Tuned。这表明 BatchEnsemble 是一种适用于终身学习的实用方法,可扩展到大量顺序任务。

图 3:终身学习的表现。 (a):每个 Split-ImageNet 任务的验证准确度。标准差是在 5 个随机种子上计算的。 (b):BatchEnsemble 和 Split-CIFAR100 上的其他几种方法。 BatchEnsemble 在准确度 (↑)、忘记 (↓) 和时间和内存 (↓) 成本之间实现了最佳权衡。 VAN:香草神经网络。 EWC:弹性重量整合(Kirkpatrick 等人,2016 年)。 PNN:渐进式神经网络(Rusu 等人,2016 年)。 BN- Tuned:根据后续任务微调 Batch Norm 层。 BatchE:BatchEnsemble。上限:每个任务的单个 ResNet-50。

4.2 机器翻译

在本节中,我们评估了 Transformer 上的 BatchEnsemble (Vaswani et al., 2017) 和大规模机器翻译任务 WMT14 EN-DE/EN-FR。我们将 BatchEnsemble 应用于集成大小为 4 的所有 self- 注意力层。自注意力层中的集成可以解释为每个集成成员保持自己的注意力机制并做出独立决策。我们在 WMT16 英语-德语数据集和 WMT14 英语-法语数据集上进行实验,使用 Transformer base(65M 参数)和 Transformer big(213M 参数)。我们在单个 Transformer 模型和 BatchEnsemble Transformer 模型之间保持完全相同的训练方案和超参数。

如图 4 所示,BatchEnsemble 实现了比单个模型更快的收敛速度。 Big BatchEnsemble Transformer 在 WMT16 英语-德语上比单个大型 Transformer 快大约 1.5 倍。此外,BatchEnsemble Transformer 的验证复杂度也低于大型 Transformer(表 2)。这表明 BatchEnsemble 有望用于更大的 Transformer 模型。我们还将 BatchEnsemble 与 dropout ensemble 进行了比较(表 2 中的 MC-drop)。 Transformer 单一模型本身使用 dropout 层。我们在测试期间使用不同的采样丢失运行多个前向传递。样本大小为 16,这已经比 BatchEnsemble 贵 16 倍。如表 2 所示,dropout 集成并没有提供比单一模型更好的性能。然而,附录 B 显示,虽然 BatchEnemble 的测试 BLEU 分数在训练过程中增加得更快,但提供较低验证损失的 BatchEnsemble 并没有在单一模式下获得更好的 BLEU 分数

图 4:BatchEnsemble 与单一模型在 WMT 英德和英法上的比较。在模型达到目标验证困惑度后停止训练。 BatchEnsemble 通过利用多个模型提供更快的收敛速度。 (a):WMT16 英德任务的验证损失。 (b):WMT14 英法任务的验证损失。大:变形金刚大模型。基础:变压器基础模型。 BE:BatchEnsemble。单一:单一模型

表 2:Newstest2013 上的大变压器的困惑。集合大小为 4 的 BatchEnsemble

4.3 分类

我们使用 CIFAR-10/100 数据集 (Krizhevsky, 2009) 在分类任务上评估 BatchEnsemble。我们在 ResNet32 上进行评估(He et al., 2016)。为了在 CIFAR100 上实现 100% 的训练准确度,我们使用了比标准 ResNet-32 多 4 倍的过滤器。在本节中,我们与 MC-dropout (Gal & Ghahramani, 2015) 进行比较,这也是一种内存高效的集成方法。我们在最终的线性分类器之前添加了一个更密集的层,然后是 dropout,以便 MC-dropout 的参数数量与 BatchEnsemble 相同。大多数超参数在单个模型、BatchEnsemble 和 MC-dropout 之间共享。有关超参数的更多详细信息,请参见附录 B。请注意,我们增加了 BatchEnsemble 的训练迭代以达到其最佳性能,因为每个集成成员仅获得一部分输入数据。我们在 CIFAR-10/100 上用 375 个 epoch 训练 BatchEnsemble 模型和 MC-dropout,这比单个模型多 50% 的迭代。尽管训练时间更长,但 BatchEnsemble 仍然比顺序训练单个模型快得多。导致相同性能的另一种实现是增加小批量大小。例如,如果我们使用 4 倍大的 mini-batch 大小,则无需增加训练迭代次数。表 3 显示 BatchEnsemble 比单一模型和 MC-dropout 达到更好的准确度。我们还计算了naive ensemble 的准确率,其成员由单独训练的单个模型组成。它的准确性可以看作是有效集成方法的上限。为了公平起见,我们还在 附录 F 中将 BatchEnsemble 与小模型的朴素集成进行了比较。

表 3:ResNet32 上的验证准确度。大小为 4 的集合。MC-drop 代表 Dropout 集合(Gal & Ghahramani,2015)

除了看不见的类之外,腐败是另一种类型的分布外示例。收集到的数据被损坏或贴错标签是很常见的。因此,测量腐败下的不确定性建模具有实际意义。我们希望我们的模型在这种情况下保持不确定性或校准。在本节中,我们在最近提出的 CIFAR-10 损坏数据集(Hendrycks & Dietterich,2019)上评估不同方法的校准。该数据集包含超过 30 种类型的图像损坏。请注意,损坏的数据集被用作测试集而没有对其进行训练。鉴于对 CIFAR-10 损坏的预测,我们可以比较准确性和校准度量,例如单个神经网络的 ECE 损失、朴素集成和 BatchEnsemble。奥瓦迪亚等人。 (2019)对 CIFAR-10 腐败的多种方法进行了基准测试。他们的结果表明,朴素集成在准确度和 ECE 损失方面都取得了最佳性能,显着优于其他方法,包括 dropout 集成、温度缩放和变分方法。 Dropout ensemble 是最先进的内存高效集成方法。

本文的范围是关于高效集成。因此,在本节中,我们主要将 BatchEnsemble 与 CIFAR-10 损坏的 dropout 集成进行比较。朴素集成也被绘制为我们方法的上限。如图 5 所示,BatchEnsemble 和 dropout ensemble 在所有倾斜强度的损坏数据集上实现了相当的精度。当数据集损坏时,校准是比准确性更重要的指标。我们观察到,随着偏斜强度的增加,BatchEnsemble 比 dropout 实现了更好的平均校准。此外,dropout ensemble 需要多次前向传递才能获得最佳性能。奥瓦迪亚等人。 (2019) 使用样本大小 128,而我们发现样本大小 128 和 8 之间没有显着差异。请注意,即使样本大小为 8,它的测试时间成本也比 BatchEnsemble 贵 8 倍。

最后,我们展示了将 BatchEnsemble 和 dropout ensemble 相结合可以带来更好的准确性和校准。在保持内存消耗效率的同时,朴素集成具有竞争力。这也证明了 BatchEnsemble 是一种用于 dropout ensemble 的正交方法;将这两者结合起来可能会获得更好的性能

【摘要】 深度神经网络是强大的黑盒预测器,最近在广泛的任务中取得了令人印象深刻的性能。量化神经网络中的 预测不确定性 是一个具有挑战性但尚未解决的问题。贝叶斯神经网络能够学习权重分布,是目前估计 预测不确定性 的最先进技术;但其需要对训练过程进行重大修改,并且与标准(非贝叶斯)神经网络相比,计算成本很高。在本文中,我们提出了贝叶斯神经网络的替代方案:深度集成。该方案易于实现、易于并行化并产生高质量的 预测不确定性 估计。通过一系列关于分类和回归基准的实验,我们证明它能够产生校准良好的不确定性估计,并且与贝叶斯神经网络一样好甚至更好。最后,我们评估了测试样本(类别已知或未知)的 预测不确定性 ,结果表明我们的方法能够在未知类上表达出更高程度的不确定性,这与y现有方法对未知类别也做出过度自信的预测相比,存在明显改进。

  • 一是校准(calibration) [7, 8]。从形式上看,校准是主观预测和(经验)长期频率之间的差异。这是一个频率主义的不确定性概念:如果一个神经网络声称某个特定的标签在 90%90\% 的情况下是正确标签,那么,在评估过程中,所有被赋予 90%90\% 正确概率的标签中,90%90\% 应该是正确的标签。校准可以通过正确的评分规则[12]来激励,如对数预测概率Brier评分[6]。有趣的是,这两个评分规则常用于深度学习中,但没有被用于激励校准。请注意,校准是 准确率(Accury)的正交相关:一个神经网络的预测可能是准确但未校准的。

模型错误指定域偏移 具有鲁棒性的、校准良好的预测,具有许多重要的实际用途。已校准的预测是许多关于物理世界预测问题的核心(例如,天气、地震、医学诊断等),并且可以按照频率主义的不确定性概念客观地理解和传递(通常被故障前平均时间、医疗预测等概念所部分地捕获)。校准后的预测也允许模块化;如果系统的所有组件都经过良好校准,那么各种预测的不确定性可以很容易地整合为不同模块之间的通用不确定性流。对错误指定的鲁棒性,是许多现实世界应用中的常见要求,因为训练数据不完整或落后于要进行预测的最新数据。对轻微的 错误指定域偏移 具有鲁棒性,使神经网络无需重新训练即可继续有用(或至少知道它没有用)。

5 多样性分析

第 2 节 所述,集成成员之间的多样性会带来更好的性能。因此,除了准确性和不确定性指标之外,我们对 Rank-1 扰动提供了多少多样性特别感兴趣。我们将 BatchEnsembledropout ensemblenaive ensemble 在新提出的多样性指标(Fort 等,2019)上进行比较。该指标衡量了集成成员在测试集上的不一致性。我们在不同数量的训练数据上计算了该指标。有关多样性指标和图表的详细信息,请参见 附录 E

在本节中,我们将直观地解释为什么 BatchEnsemble 会以更少的训练数据导致更多样化的成员。如果只有有限训练数据可用,则神经网络参数将在收敛后保持接近其初始化。在只有一个训练数据点可用的极端情况下,优化很快就会收敛,大部分参数并没有得到更新。这表明:初始化的多样性完全决定了集成系统的多样性。经典集成具有完全独立的随机初始化,而 BatchEnsemble 具有伪独立随机初始化。相比之下,dropout ensemble 的所有成员共享相同的初始化参数。因此,在训练数据有限的情况下,经典集成和 BatchEnsemble 在多样性方面都显著优于 dropout ensemble

更重要的是,图 8 提供了关于 BatchEnsemble 何时在实践中获得最佳收益的建议。我们观察到,当训练数据有限时, BatchEnsemble 的多样性与 naive ensemble 相当。这就解释了为什么 BatchEnsemble 在 CIFAR-100 上比 CIFAR-10 有更高的收益,因为 CIFAR-100 上每个类只有 500500 个训练点,而 CIFAR-10 上是 50005000 个。因此,与 CIFAR-10 相比,CIFAR-100 的训练数据更有限。另一个暗示是
BatchEnsemble 可以从严重过度参数化的神经网络中受益更多。原因是在训练数据量固定的情况下,增加参数数量本质上会收敛到训练数据有限的情况。在实践中,充分利用日益增长的计算能力的最佳方法是设计更深更广的神经网络。这表明 BatchEnsemble 从计算能力的发展中获益更多;因为它对过度参数化的神经网络有更好的增益。

图 8:BatchEnsemble、naive ensemble 和 dropout ensemble 在多样性指标上的比较。图中的每个点都代表一个经过训练的模型,其中 xx 轴代表其在验证集上的准确度,yy 轴代表其相对于基础模型的多样性。基本模型通常具有 00 多样性。我们绘制了在不同比例的训练数据上训练的模型多样性,分别为 100%100\%50%50\%20%20\%10%10\%

6 结论

我们介绍了 BatchEnsemble,这是一种用于集成和终身学习的有效方法。 BatchEnsemble 可用于提高任何神经网络的准确性和不确定性,例如经典集成。更重要的是,BatchEnsemble 消除了经典集成的计算和内存瓶颈,其不仅成功应用于更快的集成,而且可以支持多达 100100 个任务的终身学习。我们相信 BatchEnsemble 在终身学习方面具有很大的改进潜力。本文工作可以作为一个新研究领域的起点。