Decoupled Neural Interfaces using Synthetic Gradients

Decoupled Neural Interfaces using Synthetic Gradients Abstract 神经网络的训练通常需要计算图向前推到,然后再向后传播误差更新权重。因此从某种意义上来说,网络的所有层都被锁定了,因为他们必须等待网络其他部分向前推理并向后传播才能对其进行更新。在这项工作中,我们引入了网络图的未来计算模型,来通过对模块进行解耦,从而打破这个约束。这些模型仅使用局部信息即可预测子图的结果。尤其是,当我们专注于对误差梯度进行建模:通过使用建模的合成梯度来代替真实的反向传播误差梯度,从而使得子图解耦,并且可以独立且异步的更新子图,即我们实现了解耦的神经网络接口。我们展示了前馈模型的结果,其中的每一层都是异步训练的;RNN的结果,可以预测其中一层的未来的梯度,从而延长了RNN有效建模的时间;还有分层的RNN系统的结果,在不同的时标有刻度。最后,我们证明了,除了预测梯度之外,相同的框架还可以用于预测输入,从而导致模型在向前传播和向后传播都是解耦的,等于两个独立的网络,他们可以共同学习,从而将其组成一个单独的功能网络。 Introduction 有向神经网络中的每个层(或者模块)都可以视为一个计算步骤,转换其输入数据。这些模块通过有向边链接,从而建立了前馈图,该图定义了网络输入的数据流,通过每个模块,产生网络输出。对输出定义loss函数来产生误差并通过网络图反向传播回去以更新每个模块的权重。 这种机制导致了如下几个形式的锁定locking: Forward Locking 前向锁定:在执行前向推理图中的先前节点之前,没有模块能够处理其输入数据。 Update Locking 更新锁定:在所有相关模块在前向图执行完毕之前,无法更新任何模块。 Backwards Locking 反向锁定:在所有相关模块在前馈和反向模型执行完之前,没有模块可以被更新。比如BP算法。 前向,更新,反向锁定限制了神经网络必须以顺序,同步的方式运行和更新。对于简单网络,看似良性,但是对于大型复杂不规则或异步时间尺度的多个环境中运行的网络系统就会有很大问题。 例如:分布式模型,其中模型的一部分是被许多下行的客户机共享和使用。这就意味着所有客户机必须完全执行并且将误差梯度传递会共享模型然后才能更新,这意味着这个系统训练速度由最慢的客户机决定。如果能够对当前网络的训练进行并行化,那么就可以极大地加快计算时间。 本项工作的目标是移除神经网络的更新锁定。这可以通过移除反向传播实现。为了更新模块i的权重θi\theta_{i},我们尽可能的近似了反向传播的函数: ∂L∂θi=fBprop ((hi,xi,yi,θi),…)∂hi∂θi≃f^Bprop (hi)∂hi∂θi \begin{aligned} \frac{\partial L}{\partial \theta_{i}} &=f_{\text {Bprop }}\left(\left(h_{i}, x_{i}, y_{i}, \theta_{i}\right), \ldots\right) \frac{\partial h_{i}}{\partial \theta_{i}} \\ & \simeq \hat{f}_{\text {Bprop }}\left(h_{i}\right) \frac{\partial h_{i}}{\partial \theta_{i}} \end{aligned} 其中h表示激活层,x是输入,y是监督(标签),L是总体损失。这使得其更新的依赖全部落在了h上,也就是模块i的局部信息。 该方法的前提是允许神经网络模块进行交互并且在没有更新锁定的情况下进行训练。在这里作者将传统的神经网络接口(神经网络中两个模块连接)替换为解耦神经接口(DNI)。简单来说,就是当一个网络层向另一个层传递激活值的时候,会有一个相关的模型,对该激活值产生一个预测的误差梯度。该预测的梯度仅仅是对该激活值的一个函数,而不依赖与其他事件状态或者损失。然后发送的那个网络层可以立即使用这个合成梯度来进行更新。通过移除更新和反向锁定,我们可以无需同步就能训练网络。我们还展示了初步的结果,将这一思想扩展并且也移除了前向锁定,从而使得网络的模块也可以在没有同步前向通过的情况下进行训练。当将其应用于RNN时,我们表明使用合成梯度可以使RNN建模的时间范围远大于BPTT的限制。我们还表明,使用合成梯度对两个在不同时间范围内的RNN进行解耦可以大大提高训练效果。 Decoupled Neural Interfaces 首先描述high-level的通信协议,该协议用于允许异步学习agents进行通信。 正如图1所示, Sender A 发送信息(激活值)ha给Receiver B。简单来说可以理解为A是前面的layer,B是后一个layer。B有一个utility是MB用于处理信号ha,来预测反馈。误差信号:δ^A=MB(hA,sB,c)\hat{\delta}_{A}=M_{B}\left(h_{A}, s_{B}, c\right) 其中,ha是信息(激活),B的状态SB,和一些其他的潜在信息c,例如标签或context。A可以立即利用该误差信号进行更新。B也可以及时完全评估真是的sigmaA,因此,B的utility模型可以被更新用于fit真是的utility,减少真实误差和合成误差的差异。 该协议允许A以A和B更新解耦的方式向B发送消息– A不必等待B评估真实效用就可以对其进行更新–并且A仍然可以学习发送消息到B。 我们可以将该协议用于网络的通信过程,从而产生所谓的去耦神经接口(DNI)。对于神经网络,反馈误差信号sigma_hat_A可以采用不同的形式,例如:梯度可以用作与反向传播一起使用的误差信号,目标信息可以用作与目标传播一起使用的误差信号,甚至可以用作结合到强化学习框架中的值。本文专注在通过反向传播和基于梯度更新的可微网络上。因此,专注于产生的误差梯度作为反馈sigma_hat_a,称为合成梯度。 ...

