2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > ELLA:An Efficient Lifelong Learning Algorithm不完全记录

ELLA:An Efficient Lifelong Learning Algorithm不完全记录

时间:2022-05-06 03:25:52

相关推荐

ELLA:An Efficient Lifelong Learning Algorithm不完全记录

摘要

学习多个连续任务的问题,即终身学习。本文开发了一种在终身学习环境下的在线多任务学习方法。所提出的高效终身学习算法(ELLA)为所有任务模型保持了一个稀疏共享的基础,将知识从基础转移到学习每个新任务,并随着时间的推移改进基础,以最大限度地提高所有任务的性能。我们表明,ELLA与稀疏编码的在线字典学习和最先进的批处理多任务学习方法都有很强的联系,并提供了鲁棒的理论性能保证。我们的经验表明,ELLA在批处理多任务学习中产生了几乎相同的性能,而顺序学习任务的时间要少三个数量级(超过1000倍)。

简要介绍

多用途学习系统必须能够在一系列预测任务中有效且不断地获取知识。在这样的终身学习环境中,代理会按顺序接收任务。在任何时候,代理可能会被要求解决来自任何先前任务的问题,因此必须在每个步骤的所有学习任务中最大化其性能。当这些任务的解决方案通过某种底层结构相关起来时,代理可以在任务之间共享知识以提高学习性能,正如在迁移和多任务学习中所探索的那样。

(我的理解:代理==当前的算法,任务从之前t-3…t…t+3按先后顺序到达,对于当前到达的任务,前提假设任务之间存在一定的关系,所以可以学习到共同的底层结构,这里是知识仓L(共享基),根据以往的知识更新的L并存储新信息,然后接着下一个任务到来,重复。)

迁移学习和终身学习的区别

迁移学习侧重于通过利用以前学习到的源任务的解决方案来有效地建模一个新的目标任务,而不考虑对源任务模型的潜在改进。相比之下,多任务学习(MTL)侧重于通过共享知识来最大化所有任务的性能,并以潜在的高计算成本实现实现。终身学习包括这两种范式的元素,专注于通过在之前的知识基础上有效地学习每个连续任务,同时优化所有任务的性能。特别是,终身学习包含了反向转移的概念,即学习后续的任务可以提高以前学习到的任务模型的性能。终身学习也可以被认为是在线MTL。

在本文中,我们开发了一个有效的终身学习算法(ELLA),它结合了转移和多任务学习的两个方面。

(是GO-MTL的改进算法)

转移

多任务学习

优点

我们的结果表明,ELLA实现了与批MTL几乎相同的性能,在学习时间上提高了三个数量级(超过1000倍)。我们还将ELLA与当前的在线MTL方法进行了比较(Saha等人,),发现ELLA具有更低的计算成本和更高的性能。

先前方法

这些方法假设每个模型都表示为参数向量,是这些基的线性组合。通过使用一个共同的基础,这些方法在学习任务之间共享信息,并在模型与基础一起学习时,考虑任务关联

ELLA

GO-MTL算法(Kumar&Daum´eIII,)也使用了一个稀疏共享的多任务学习基础,其优点是自动学习(潜在的)重叠的任务组,以最大限度地提高知识转移。我们使用这个丰富的底层任务结构模型作为开发ELLA的起点。

介绍

1.终身学习

终身学习代理(图1)面临一系列监督学习任务Z(1),Z(2),...,Z(Tmax){Z^{(1)}, Z^{(2)},...,Z^{(T_{max})}}Z(1),Z(2),...,Z(Tmax​),每个任务都有Z(t)=(f^(t),X(t),y(t))\mathcal{Z}^{(t)}=\left(\hat{f}^{(t)}, \mathbf{X}^{(t)}, \mathbf{y}^{(t)}\right)Z(t)=(f^​(t),X(t),y(t)) 由映射f^(t):X(t)↦Y(t)\hat{f}^{(t)}: \mathcal{X}^{(t)} \mapsto \mathcal{Y}^{(t)}f^​(t):X(t)↦Y(t),从实例空间X(t)\mathcal{X}^{(t)}X(t)定义一组标签Y(t)(用来分类、回归任务)。

