【论文翻译】(ICML2019)Training Neural Networks with Local Error Signals
摘要
用于分类的神经网络的监督训练通常采用全局损失函数。损失函数为输出层提供一个梯度,该梯度被反向传播到隐藏层,以指示权重的更新方向。另一种方法是用逐层损失函数训练网络。在这篇论文中,我们首次证明了分层训练可以在各种图像数据集上达到最新的水平。我们使用单层子网络和两个不同的监督损失函数来产生局部误差。我们证明了这些损失的组合有助于在局部学习环境下的优化。使用局部错误可能是向更生物学上可信的深入学习迈出的一步,因为全局错误不必传输回隐藏层。
1. Introduction
用于分类的神经网络通常使用全局交叉熵损失进行训练,预测误差从输出层逐层反向传播到隐含层(D. E. Rumelhart, 1986)。在前向和后向遍历完成之前,不能更新隐含层的权值。这种向后锁定防止了权重更新的并行化。它还可以防止用于存储隐藏层**的内存的重用。为了避免向后锁定和内存重用问题,提出了几种方法。
全局误差的反向传播在生物学上是不合理的,原因有很多。人们提出了几种更现实的替代方法,但这些方法似乎没有可以扩展到更大更复杂的问题CIFAR10和ImageNet. 在这篇论文中,我们证明了通过局部产生错误的隐含层的分层训练可以避免后向锁定问题。局部损失函数不依赖于全局生成的错误,梯度不回传给前一层,并且在前向传递时可以更新隐含层的权值。在推理阶段,网络表现为一个经过全局支持训练的标准网络。当隐层的权值被更新后,梯度和**就不再需要保存在内存中了。这减轻了训练深度网络时的内存需求。尽管我们同时训练所有层,但本地生成的错误也允许一次一个地贪婪地训练层,这可以进一步减少内存占用,而且减少培训时间。
使用局部错误可能是迈向更生物学上合理的深度学习的一步,因为全局错误不必传播回隐藏层。全局目标可以投射回隐藏层。尽管局部损失函数可以使训练速度更快、记忆效率更高、更并行、在生物学上更合理,但关于分层监督训练的研究文献很少。
2. Related work
2.1. Local Loss Functions
局部损耗函数被用来独立于全局损耗对隐藏层进行预训练,在某些情况下,使用全局反向传播进行微调可以提高性能. 局部损失函数被用作辅助目标来提高性在没有进行微调的情况下,使用有监督的逐层损失函数,这在以前也有过探讨。CIFAR-10的最佳报告结果是7.2%使用了本地分类器和集成,接近全球支持的结果。我们的贡献是证明结合局部相似度匹配损失的局部分类器可以在测试误差方面匹配全局支持。
使用合成梯度训练隐藏层是避免向后锁定问题的另一种方法。该方法利用局部损失函数训练子网络来逼近真实梯度。利用L2损失训练合成梯度模块,从上述层预测真实梯度。模块的输入是隐层**,在某些情况下是目标向量。该方法涉及到分层监督训练,因为目标信息是用来训练隐层的。该方法与我们的方法不同,因为我们不尝试近似一个反向传播的梯度,而是利用目标向量来创建一个独立于上述层的误差信号。
2.2. Similarity Measures in Neuroscience
相似度测量方法已被应用于神经科学领域来描述神经活动模式。表征相似性分析(RSA)测量不同实验条件下表征的相似性。通过比较与每对实验条件相关的活度,可以得到一个代表性的差异矩阵(RDM),很像我们在这项工作中使用的相似矩阵。
2.3. Similarity Measures in Machine Learning
本文的相似度匹配损失函数为与之前的无监督聚类和特征学习相关。假设我们有n个数据点作为列H = (h1,…,hn)。这个的分解矩阵可以表示为:
如果我们对C执行正交性,要求CT C = I,则(1)中的最小化实现了主成分分析(PCA)的子空间版本。如果对G施加L1惩罚,则最小化执行稀疏编码。在G的n列是一个热的集群选择器的约束下,通过求解这个最小化,找到一个数据的k-means集群,其中C的k列是集群中心。在H、C、G≥0的约束下,求出数据的非负矩阵因式分解(NMF)。这些方法都被用于计算机视觉中的无监督特征学习。给出一些自相似测度S(.),考虑目标:
如果S(.)度量数据点之间的欧式距离,则这种最小化实现了多维标度(MDS)。If 我们 定义 S(X) = XT X 和 约束 G be≥ 0 , (2) 发现 所谓 的 最小化 symmetric NMF (Kuang et al., 2012 ).如果我们使用正交性代替非负性,要求GGT = I,则(2)中的最小化实现了一系列称为谱聚类的方法。通过在式(2)的第一项中选择不同的相似度度量S(.),该最小化可以实现不同的图聚类目标,即比值关联、核聚类和归一化分割.
以上是无监督聚类和特征学习方法。出于本文的目的,我们使用了可以被视为监督聚类丢失的情况,即如果两个数据点具有相同的标签,则它们属于同一个聚类。给定一个标签矩阵Y = (y1,…, yn),其列是数据的一热编码标签,我们最小化:
这里的矩阵Y是固定的,而调整参数θNeuralNet把损失减小到最低限度。对这种损失的直接解释是,它鼓励神经网络学习数据的表示,以便不同的类具有不同的表示。
3. Method
我们使用标准的卷积和全连接网络架构,但不是全局的反向传播错误,每个权层由一个本地学习信号训练,而不是沿着网络反向传播。学习信号由两个独立的单层子网络提供,每个子网络具有各自不同的损耗函数。其中一个子网络用标准的交叉熵损失进行训练,另一个子网络用相似匹配损失进行训练(见图1)。
3.1. Similarity Matching Loss
相似匹配损失度量了矩阵之间的L2距离,其中元素包含了小批示例之间的成对相似性。我们将这种损失称为Lsim或sim损失。给定一小批隐含层**H = (h1,…和一个热编码的标签矩阵Y = (y1,…, yn),我们有:
当H是线性层的输出时,NeuralNet(.)是线性层。当H是卷积层的输出时,NeuralNet(.)是一个卷积层,内核大小为3x3, stride为1,padding为1,对每个feature map进行标准差运算。这个操作将把输出的维数减少到2。S(X)是调整后的余弦相似矩阵或相关矩阵,一个小批量X。S(X)包含元素sij,其中下标i和j表示小批量的指标。xei表示以均值为中心的向量xi:
3.2. Prediction Loss
预测损失度量了局部分类器的预测与目标之间的交叉熵。我们把这种损失称为提前损失或提前损失.隐含层**的矩阵H的pred损失
其中W为权矩阵,权矩阵的宽度等于类数,高度等于隐藏维数,Y为一热编码目标的矩阵。如果H是卷积层的输出,则先执行平均池来减小大小,然后将feature map进行平铺。
3.3. Backprop Free Version
在(4)中,用对每个特征图的标准偏差操作代替NeuralNet(.),并将相似性匹配目标直接应用于这些特征,这是一种更具有生物学合理性的相似性匹配损失。然后不需要反向传播来计算隐含层的梯度。为了消除全局目标在每个隐藏层可用的需求,将一个热编码的目标向量替换为同一个目标向量的随机转换。我们将这种损失称为Lsimm bio或sim-bpf损失。
通过使用反馈校准将预测误差传输回隐含层,可以使Lpred损失在生物学上更合理。消除在每个地方提供全球目标的要求训练分类器,利用二叉交叉熵损失预测目标向量的二叉化随机变换。我们将这种损失称为Lpredd bpf或pred-bpf损失。实验部分包括在CIFAR-10上使用这两个版本的一个实验,以及它们的组合。
3.4. Combined Loss
我们将上述损失函数的加权组合表示为Lpredsim或简称为predsim损失。
也同样适用于生物学上更合理的损失函数。我们将这种损失表示为Lpredsimm bpf或简单地表示为predsimm -bpf损失。
4. Experiments
我们对MNIST、Fashion-MNIST、Kuzushiji-MNIST、CIFAR-10、CIFAR-100、STL-10和SVHN进行了实验,以评价训练方法的效果。我们使用了完全连接的架构和两个类似于vgg的架构,我们发现它们表现得很好。我们将每个模型在训练时的性能与glob损耗、pred损耗、sim损耗和predsim损耗进行了比较。我们还用cutout正则化训练出了性能最好的模型,除了dropout rate外,所有超参数保持一致,看看是否可以进一步改善结果。
选择了合适的结构和超参数,以获得较好的性能。对于给定数据集和架构组合的所有损失变化,超参数保持相同。实验尽可能的简单,只有辍学率,学习率,训练长度,隐层尺寸和平均池内核大小(在pred丢失中使用)在不同的实验中有所不同。
我们使用了两个不同的简单的类似于vgg的卷积网络。它们都由2x2的最大池化层、3x3的包含stride和padding 1的卷积层和全连接层组成。第一个架构称为VGG8B。这些层是conv128-conv256-pool-conv256- pool- 512-pool-conv512-pool-fc1024-fc。输出层的维数取决于类的数量。
第二个网络更深,记作VGG11B。这些层是conv128-conv128-conv256-pool-conv256-conv512-pool-conv512- pool-fc1024-fc。输出层的维数取决于类的数量。实验使用PyTorch框架进行。对于局部损失函数,在每一隐含层之后对计算图进行分离,防止后向梯度流造成输出损失。输出层采用交叉熵损失函数进行正常训练。
所有的实验都使用了128的批量大小。ADAM用于优化。权重因子β是手动调谐和设置为所有实验0.99 predsim损失。对于具有全局或pred损耗的网络,我们使用ReLU非线性。对于使用sim或predsim进行训练的网络,我们使用斜率为负0.01的leaky-ReLU,因为它提供了更稳定的训练。在每个非线性之前,我们应用批处理归一化。在每一个非线性之后,我们应用dropout,对所有的层具有相同的dropout率。
训练时间为MNIST和KuzushijiMNIST 100个epoch, Fashion-MNIST和SVHN 200个epoch,其他数据集400个epoch。学习率乘以0.25倍,分别为总训练时间的50%、75%、89%和94%。因为数字很大在实验中,我们只执行单次运行。我们报告最后一个训练阶段的测试错误。
在一些实验中,卷积滤波器的数量乘以2或3倍。这在表中表示为(2x)或(3x),后面跟着网络名。
4.1 MNIST
4.2. Fashion-MNIST
4.3. Kuzushiji-MNIST
4.4. CIFAR-10
4.5. CIFAR-100
4.6. SVHN
4.7. STL-10
5. Discussion
5.1. Results with Local Loss Functions
我们首先观察到,局部预测损耗(pred)的测试误差接近全局反向传播的误差。这与之前的工作是一致的,但仍然很有趣,因为隐藏层在训练期间与上面的层解耦。
令人惊讶的是,局部相似匹配损失(sim)能够为隐藏层提供良好的训练信号。在某些情况下,测试误差低于反向传播的全局交叉熵损失。这种损失促使来自不同类别的示例具有不同的表示形式,由余弦相似性度量。这可以看作是一种监督聚类。这个目标足以创建一个适合分类的隐藏表示,独立于上面的层。
结果表明,仅使用局部交叉熵(pred)或相似度匹配(sim)损失的训练在测试误差方面不匹配全局损失。然而,如果两个损失函数相结合(predsim),结果会有显著的改善。训练方法的性能因架构和数据集的不同而不同。总的来说,与类vgg架构中的全局反向传播相比,我们没有发现精度上的损失。这一结论是基于VGG体系结构的全球损失结果具有代表性的假设。如果我们将它们与文献报道的无残留体系结构的结果进行比较开源的实现,它们看起来同样好或更好。
对于CIFAR-10上的有监督的分层培训,我们将最先进的测试错误从7.2%提高到3.6%。类vgg模型的分层培训与global培训的残余体系结构具有竞争性几个数据集上的反向传播。对于没有数据扩充的STL-10,我们的结果是最好的报告。
我们使用dropout和批处理规范化来实现正则化。没有这些,结果会更糟。我们已经证明,更先进的正则化方法,如cutout,可以进一步提高结果。
我们发现,与提出的训练方法相比,类vgg架构的效果最好。对于像ResNet和WideResNet这样的残余架构,我们在去除残余连接后得到了更好的结果。我们还尝试用两层的卷积层替换最大池,但效果并不一样。
避免全局损失函数对于实际的神经网络训练有几个好处。后向锁定问题不再是一个问题,权重可以在前向传递期间更新。这减轻了内存需求,因为**不必保存在内存中向后传球。我们同时对所有层进行训练,但是使用局部损失函数也可以实现对隐藏层的逐层贪婪训练。它还允许模型和数据并行,模型的不同部分可以在不同的GPU上训练,每个GPU处理不同的批次。
5.2. Decoupling Optimization from Generalization
我们在大范围的数据集上比较了各种损失的测试错误。这些结果本身并不能帮助我们把优化效应从泛化效应中分离出来。看看训练中的错误就能明白这一点。总的来说,与我们实验中的局部损失相比,全支撑技术实现了更快的训练误差下降,并且与最终训练误差一样低或更低。这并不太令人惊讶,因为它可以获得每一层的全球损失的真实梯度。
在STL-10上,在不使用未标记数据的情况下,predsim损失达到了最佳报告的测试错误。该数据集的特征是图像相对较大(96x96),训练样本较少(5000)。大型模型容易对这些数据进行过度拟合。既支持又承担了当地的损失能够达到训练误差< 0.2%。与此同时,各局部损耗均得到了较低的测试误差。这立即表明,局部学习可能会提供一种归纳偏见,使解决方案泛化得更好。
观察到组合的局部损耗通常比单独的损耗获得更低的测试误差,可以认为sim损耗可能增加了正则化效应。从训练曲线来看(图2),这并不是全部。在这里,sim的丢失比pred的训练误差要低得多,而在predsim中两者的结合比单独的两种方法训练误差都要低。在每个可以比较局部损失的实验中,predsim损失比单独的局部损失获得的训练误差更小。这表明,在深度网络的局部学习环境中,这两种损失都有助于优化。
综上所述,我们的证据表明完全支持通常可以更快地降低训练误差,并降低最终训练误差,但是在许多实验中,局部学习似乎添加了一个减少过拟合的归纳偏差。在局部学习的情况下,sim和pred损失都以互补的方式帮助优化。
我们已经表明,predsim损失在很多数据集可以实现strongtest错误结果。如果我们的结果来自于更好的泛化,人们可能会怀疑局部学习在像ImageNet这样的大型数据集上表现更差,因为模型不太容易过度拟合。由于时间和计算的限制,本文没有得到ImageNet的结果。然而,最近的研究结果表明,局部分层训练可以扩展到ImageNet,方法是在ImageNet上获得10.2%的令人惊讶的前5位单作物测试错误,其损失与我们所说的pred损失类似。这就留下了一个可能性,即增加一个sim丢失可以进一步改善这个结果。
5.3. Biological Plausibility
我们提出了一个局部损失函数的组合,它提供了一种使用全局反向传播来替代端到端训练的方法。这两场失利都没有提供免费的训练。但是,错误不需要通过整个网络传输回来,只需一步反向传播就足够了。
如果我们去掉反向传播的要求,并将全局目标的直接投影添加到隐藏层(predsim-bpf),性能会变差,但CIFAR-10上的7.8%的误差仍然是无支撑方法的最佳报告结果。这种方法在许多方面从生物学上讲是可行的,但仍存在一些问题。我们在卷积层中使用了不切实际的权值共享,并且允许权值切换符号。我们还使用了批处理规范化,这在生物学上是不现实的。该方法是一种离线算法,因为我们使用小批量训练。此外,我们忽略了真正的神经元与尖峰信号的交流。
局部损失函数可能是解决信贷分配问题的一个步骤。使用局部分类器来生成训练信号的方法在以前已经有过研究。我们的贡献是证明这样的分类器可以训练与反馈对齐,而目标可以用目标的随机投影代替。当预测损失与相似匹配损失相结合时,我们也显示出准确性的提高。
使用无支撑的pred-bpf损耗,避免了重量传输问题(Grossberg, 1987),因为反馈对齐不需要对称的重量。在线版本的反馈对齐学习可以用一种生物学上可行的方式来实现,即使用多室神经元,并在皮层微电路中进行连续学习,而不需要分别向前和向后传递。可以使用本地Hebbian和反Hebbian学习规则来实现sim-bpf丢失的在线版本,至少对于非监督学习来说是这样。
迄今为止,错误驱动学习的生物学上合理的算法主要关注如何将错误传输回隐藏层,或如何将目标传输回隐藏层。在本文实验的背景下,全局误差传输不是错误驱动学习的必要条件。通过网络向后传播全局目标也不是必需的。隐藏层可以独立于上述层进行训练,不会损失精度。