February 18, 2020 · 1 分钟 · 141 字

Stagewise Knowledge Distillation

Stagewise Knowledge Distillation Abstract 大部分现代深度学习模型需要高运算力,但是对于嵌入式设备来说,缺少这种高运算能力。因此对于这类设备,能够减少运算并且保持性能的模型非常重要。知识蒸馏就是解决这类问题的方法之一。传统知识蒸馏方法是直接在一个阶段中将知识从老师中转换到学生。我们提出一种阶段性的训练方式,来提升知识的转换。这种方法甚至可以只用一部分训练教师模型的数据,并且不影响效果。这种方法可以补充其他模型压缩技术,甚至可以看做是通用的模型压缩技术。 Introduction 本文主要是在知识蒸馏上的模型压缩技术。因此先介绍一下模型压缩的分类。 模型压缩主要可以分为以下五类: Parameter Pruning and Sharing 参数修剪和共享:主要是为了减少网络参数中的冗余并且消除不必要的参数。 Low Rank Factorization techniques 低秩分解技术:主要是使用张量/矩阵分解来确定网络的有效参数。 Transferred/Compact Convolutional Filters 转换卷积过滤器:旨在使用专门设计的卷积过滤器以减少计算和存储空间。 knowledge Distillation 知识蒸馏: 旨在利用一个更大的与训练模型教师训练出一个小模型学生。 Quantization 量化:旨在减少每个权重的位数,同时保留网络性能。 在这项工作中,主要专注于知识蒸馏的方法。理想情况下,教师应该能够将其所学的知识全部传授给学生,但是并非如此。此外老师所有的知识并不一定和学生有关,最理想的情况是,学生学习重要的环节,而忽略不重要的环节。本文主要采用resnet34作为教师模型,学生模型也采用类似resnet的模型,但是在存储结构和计算复杂度上要小得多。本文介绍了使用预训练的教师模型的多个特征图训练学生的方法。 本文主要采用一种新的方式进行训练,采用固定在某个层的教师模型的特征图对学生模型进行训练。针对每个特征图,以阶段的方式对学生模型进行训练,并且直接在数据集上训练最终的分类层,而无需老师。最终证明了,这种方法可以直接在teacher的一部分训练数据上学习。 Related Work Methodology 本文主要采用的resnet网络,关于resnet的具体结构不赘述了主要就是: Basic Block Downsample Block ResNet18 or 34 type models Teacher Network 本文采用res34作为教师模型 Student Network 采用缩减版的res34作为学生模型,主要是减少basic block数量。 Dataset 数据集采用了三个:Imagenette Imagewoof 和 CIFAR10。前两个数据集是Imagenet的子数据集。第一个相对简单一些,后者相对难一点。本项工作的目的不是为了尽可能提升准确率,而是为了能够使得学生的准确率尽可能接近老师。 Proposed Training Method 在实验早期阶段中,我们训练多个学生模型的特征图以同时模仿教师模型中对应的特征图和标签。所以每对特征图的均方差误差将会被累计。此外,还会累计上交叉熵损失函数。因此总损失函数可以表示为: L(y,y^,ycls,class)=1MN∑i=1N∑j=1M(y(i,j)−y^(i,j))2+1MC∑j=1M∑k=1C{−log⁡(exp⁡(ycls(j, class ))∑k=1Cexp⁡(ycls(j,k)))} \begin{aligned} L\left(y, \hat{y}, y_{c l s}, \mathrm{class}\right) &=\frac{1}{M N} \sum_{i=1}^{N} \sum_{j=1}^{M}(y(i, j)-\hat{y}(i, j))^{2} \\ &+\frac{1}{M C} \sum_{j=1}^{M} \sum_{k=1}^{C}\left\{-\log \left(\frac{\exp \left(y_{c l s}(j, \text { class })\right)}{\sum_{k=1}^{C} \exp \left(y_{c l s}(j, k)\right)}\right)\right\} \end{aligned} N表示的是blocks的数量,y(i,j)是teacher模型,第i个block对应第j个输入的中间输出。同理yhat就是学生模型的。M是batchsize。ycls(j,k)是模型第k个类,第j个输入所对应的输出,C是类别的数量,而且类是每个特定输入所代表的正确的类。 ...