每个任务都有ntn_tnt​个训练实例(样本数),有X(t)∈Rd×nt\mathbf{X}^{(t)} \in \mathbb{R}^{d \times n_{t}}X(t)∈Rd×nt​,对应的标签有y(t)∈Y(t)nt\mathbf{y}^{(t)} \in \mathcal{Y}^{(t)^{n_t} }y(t)∈Y(t)nt​ (一维),通过映射函数f^(t)\hat{f}^{(t)}f^​(t)给定。我们假设学习者事先不知道任务的总数Tmax、这些任务的分布或它们的顺序。

Each time step, the agent receives a batch of labeled training data for some task t, either a new task or a previously learned task.设T表示迄今为止遇到的任务的数量。在收到每一批数据后,可能会被要求代理对任何先前任务的实例做出预测。

它的目标是构建任务模型f(1),f(2),...,f(T)f^{(1)}, f^{(2)},...,f^{(T)}f(1),f(2),...,f(T),每一个模型都是特征到预测标签结果的映射f(t):Rd↦Y(t)f^{(t)}: \mathbb{R}^{d} \mapsto \mathcal{Y}^{(t)}f(t):Rd↦Y(t)。比如:(1)每个f(t)f^{(t)}f(t)将近似f^(t)\hat f^{(t)}f^​(t)(最优映射),以能够准确预测新实例的标签(2)当代理遇到已知任务的额外训练数据时,f(t)f^{(t)}f(t)可以快速更新 (3)当代理遇到新的任务时,可以有效地添加新的f(t)。

假定总任务数TmaxT_{max}Tmax​,样本总数∑t=1Tmax⁡nt\sum_{t=1}^{T_{\max }} n_{t}∑t=1Tmax​​nt​可能会很大,因此,终身学习算法必须具有计算复杂度,以更新适合这两个量的模型。

方法

ELLA采用了一种参数化的方法来进行终身学习,预测函数为f(t)(x)=f(x;θ(t))f^{(t)}(\mathbf{x})=f\left(\mathbf{x} ; \boldsymbol{\theta}^{(t)}\right)f(t)(x)=f(x;θ(t)),对于每个任务,t由特定于任务的参数向量θ(t)∈Rd控制(这里的θ相当于GO-MTL中的W矩阵,样本到标签的映射作用)。

为了建模任务之间的关系,我们假设参数向量可以使用知识存储库中共享的潜在模型组件(L)的线性组合(s)来表示。许多最近的MTL方法都使用了同样的技术,即使用共享基础作为在学习问题之间转移知识的手段(见第2节)。

ELLA维护一个任务之间共享的k个潜在模型组件L∈Rd×k\mathbf{L} \in \mathbb{R}^{d \times k}L∈Rd×k。(d是样本特征数,k是降维后的潜在特征数)。每个任务参数向量θ(t)可以根据权重向量s(t)∈Rk\mathbf{s^{(t)}} \in \mathbb{R}^{k}s(t)∈Rk (即θ(t)=Ls(t)θ^{(t)}=Ls^{(t)}θ(t)=Ls(t)),每个任务参数向量θ(t)被表示为L的列的线性组合。

(在任务t中,样本xi为d×1,希望通过一个参数向量 θ对它进行映射,得到分类或者回归的结果。而在多个任务中,因为基于假设,设置了共享的基L,和对应于不同任务的不同线性组合s(t),两者共同表示θ,这里的θ是所有任务的不同组合。)

给定每个任务的标记训练数据,我们优化模型,以最小化所有任务的预测损失,同时鼓励模型共享结构。这个问题是通过目标函数来实现的:

eT(L)=1T∑t=1Tmin⁡s(t){1nt∑i=1ntL(f(xi(t);Ls(t)),yi(t))e_{T}(\mathbf{L})=\frac{1}{T} \sum_{t=1}^{T} \min _{\mathbf{s}^{(t)}}\left\{\frac{1}{n_{t}} \sum_{i=1}^{n_{t}} \mathcal{L}\left(f\left(\mathbf{x}_{i}^{(t)} ; \mathbf{L} \mathbf{s}^{(t)}\right), y_{i}^{(t)}\right)\right.eT​(L)=T1​∑t=1T​mins(t)​{nt​1​∑i=1nt​​L(f(xi(t)​;Ls(t)),yi(t)​)

+μ∥s(t)∥1}+λ∥L∥F2\left.\quad+\mu\left\|\mathbf{s}^{(t)}\right\|_{1}\right\}+\lambda\|\mathbf{L}\|_{\mathrm{F}}^{2}+μ∥∥​s(t)∥∥​1​}+λ∥L∥F2​