February 17, 2020 · 1 分钟 · 139 字

Federated Meta-Learning with Fast Convergence and Efficient Communication

Federated Meta-Learning with Fast Convergence and Efficient Communication Abstract 本文提出了一个联邦元学习框架FedMeta,该结构共享参数化算法(meta learner)而不是以前的全局模型。本文在LEAF数据集和实际的数据集进行了评估,并且证明了FedMeta所需的通信成本降低了2.82-4.33倍,收敛速度更快,与FedAVG相比甚至提高了3.23~14.84个百分比。此外FedMeta保留了用户隐私,因为仅仅分享了参数化算法而没有数据。 Introduction 在联邦学习领域比较著名的FedAvg算法,可以灵活地使用SGD进行本地训练,在平衡计算和通信成本的情况下达到较高的精度。 在元学习领域,像MAML这种基于初始化的元学习算法非常擅长对于新的task的快速收敛以及拥有良好的泛化性。这使得其非常适合于non IID且高度个性化的去中心化数据。 受到这个启发,本文开发了一个与之前联合学习中工作大不相同的联合元学习框架。本文首先将元学习方法和联邦学习联系起来。在元学习中,通过元训练过程从大量的任务重缓慢学习参数化的算法(meta learner),在该过程中,算法会在每个task中快速训练一个特定的模型。 task通常由support set和query set组成,彼此不想交。在support set上训练特定任务的模型,在query set上进行测试。然后利用测试结果更新算法。在联邦元学习中,算法(meta learner)在server端维护,并分发到clients进行模型的训练。元训练的每个episode过程中,被采样到的一个batch的clients会接受到算法(meta learner)的参数然后进行模型训练。然后将query set上的测试结果上传到server端更新 meta learner。整体流程如图所示: Comparing federated meta-learning with federated learning FML和ML的比较。 联邦元学习类似于联邦学习,区别主要在于共享的不再是全局模型,而是算法参数(元模型参数)。但是,元学习在概念上和分布式模型训练不同,而且在共享元学习算法可以比共享模型更灵活应用。例如在图像分类中,n个类别的图像可能在clients之间不均匀地分布,其中每个client最多具有k个类别。对于联邦学习需要训练一个大型的n类分类器,以利用来自所有客户端的数据,然而其实k类分类器就足够了,因为他每次其实只为一个client做预测。对于联邦学习这种庞大的模型需要大量的通信成本,虽然可以只向client发送模型的一部分以更新相关参数,但这必须先了解client的私有数据才能决定。而另一方面,在元学习中,算法可以训练包含不同类别的任务。例如MAML可以通过对k类任务进行元训练来为K类分类器提供初始化,无论具体类别是什么。因此,在FML框架中,可以利用MAML对所有n个类别进行k类分类器初始化的元训练。也就是让一个k类分类器在n个类别的任务背景下进行初始化的元学习。这样FML的通信和计算成本都降低了。 Contributions 本文贡献主要专注于联邦学习设置方面的算法设计,为此本文提出了一个新的框架并做了大量的实验。贡献点主要有三:1. 提出FedMeta框架,结合meta和fed,将maml算法和meta-sgd集成到federated learnin中。2. 在LEAF数据集上进行试验,与FedAvg进行比较,结果表明Fedmeta减少开销,同时精度更高。3. 将FedMeta应用于推荐任务,其中每个client都有高度personalized的记录,通过实验证明,与独立或联邦学习方法系那个比,元学习算法可以实现更高准确性。 Federated Meta-Learning The Meta-Learning Approach 元学习的目的是meta-train一个算法(meta learner)A,能够快速的训练一个模型。也就是能够得到一个能够快速收敛的初始模型。算法AφA_{\varphi}是参数化的模型,其参数在元训练过程中,通过一系列的tasks进行更新。 元训练过程中,一个task T包含了一系列的 support set和query set,每个set都有对应的标签和数据。算法(meta learner)A会在support set上对模型f进行训练,并且输出参数θT\theta_T,这成为inner update。然后模型fθTf_{\theta_T}会在query set上进行评估,然后会计算test lossLDQT(θT)\mathcal{L}_{D_{Q}^{T}}\left(\theta_{T}\right) 来反映算法A的训练能力。最后A通过最小化test loss来进行更新,这个步骤称为outer update。这里要注意的是query set和support set是disjoint的,以最大化A的泛化能力。元训练阶段中在每个episode会从一个meta training set中样一个batch的tasks。因此算法A的优化目标可以表示为: min⁡φET∼T[LDQT(θT)]=min⁡φET∼T[LDQT(Aφ(DST))] \min _{\varphi} \mathbb{E}_{T \sim \mathcal{T}}\left[\mathcal{L}_{D_{Q}^{T}}\left(\theta_{T}\right)\right]=\min _{\varphi} \mathbb{E}_{T \sim \mathcal{T}}\left[\mathcal{L}_{D_{Q}^{T}}\left(\mathcal{A}_{\varphi}\left(D_{S}^{T}\right)\right)\right] MAML是具有代表性的元学习算法。对于MAML的算法A就是用于产生模型的初始状态。具体地说,就是对于每个task T,算法使得α=θ\alpha = \theta,使得算法的参数和模型f的参数相等。然后模型f的参数在support set上训练,根据损失函数进行更新:LDST(θ):=1∣DST∣∑(x,y)∈DSTℓ(fθ(x),y)\mathcal{L}_{D_{S}^{T}}(\theta):=\frac{1}{\left|D_{S}^{T}\right|} \sum_{(x, y) \in D_{S}^{T}} \ell\left(f_{\theta}(x), y\right)。最后把模型参数在query set上进行测试,然后计算测试的损失:LDQT(θT):=1∣DQT∣∑(x′,y′)∈DQTℓ(fθT(x′),y′)\mathcal{L}_{D_{Q}^{T}}\left(\theta_{T}\right):=\frac{1}{\left|D_{Q}^{T}\right|} \sum_{\left(x^{\prime}, y^{\prime}\right) \in D_{Q}^{T}} \ell\left(f_{\theta_{T}}\left(x^{\prime}\right), y^{\prime}\right) ...