方程1

依旧是求实际值和预期标签的loss function, 1nt\frac{1}{n_{t}}nt​1​是平均了所有任务中样本不均衡的情况。 1T\frac{1}{T}T1​对跨任务训练数据的模型损失进行平均,这点比较有意思。对所有的任务误差都进行了平均,(这样怎么保证再更新L之后,原先的一些任务的误差不会增大很多呢?)。作者还提到这样子做可以获得收敛保证。

由于方程1在L和s(t)中不是共同凸的,我们的目标将是开发一个程序来得到目标函数的局部最优。计算这类目标函数的局部最优的一种常见方法是交替执行两个凸优化步骤(GO-MTL中的算法)

1.为什么GO-MTL效率低下

(1)第一个低效率是由于方程1显式地依赖于所有之前的训练数据(通过内部总和)。

改进:我们通过使用的二阶泰勒展开式来近似方程1来消除这种低效率

设θ(t)\theta^{(t)}θ(t)是一个是一个只对任务t的训练数据学习的最优预测器,有θ(t)=arg⁡min⁡θ1nt∑i=1ntL(f(xi(t);θ,yi(t))){\theta}^{(t)}=\arg \min _{\theta} \frac{1}{n_{t}} \sum_{i=1}^{n_{t}} \mathcal{L}\left(f\left(\mathbf{x}_{i}^{(t)} ; {\theta}, y_{i}^{(t)}\right)\right)θ(t)=argminθ​nt​1​∑i=1nt​​L(f(xi(t)​;θ,yi(t)​))

泰勒展开围绕θ=θ(t)\theta=\theta^{(t)}θ=θ(t),对任务t,有

x=θx=\thetax=θ,

x0=θ(t)x_0=\theta^{(t)}x0​=θ(t),

f(x)=1nt∑i=1ntL(f(xi(t);θ,yi(t)))f(x)= \frac{1}{n_{t}} \sum_{i=1}^{n_{t}} \mathcal{L}\left(f\left(\mathbf{x}_{i}^{(t)} ; {\theta}, y_{i}^{(t)}\right)\right)f(x)=nt​1​∑i=1nt​​L(f(xi(t)​;θ,yi(t)​))

泰勒展开式:

f(x)=f(x0)0!+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+…+f(n)(x0)n!(x−x0)n+Rn(x)f(x)=\frac{f\left(x_{0}\right)}{0 !}+\frac{f^{\prime}\left(x_{0}\right)}{1 !}\left(x-x_{0}\right)+\frac{f^{\prime \prime}\left(x_{0}\right)}{2 !}\left(x-x_{0}\right)^{2}+\ldots+\frac{f^{(n)}\left(x_{0}\right)}{n !}\left(x-x_{0}\right)^{n}+R_{n}(x)f(x)=0!f(x0​)​+1!f′(x0​)​(x−x0​)+2!f′′(x0​)​(x−x0​)2+…+n!f(n)(x0​)​(x−x0​)n+Rn​(x)

进行代入

f(x)=1nt∑i=1ntL(f(xi(t);θ(t),yi(t)))+1nt(θ−θ(t))∇θ∑i=1niL(f(xi(t);θ),yi(t))∣θ=θ(t)+1nt(θ−θ(t))212∇θ,θ2∑i=1niτ(f(xi(t);θ),yi(t))∣θ=θ(t)+R(x)f(x)=\frac{1}{n_{t}} \sum_{i=1}^{n_{t}} \mathcal{L}\left(f\left(\mathbf{x}_{i}^{(t)} ; {\theta^{(t)}}, y_{i}^{(t)}\right)\right)+\frac{1}{n_{t}}(\theta-\theta^{(t)})\left.\nabla_{\theta} \sum_{i=1}^{n_{i}} \mathcal{L}\left(f\left(x_{i}^{(t)} ; \theta\right), y_{i}^{(t)}\right)\right|_{\theta=\theta^{(t)}}+\frac{1}{n_{t}}(\theta-\theta^{(t)})^2\left.\frac{1}{2} \nabla_{\theta, \theta}^{2} \sum_{i=1}^{n_{i}} \tau\left(f\left(x_{i}^{(t)} ; \theta\right), y_{i}^{(t)}\right)\right|_{\theta=\theta^{(t)}}+R(x)f(x)=nt​1​∑i=1nt​​L(f(xi(t)​;θ(t),yi(t)​))+nt​1​(θ−θ(t))∇θ​∑i=1ni​​L(f(xi(t)​;θ),yi(t)​)∣∣∣​θ=θ(t)​+nt​1​(θ−θ(t))221​∇θ,θ2​∑i=1ni​​τ(f(xi(t)​;θ),yi(t)​)∣∣∣​θ=θ(t)​+R(x)

常数项抑制:因为它不影响最小值

线性项抑制:因为通过构造,θ(t)是一个最小值

只保留了二次项(θ=Ls(t)\theta=Ls^{(t)}θ=Ls(t))

已经消除了优化对数据实例数量n1,n2…nT的依赖。

(2)方程1的第二个低效率是,为了评估单个候选L,必须解决一个优化问题来重新计算每个s(t)的值(随着学习任务数量的增加,这个值将变得越来越昂贵)。

为了克服这个问题,我们修改了公式2中的公式,以去除s(t)上的最小化。

对于一个task t的数据,只更新S(t),其它task t’的S(t’)不更新;

乍一看,这似乎会阻止以前学习过的任务从以后任务的训练中获益的能力(我们称之为反向转移);然而,这些任务可以受益于对L的后续修改。在3.6节的后面,我们表明,只有当我们遇到各自任务的训练数据时,更新s(t)的选择才不会随着任务数量的增加,而显著影响数据的模型拟合质量。使用先前计算的s(t)值可以产生以下优化过程:

(其中我们使用符号Lm来引用第m次迭代开始时的潜在组件的值,并假设t对应于我们刚刚收到训练数据的特定任务):

(将任务t的s(t)单列出来表示)

ELLE算法更新规则

在任务t到来时,需要计算L和s(t)来更新模型,

计算s(t)时候,只使用任务t 的数据来计算一个最优模型θ(t)(之前提到过)这一步的细节将取决于模型的形式和损失函数(后面章节讲到线性回归、逻辑回归两种不同的方式构造损失函数,对θ(t)会有不同的计算)

当θ(t)计算出后,由于D(t)依赖于θ(t),所以可以计算D(t),并且重新初始化L中全为0的列(我的理解:因为现在加入了任务t,在原先的任务中,L的全0列没有起到基的作用。现在增加新任务,可能会用到部分未使用的基)。然后用当前的基Lm来计算s(t),涉及到一个L1范数的问题(Lasso)

更新L。清空公式5的梯度

(写了一些大概的推导,不知道对不对,感觉有些转置对不上。欢迎指导纠正)

为了避免在每一步都必须将计算A和b的所有任务相加,我们在新任务到达时逐步构造A(详情请参见算法1)。

算法图1

初始化全0

判断:

如果新任务到来,更新X,y

如果旧任务,则A、b减去该任务的参数(防止重复累加两次该任务),在原先任务t的X和y中加入新样本

更新:

用单任务学习方式,通过X(t),y(t)更新θ(t),D(t)

初始化L为全0的列

依据公式3,s(t)计算

更新A,b

计算L

时间复杂度分析

1.每次更新首先要运行一个单任务学习器来计算θ(t)和D(t);我们假设此步骤的复杂度为O(ξ(d,nt))。

2.接下来,要更新s(t),需要求解Lasso实例,该实例的复杂度为O(ndmin(n,d)),其中d是维数,n是数据实例的数量。方程3可以看作是具有d个数据实例的k维中Lasso的一个实例,其总复杂度为O(dk2)。然而,要表示Lasso问题,需要计算D(t)的特征分解,它取O(d3),并将D(t)的矩阵平方根乘以L,这取O(kd^2)。因此,更新s(t)需要时间O(d3+kd2+dk2)。

3.更新L的一个简单的算法涉及到反转一个(d×k)-by-(d×k)矩阵,该矩阵的复杂度为O(d3k3)。然而,我们可以利用A的更新是低秩的这一事实,得到一种基于递归方法(Yu,1991)的复杂度O(d3k2)算法,以更新A的特征分解(见在线附录)。

4.因此,使用这种更先进的方法,每个ELLA更新的总体复杂度是O(k2d3+ξ(d,nt))。

参考

#Paper Reading# ELLA: An Efficient Lifelong Learning Algorithm

(小白本人,写博客为了记录看过的文章,翻译+理解,刚入门,理解不到位多包涵。欢迎友好指正讨论~)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。