February 5, 2020 · 1 分钟 · 163 字

CS330 lecture 1&2 学习笔记【未完】

CS330 lecture 1&2 notes Informal Problem Definitions The multi-task learning problem: Learn all of the tasks more quickly or more proficiently than learning them independently.(更快更专业学习所有任务) The meta-learning problem: Given data/experience on previous tasks, learn a new task more quickly and/or more proficiently.(依照先前任务的经验,更快更好的学习新任务) Multi-Task Learning Basics 传统单任务学习 Single-task learning: D={(x,y)k}min⁡θL(θ,D) \begin{array}{l}{\mathscr{D}=\left\{(\mathbf{x}, \mathbf{y})_{k}\right\}} \\ {\min _{\theta} \mathscr{L}(\theta, \mathscr{D})}\end{array} 损失函数 Typical loss: negative log likelihood L(θ,D)=−E(x,y)∼D[log⁡fθ(y∣x)] \mathscr{L}(\theta, \mathscr{D})=-\mathbb{E}_{(x, y) \sim \mathscr{D}}\left[\log f_{\theta}(\mathbf{y} | \mathbf{x})\right] What’s a task? A task: Ti≜{pi(x),pi(y∣x),Li}\mathscr{T}_{i} \triangleq\left\{p_{i}(\mathbf{x}), p_{i}(\mathbf{y} | \mathbf{x}), \mathscr{L}_{i}\right\} ...

January 10, 2020 · 2 分钟 · 270 字

A Meta-Transfer Objective for Learning to Disentangle Causal Mechanisms 论文笔记【未完】

A Meta-Transfer Objective for Learning to Disentangle Causal Mechanisms Abstract 本文提出利用元学习目标,最大限度地提高改变分布的迁移速度,以学习如何模块化获取知识。特别是,我们关注如何在与因果关系一致的情况下将联合分布纳入适当的条件。如果这可行,假设分布的变化是局部化的(distributions are localized)(例如由于对其中一个变量的干预而导致其中一个边缘marginal)。我们证明,在这种假定的因果机制的局部变化的情况下,正确的因果图将趋向于仅有几个具有非零梯度的参数,即需要调整的参数(修改变量的参数)。实验观察到这会导致自适应更快,并利用这一性质来定义一个元学习替代评分,它除了连续的图参数化外,还将有利于正确的因果图。最后,我们考虑到AI智能体方面(例如,机器人自主发现其环境),我们考虑了相同的目标如何能够发现因果变量本身,因为观察到的低水平变量没有因果意义。双变量实例中的实验验证了所提出的思想和理论结果。 Introduction 假设数据是独立同分布的(IID)。同样,模型的性能通常使用来自同一个分布的测试样本进行评估,假设他们代表了所学习系统的使用情况。虽然,从统计的角度对这些假设进行了良好的分析,但是在许多实际情况下难以应用。例如:根据一家医院的历史数据进行训练的医疗诊断系统对来自另一家医院的病人可能表现效果不好,原因是分布情况发生了变化。理论情况下,我们希望我们的模型能够很好地泛化,并且能够迅速适应分布外的数据。 然而,为了能够成功转移到新的分布上,人们就需要更多的数据。在本文中,我们不关注数据分布的假设,而关注数据分布如何变化(例如:从训练分布到转移分布时,可能导致某些agents的action)。我们关注的假设是,当知识用适当的模块化的方式来表示的时候,只有一个或者几个模块发生改变,这些变化是稀疏的。当分布变化是由于一个或多个agnet的action所导致时,这一点尤为重要,因为agent在特定的地点和时间进行干预,这体现在因果关系文献中的讨论的干预措施的形式上,即其中一个因果变量被限制在一个特定值活一个随机变量上。一般来说,agent很难一次影响多个潜在的因果变量,虽然本文不是关于agent 学习本身,但这是我们探索的一个性质,以帮助我们发现这些变量以及他们之间的因果关系。在这个时候,因果图就是一个强大的工具,因为他可以告诉我们干预变量分布中的扰动将如何传播到所有其他变量并影响他们的分布。 通常情况,因果关系的结构不会提前知道。因果发现的问题通常需要获得因果图,然而这通常只有在强有力的假设下才能实现。一种假设是,已经学会捕捉真正的基础数据生成过程的正确结构的learner应该能够泛化到某种特定方式对结构进行扰动的情况。这可以通过考虑温度和海拔高度的例子来说明:简单来说就是,一个learner通过学习来自于瑞士的数据,对于来自于像荷兰这种山地较少国家的分布数据进行测试的时候,结果仍然有效。因此,建议使用预测模型的分布外的鲁棒性来指导对实际因果结构的推断。 那么如何利用局部变化的假设呢?正如我们在理论上进行解释并在此处进行实验验证时,如果我们拥有正确的知识的表示,那么从在训练分布上预训练过的模型开始,应该能够很快地适应迁移的数据分布。之所以出现这种情况,是因为我们假设置信数据生成过程是作为独立机制的一部分而获得的,并且从训练分布转到迁移分布时,几乎不需要改变置信机制和参数。因此,获取对应的知识分解的模型仅需要进行一些更新和示例,就可以适应迁移分布。如下所示,在不变的参数上的预期梯度将接近0(如果模型已经在训练分布上很好的训练了),因此在适应迁移分布的过程中,有效搜索空间将大大减少,这可以加快适应的过程,正如实验所体现的那样。因此,基于正确的知识表示空间的微小变化的假设,我们可以定义一个衡量适应(adaptation)速度的元学习目标,即一种表示后悔(regret)的形式,用于优化知识的表示,分解和结构化的方式 回到前面温度和海拔高度的例子:如果收到了来自于荷兰的分布外的数据,由于收集了少量来自于荷兰的迁移样本,因此我们期望该模型能够更快的适应。类似于鲁棒性,可以使用自适应速度来知道对于当前问题的真正的因果结构的推断,并可能与因果结构有关的其他信号源一起推断。 主要的贡献:我们首先在合成数据上验证,当在真实的二变量因果图(learner不知道)上执行某些干预后,当提供样本数据时,能够正确捕捉到潜在因果结构的模型的适应速度更快。这表明了适应速度可以作为分数充分地评估learner对于基础因果图的拟合程度。然后,我们使用因果图的平滑参数化来以端到端的方式直接优化此分数。最后,我们表明,在未知混合变量的情况下,可以利用分数来区分正确的因果变量。 Which is Cause and Which is Effect? To be continued

January 9, 2020 · 1 分钟 · 31 字