1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 《神经网络与深度学习》-模型独立的学习方式

《神经网络与深度学习》-模型独立的学习方式

时间:2024-05-28 05:44:13

相关推荐

《神经网络与深度学习》-模型独立的学习方式

模型独立的学习方式

1. 集成学习1.1 AdaBoost算法 2. 自训练和协同训练2.1 自训练2.2 协同训练 3. 多任务学习4. 迁移学习4.1 归纳迁移学习4.2 转导迁移学习 5. 终身学习6. 元学习6.1 基于优化器的元学习6.2 模型无关的元学习

本文介绍集成学习、协同学习、自训练、多任务学习、迁移学习、终身学习、小样本学习、元学习等学习方式。这些学习方式不限于具体的模型,不管是前馈神经网络、RNN或其他模型。然而一种学习方式,往往会对具有一定特性的模型效果更佳,如集成学习对方差较大的模型组合时效果显著。

1. 集成学习

给定学习任务,假设输入 x \pmb{x} xxx 和 y \pmb{y} y​y​​y 的真实关系是 y = h ( x ) \pmb{y} = h(\pmb{x}) y​y​​y=h(xxx)。对于M个不同模型 f 1 ( x ) , ⋯ , f M ( x ) f_1(\pmb{x}) , \cdots ,f_M(\pmb{x}) f1​(xxx),⋯,fM​(xxx) ,每个模型的期望错误为:

其中 ϵ m ( x ) \epsilon_m(\pmb{x}) ϵm​(xxx) 为模型m在样本x上的错误。

所有模型的平均错误:

集成学习(Ensemble Learning)是通过某种策略将多个模型集成在一起,通过群体决策来提高决策准确率。常见的集成策略有直接平均加权平均

直接平均即“投票”,基于投票的集成模型为:

F ( x ) F(\pmb{x}) F(xxx)的期望错误 R ( F ) R(F) R(F)在 1 M R ‾ ( f ) \frac{1}{M}\overline{R}(f) M1​R(f)和 R ‾ ( f ) \overline{R}(f) R(f)之间,证明如下:

其中 E x [ ϵ m ( x ) ϵ n ( x ) ] E_x[\epsilon_m(\pmb{x})\epsilon_n(\pmb{x})] Ex​[ϵm​(xxx)ϵn​(xxx)] 为两个不相同模型错误的相关性,如果每个模型的错误不相关,即 ∀ m ≠ n , E x [ ϵ m ( x ) ϵ n ( x ) ] = 0 \forall m\neq n, E_x[\epsilon_m(\pmb{x})\epsilon_n(\pmb{x})]=0 ∀m​=n,Ex​[ϵm​(xxx)ϵn​(xxx)]=0.如果每个模型的错误都是相同的,则 ∀ m ≠ n , ϵ m ( x ) = ϵ n ( x ) \forall m\neq n, \epsilon_m(\pmb{x})=\epsilon_n(\pmb{x}) ∀m​=n,ϵm​(xxx)=ϵn​(xxx).并且 ∀ m , ϵ m ( x ) ≥ 0 \forall m ,\epsilon_m(\pmb{x}) \geq 0 ∀m,ϵm​(xxx)≥0可以得到:

为了得到更好的集成效果,要求每个模型之间具备一定的差异性,并且随着模型数量的增多,其错误率也会下降,并趋近于0.

集成学习思想类似“三个臭皮匠赛过诸葛亮”,一个有效的集成需要各个基模型的差异尽量大,为增加模型间的差异性可采用BaggingBoosting两类方法。

Bagging类方法Bagging类方法随机构造训练样本、随机选择特征,进而提高每个基模型的独立性,代表性方法有Bagging、随机森林。

Bagging(Bootstrap Aggregating)通过不同模型的训练数据集的独立性来提高不同模型间的独立性。在原始训练集上进行有放回的随机采样,得到M个比较小的训练集并训练M个模型,然后通过投票的方法进行模型集成。

随机森林(Random Forest)在Bagging的基础上,引入了随机特征,进一步提高每个基模型间的独立性,在随机森林中,每个基模型都是一颗决策树。

Boosting 类方法Boosting 类方法按照一定的顺序先后训练不同的基模型,每个基模型都针对前序模型的错误进行专门训练,根据前序模型的结果,来调整训练样本的权重,从而增加不同模型之间的差异性。只要基模型的准确率比随机猜测高,就可以用Boosting类方法来显著提高集成模型的准确率,Boosting类方法的代表性方法有AdaBoost

1.1 AdaBoost算法

Boosting类集成模型的目标是学习一个加性模型(Additive Model):

其中 f m ( x ) f_m(\pmb{x}) fm​(xxx) 为弱分类器,或基分类器, α m \alpha_m αm​为弱分类器的集成权重, F ( x ) F(x) F(x) 为强分类器

Boosting类方法的关键是如何训练每个弱分类器权重。应该尽量使得每个分类器之间的差异变大,一有效的算法是采用迭代的方法学习每个弱分类器,即按照一定顺序训练弱分类器。假设已经有m个弱分类器,训练第m+1个弱分类器时,增加已有弱分类器分错样本的权重,使得第m+1个分类器更关注已有分类器分错的样本。称为AdaBoost(Adaptive Boosting)算法.

AdaBoost算法是一种迭代式的训练算法,通过改变数据分布来提高弱分类器的差异,每一轮训练中,增加分错样本的权重,减少对样本的权重,从而得到一个新的数据分布。

以二分类为例,弱分类器 f m ( x ) ∈ { + 1 , − 1 } f_m(x)\in\{+1, -1\} fm​(x)∈{+1,−1},AdaBoost的训练过程如下,最初赋予每个样本相同权重,每一轮迭代中,根据当前样本的样本权重重新训练一个新的弱分类器,然后根据这个弱分类器的错误率来计算其集成权重,并调整权重。

AdaBoost算法的统计学解释AdaBoost算法可看做是一种分步的加性模型,其损失函数定义为:

其中 y , f m ( x ) ∈ { + 1 , − 1 } y, f_m(\pmb{x})\in\{+1,-1\} y,fm​(xxx)∈{+1,−1}

假设经过 m-1 次迭代,得到:

则第m次迭代的目标就是找一个 α m \alpha_m αm​ 和 f m ( x ) f_m(\pmb{x}) fm​(xxx)使得下面的损失函数最小:

令 w m ( n ) = e x p ( − y ( n ) F m − 1 ( x ( n ) ) ) w_m^{(n)}=exp(-y^{(n)}F_{m-1}(x^{(n)})) wm(n)​=exp(−y(n)Fm−1​(x(n))) ,则损失函数改写为:

因 y , f m ( x ) ∈ { + 1 , − 1 } , I ( x ) y, f_m(\pmb{x})\in\{+1,-1\} ,I(x) y,fm​(xxx)∈{+1,−1},I(x)为指示函数,则:

将损失函数在 − α m y ( n ) f m ( x ( n ) ) = 0 -\alpha_my^{(n)}f_m(\pmb{x}^{(n)})=0 −αm​y(n)fm​(xxx(n))=0处进行二阶泰勒展开:

求解出 f m ( x ) f_m(\pmb{x}) fm​(xxx)后,损失函数改写为:

其中 ϵ m \epsilon_m ϵm​为分类器 f m ( x ) f_m(\pmb{x}) fm​(xxx)的加权错误率:

求上式关于 α m \alpha_m αm​的导数并令其为0:

2. 自训练和协同训练

标注数据成本比较高,利用大量无标注数据提高监督学习的效果十分重要,利用少量标注数据大量无标注数据进行学习的方式称为半监督学习(Semi-Supervised Learning,SSL)

2.1 自训练

自训练(Self-Training,或Self-Teaching),也叫自举法(Bootstrapping)。它首先使用标注数据来训练一个模型,并使用这个模型预测无标注数据的标签,把预测置信度比较高的样本及预测标签加入训练集,重新训练新模型,并不断重复:

自训练和密度估计中EM算法相似,通过不断迭代来提高模型能力。但自训练的缺点是无法保证每次加入训练集的样本的伪标签是正确的。如果加入训练集的样本的伪标签是错误的,则会损害模型的能力。因此,自训练的最关键步骤是如何设置挑选样本的标准

2.2 协同训练

协同训练(Co-Training)对自训练进行了改进,通过两个基于不同视角的分类器来相互促进,很多数据都有相对独立的不同视角,比如互联网上的每个网页都由两种视角组成:文字和指向其他网页的连接。如果要确定一个网页的类别,既可以根据文字内容判断,也可以根据网页之间的链接关系来判断。

假设一个样本 x = [ x 1 , x 1 ] \pmb{x}=[\pmb{x}_1,\pmb{x}_1] xxx=[xxx1​,xxx1​] ,其中 x 1 \pmb{x}_1 xxx1​和 x 2 \pmb{x}_2 xxx2​分别表示两种不同视角 V 1 \pmb{V}_1 VVV1​、 V 2 \pmb{V}_2 VVV2​的特征,并满足下面两个假设:

条件独立性:给定样本标签y时,两种特征条件独立 p ( x 1 , x 2 ∣ y ) = p ( x 1 ∣ y ) p ( x 2 ∣ y ) p(x_1, x_2|y)=p(x_1|y)p(x_2|y) p(x1​,x2​∣y)=p(x1​∣y)p(x2​∣y);充足性和冗余性:当数据充分时,每种视角的特征都足以单独训练出一个正确的分类器。

令 y = g ( x ) y=g(\pmb{x}) y=g(xxx)为需要学习的真实映射函数, f 1 f_1 f1​和 f 2 f_2 f2​分别为两个视角的分类器,有:

其中,X为样本的x的取值空间。

由于不同视角的条件独立性,在不同视角上训练出的模型相当于从不同视角理解问题,具有一定互补性。协同训练就是利用这种互补性来进行训练的一方法。首先在训练集上根据不同视角分别训练两个模型 f 1 f_1 f1​和 f 2 f_2 f2​,然后用 f 1 f_1 f1​和 f 2 f_2 f2​在无标注数据集上进行预测,各选取预测置信度比较高的样本加入训练集,重新训练两个不同视角的模型,并不断重复这个过程。

如果两种视角完全一样,则协同训练退化成自训练算法:

3. 多任务学习

一般的机器学习模型都是单任务的,不同任务的模型在各自的训练集上单独学习到。若两个任务比较相关,则他们之间会存在一定的共享知识,这些知识对两个任务都会有帮助,这些知识可以是表示(特征)、模型参数、学习算法。目前,主流的多任务学习方法主要关注与表示层面的共享。

多任务学习(Multi-task Learning)是指同时学习多个相关任务,让这些任务在学习过程中共享知识,利用多任务之间的相关性来改进模型在每个任务上的性能和泛化能力。多任务学习可以看做是一种归纳迁移学习(Inductive Transfer Learning),即通过利用包含在相关任务中的信息作为归纳偏置(Inductive Bias)来提高泛化能力。

共享机制多任务学习的主要挑战在于如何设计多任务之间的共享机制,在神经网络模型中引入共享信息相对于机器学习模型容易。4种常见的共享模型如图,其中表示A、B、C三个不同的任务,橙色框表示共享模块,蓝色框表示任务特定模块。

硬共享模式:让不同任务的神经网络模型共同使用一些共享模块(一般是最底层)来提取通用特征,然后针对每个不同的任务设置一些私有模块(一般是高层)来提取任务特定的特征。软共享模式:不显示地设置共享模块,但每个任务都可以从其他任务中“窃取”一些信息来提高自己的能力,如直接复制使用其他任务的隐状态,或使用注意力机制来选取有用的信息。层次共享模式:一般地,低层抽取低级的局部特征,高层抽取高级的抽象语义特征,因此如果多任务学习中,任务有级别高低之分,那么一个合理的共享模式是让低级任务在底层输出,高级任务在高层输出。共享-私有模式:更加分工明确的方式是将共享模块和任务特定模块(私有)的责任分开,共享模块捕捉一些跨任务的共享特征,而私有模块只捕捉和特定任务相关的特征,最终的表示由共享特征私有特征共同构成。

学习步骤在多任务学习中,每个任务都可以由自己单独的训练集,为了让所有任务同时学习,常使用交替训练的方式来“近似”地实现同时学习。

假设有M个相关任务,第m个任务的训练集为 D m D_m Dm​,包含 N m N_m Nm​个样本,其中 x ( m , n ) \pmb{x}^{(m,n)} xxx(m,n)和 y ( m , n ) y^{(m,n)} y(m,n)表示第m个任务中的第n个样本以及它的标签:

假设这M个任务对应的模型分别为 f m ( x ; θ ) , 1 ≤ m ≤ M f_m(\pmb{x};\theta), 1 \leq m \leq M fm​(xxx;θ),1≤m≤M,多任务学习的联合目标函数为所有任务损失函数的线性加权:

其中 L m ( ⋅ ) L_m(\cdot) Lm​(⋅) 为第 m 个任务的损失函数, η \eta η是第m个任务的权重, θ \theta θ表示包含了共享模块和私有模块在内的所有参数,权重可以根据不同任务的重要程度来赋值,也可以根据任务的难易程度来赋值,一般所有任务设置相同的权重,即 η m = 1 , 1 ≤ m ≤ M \eta_m=1,1\leq m\leq M ηm​=1,1≤m≤M

多任务学习流程分为两个阶段:

联合训练阶段:每次迭代时,随机挑选一个任务,然后从这个任务中随机挑选一些训练样本,计算梯度并更新参数单任务精调阶段:基于多任务学习到的参数,分别在每个单独任务上进行精调,这个阶段为可选阶段,当多个任务差异性比较大时,在每个任务上继续优化参数可进一步提升模型能力。

多任务学习联合训练阶段的具体过程如下:

多任务学习通常可以获得比单任务学习更好的泛化能力,因为:

多任务学习的训练集更大,多任务之间有一定的相关性,因此多任务学习相当于一种隐式的数据增强,可以提高模型泛化能力多任务学习中的共享模块需要兼顾所有任务,这较好地避免了模型过拟合到单个任务上的训练集,可看做一种正则化一个好的表示通常需要适用于多个不同任务,多任务学习的机制使得它会比单任务学习获得更好的表示多任务学习中,每个任务都可以“选择性”地利用其它任务中学习到的隐含特征,从而提高自身泛化能力

4. 迁移学习

标准机器学习的前提假设是训练集和测试集的分布一致。在实际中,标注数据成本高,有时无法为一个目标任务准备足够多相同分布的训练数据,因此,如果有一个相关任务已经有了大量训练数据,虽然这些训练数据的分布和目标任务不同,但训练集大,可以假设从中学习到某些可以泛化的知识,那么这些知识对目标任务会有一定帮助。可利用迁移学习(Transfer Learning)将相关任务的训练数据中的可泛化知识迁移到目标任务上。

假设一个任务的样本空间为 X × y X \times y X×y,其中 X X X为输入空间, Y Y Y为输出空间,其概率密度函数为 p ( x , y ) p(x,y) p(x,y)。简单起见,设X为D维实数空间的一个子集,Y为一个离散的集合。

一个样本空间及其分布可以称为一个领域(Domain): D = ( X , Y , p ( x , y ) ) D=(X,Y,p(x,y)) D=(X,Y,p(x,y))。给定两个领域,如果它们的输入空间、输出空间、概率分布中至少一个不同,那么这两个领域就被认为是不同的,从统计上看,一个机器学习任务定义为:一个领域D上的条件概率 p ( y ∣ x ) p(y|x) p(y∣x)的建模问题。

迁移学习是指两个不同领域的知识迁移过程,利用源领域D S D_S DS​中学到的知识来帮助目标领域D T D_T DT​上的学习任务,源领域的训练样本数量一般远大于目标领域。

迁移学习根据不同的迁移方式分为:

归纳迁移学习:对应机器学习范式:归纳学习。一般的机器学习都是指归纳学习,即希望再训练集上学习到使得期望风险最小的模型转导迁移学习:对应机器学习范式:转导学习。其目标是指学习一种在给定测试集上错误率最小的模型,在训练阶段可以利用测试集的信息。

归纳迁移学习是指在源领域和任务上学习一般的规律,然后将这个规律迁移到目标领域和任务上;转导迁移学习是一种从样本到样本的迁移,直接利用源领域和目标领域的样本进行迁移学习。

4.1 归纳迁移学习

归纳迁移学习中,源领域和目标领域有相同的输入空间 X S = X T X_S = X_T XS​=XT​,输出空间可相同或不同,源任务和目标任务一般不相同 τ S ≠ τ T \tau_S \neq \tau_T τS​​=τT​,即 p S ( y ∣ x ) ≠ p T ( y ∣ x ) p_S(y|\pmb{x}) \neq p_T(y|\pmb{x}) pS​(y∣xxx)​=pT​(y∣xxx),一般而言,归纳迁移学习要求源领域和目标领域是相关的,并且源领域 D S D_S DS​ 有大量的训练样本,这些样本可以是有标注的,也可以是无标注的。

1.源领域只有大量无标注数据时,原任务可以转换为无监督学习,比如自编码密度估计任务。通过无监督任务学习一种可迁移的表示,然后将这种表示迁移到目标任务上。这种学习方式类似自学习半监督学习。在NLP领域,早期的预训练词向量(word2vec、Glove)到句子级表示(ELMO、OpenAI GPT)以及BERT等,都对NLP有很大的促进作用。

2.源领域有大量标注数据时,可直接将源领域上训练的模型迁移到目标领域上,比如在CV领域上有大规模的图像分类数据集ImageNet,在其上的预训练模型:AlexNet、VGG、ResNet等,都可以将它们迁移到目标任务上。

在归纳迁移学习中,源领域训练数据规模大,预训练模型泛化性强,学习的表示通常适用于目标任务,归纳迁移学习有两种迁移方式:

基于特征的方式:将预训练模型的输出或中间隐藏层的输出作为特征直接加入到目标任务的学习模型中,目标任务的学习模型可以是一般的浅层分类器(SVM)或一个新的神经网络。精调的方式:在目标任务上复用预训练模型的部分组件,并对其参数进行精调(fine-tuning)

假设预训练模型是一个深度神经网络,这个预训练网络中每一层的可迁移性也不相同。一般的,网络的底层学习一些通用的底层特征,网络的中高层学习抽象的高级语义特征,最后几层学习和特定任务相关的特征。

将预训练模型迁移到目标任务上常会比从零开始学习的方式好,因为:

初始模型的性能一般比随机初始化的模型好训练时模型的学习速度比从零开始学习要快,收敛性好模型的最终性能更好,泛化性强

归纳迁移学习和多任务学习也比较类似,有下面两点区别:

多任务学习是同时学习多个不同的任务,而归纳迁移学习常分为两个阶段:源任务上的学习阶段、目标任务上的迁移学习阶段归纳迁移学习是单向的知识迁移,希望提高模型在目标任务上的性能,而多任务学习是希望提高所有任务的性能。

4.2 转导迁移学习

转导迁移学习是一种从样本到样本的迁移,直接利用源领域和目标领域的样本进行迁移学习。转导迁移学习可看做是一种特殊的转导学习。转导迁移学习常假设源领域有大量的标注数据,而目标领域没有(或少量)标注数据,但有大量无标注数据。目标领域的数据在训练时可见。

转导迁移学习的一个常见子问题就是领域适应。在领域适应问题中,常假设源领域和目标领域有相同的样本空间,但数据分布不同: p S ( x , y ) ≠ p T ( x , y ) p_S(\pmb{x},y) \neq p_T(\pmb{x},y) pS​(xxx,y)​=pT​(xxx,y)

根据贝叶斯公式, p ( x , y ) = p ( x ∣ y ) p ( y ) = p ( y ∣ x ) p ( x ) p(\pmb{x},y) = p(\pmb{x}|y)p(y)= p(y|\pmb{x})p(\pmb{x}) p(xxx,y)=p(xxx∣y)p(y)=p(y∣xxx)p(xxx),故数据分布不一致常由三种情况造成:

协变量偏移(Covariate Shift):源领域和目标领域的输入边际分布不同 p S ( x ) ≠ p T ( x ) p_S(\pmb{x}) \neq p_T(\pmb{x}) pS​(xxx)​=pT​(xxx),但后验分布相同 p S ( y ∣ x ) ≠ p T ( y ∣ x ) p_S(y|\pmb{x}) \neq p_T(y|\pmb{x}) pS​(y∣xxx)​=pT​(y∣xxx),即学习任务相同 τ S = τ T \tau_S = \tau_T τS​=τT​概念偏移(Concept Shift):源领域和目标领域的输入边际分布相同 p S ( x ) = p T ( x ) p_S(\pmb{x}) = p_T(\pmb{x}) pS​(xxx)=pT​(xxx),但后验分布不同 p S ( y ∣ x ) = p T ( y ∣ x ) p_S(y|\pmb{x}) = p_T(y|\pmb{x}) pS​(y∣xxx)=pT​(y∣xxx),即学习任务不同 τ S ≠ τ T \tau_S \neq \tau_T τS​​=τT​先验偏移(Prior Shift):源领域和目标领域中的输出标签 y 的先验分布不同 p S ( y ) ≠ p T ( y ) p_S(y) \neq p_T(y) pS​(y)​=pT​(y),条件分布相同 p S ( x ∣ y ) ≠ p T ( x ∣ y ) p_S(\pmb{x}|y) \neq p_T(\pmb{x}|y) pS​(xxx∣y)​=pT​(xxx∣y),在这样的情况下,目标领域必须提供一定数量的标注样本。

广义的领域适应问题可能包含上述一种或多种偏移情况。目前大多数领域适应问题主要关注于协变量偏移,这样领域适应问题的关键在于如何学习领域无关的表示,假设 p S ( y ∣ x ) = p T ( y ∣ x ) p_S(y|\pmb{x}) = p_T(y|\pmb{x}) pS​(y∣xxx)=pT​(y∣xxx),领域适应的目标是学习一个模型 f : X → y f:X \to y f:X→y 使得:

其中 L ( ⋅ ) L(\cdot) L(⋅) 为损失函数, θ f \theta_f θf​ 为模型参数

如果可以学习一个函数 g : X → R d g:X \to \R^d g:X→Rd,将 x \pmb{x} xxx映射到一个特征空间中,并在这个特征空间中使得源领域和目标领域的边际分布相同 p S ( g ( x ; θ g ) ) = p T ( g ( x ; θ g ) ) , ∀ x ∈ X p_S(g(\pmb{x};\theta_g)) = p_T(g(\pmb{x};\theta_g)),\forall \pmb{x} \in X pS​(g(xxx;θg​))=pT​(g(xxx;θg​)),∀xxx∈X,其中 θ g \theta_g θg​是函数的参数,目标函数可以近似为:

其中 R S ( θ f , θ g ) R_S(\theta_f,\theta_g) RS​(θf​,θg​)为源领域上的期望风险函数, d g ( S , T ) d_g(S, T) dg​(S,T)是分布差异的度量函数,用来计算在映射特征空间中源领域和目标领域的样本分布的距离, γ \gamma γ为一个超参数,用来平衡两个子目标的重要性比例,这样,学习的目标是优化参数 θ f , θ g \theta_f,\theta_g θf​,θg​使得提取的特征是领域无关的,并且在源领域上损失最小

令:

分别为源领域和目标领域的训练数据,首先使用映射函数 g ( x , y ) g(\pmb{x},y) g(xxx,y)将两个领域中训练样本的输入 x \pmb{x} xxx映射到特征空间,并优化参数 θ g \theta_g θg​使得映射后两个领域的输入分布差异最小,分布差异一般可以通过一些度量函数来计算,比如MMD(Maximum Mean Discrepancy)、CMD(Central Moment Discrepancy)等,可以通过领域对抗学习来得到领域无关的表示。

以对抗学习为例,可引入一个领域判别器c 来判断样本来自哪个领域,如领域判别器 c 无法判断一个映射特征的领域信息,就可以认为这个特征是一种领域无关的表示。

对于训练集中的每一个样本 x \pmb{x} xxx,赋予 z ∈ { 1 , 0 } z\in \{1,0\} z∈{1,0}表示它来自源领域还是目标领域,领域判别器 c ( h , θ c ) c(\pmb{h},\theta_c) c(hhh,θc​)根据其映射特征 h = g ( x , θ g ) \pmb{h}=g(\pmb{x},\theta_g) hhh=g(xxx,θg​)来预测它来自源领域的概率 p ( z = 1 ∣ x ) p(z=1|\pmb{x}) p(z=1∣xxx),由于领域判别是一个二分类问题, h \pmb{h} hhh来自与目标领域的概率为 1 − c ( h , θ c ) 1-c(\pmb{h},\theta_c) 1−c(hhh,θc​)

领域判别器的损失函数:

其中 h S ( n ) = g ( x S ( n ) , θ g ) , h D ( m ) = g ( x D ( m ) , θ g ) \pmb{h}_S^{(n)} = g(\pmb{x}_S^{(n)},\theta_g), \pmb{h}_D^{(m)} = g(\pmb{x}_D^{(m)},\theta_g) hhhS(n)​=g(xxxS(n)​,θg​),hhhD(m)​=g(xxxD(m)​,θg​)分别为样本 x S ( n ) 、 x D ( m ) \pmb{x}_S^{(n)}、\pmb{x}_D^{(m)} xxxS(n)​、xxxD(m)​的特征向量。

故领域迁移的目标函数可分为两个对抗的目标:一方面要学习参数 θ c \theta_c θc​使得领域判别器 c ( h , θ c ) c(\pmb{h},\theta_c) c(hhh,θc​)尽可能区分出一个表示 h = g ( x , θ g ) \pmb{h}=g(\pmb{x},\theta_g) hhh=g(xxx,θg​)是来自哪个领域;一方面,要学习参数 θ g \theta_g θg​使得提取的表示 h \pmb{h} hhh无法被领域判别器 c ( h , θ c ) c(\pmb{h},\theta_c) c(hhh,θc​)预测出来,同时学习参数 θ f \theta_f θf​使得模型 f ( h ; θ f ) f(\pmb{h};\theta_f) f(hhh;θf​)在源领域的损失最小:

5. 终身学习

终身学习又叫持续学习,是指像人类一样具有持续不断的学习能力,根据历史任务中学到的经验和知识来帮助学习不断出现的新任务,并且,这些经验和知识是持续累计的,不会因为新的任务而忘记旧的知识。

终身学习中,假设一个终身学习算法已经在历史任务 τ 1 , τ 2 , ⋯ , τ m \tau_1, \tau_2, \cdots,\tau_m τ1​,τ2​,⋯,τm​ 上学习到一个模型,当出现一个新任务 τ m + 1 \tau_{m+1} τm+1​时,这个算法可以根据过去在 m 个任务上学习到的知识来帮助学习第 m+1 个任务,同时累计所有的 m+1个任务上的知识,这个设定和归纳迁移学习十分类似,但归纳迁移学习的目标是优化目标任务的性能,而不关心知识的积累。另外,终身学习与多任务学习也类似,但终身学习不在所有任务上同时学习,多任务学习是在所有使用任务的数据进行联合学习,并不是一个持续地一个一个的学习。

在终身学习中,一个关键的问题是如何避免灾难性遗忘(Catastrophic Forgetting),即按照一定顺序学习多个任务时,不会忘记以前学习过的任务。如在神经网络模型中,一些参数对任务 τ A \tau_A τA​重要,如果在学习任务 τ B \tau_B τB​时被改变了,则对任务 τ A \tau_A τA​可能造成不好的影响。解决办法很多,如弹性权重巩固(Elastic Weight Consolidation)方法。

以两个任务的持续学习为例,任务 τ A \tau_A τA​和 τ B 的 数 据 集 分 别 为 \tau_B的数据集分别为 τB​的数据集分别为D_A 和 和 和D_B$,从贝叶斯角度看,将模型参数 θ \theta θ看做随机向量,给定两个任务时 θ \theta θ的后验分布为:

其中 D = D A ⋃ D B D = D_A \bigcup D_B D=DA​⋃DB​。根据独立同分布假设,上式可写为:

其中 p ( θ ∣ D A ) p(\theta|D_A) p(θ∣DA​)包含了所有任务 τ A \tau_A τA​上学习到的信息,当顺序地学习任务 τ B \tau_B τB​时,参数在两个任务上的后验分布和其在任务 τ A \tau_A τA​的后验分布有关。后验分布难建模,可通过近似方法来估计,假设 p ( θ ∣ D A ) p(\theta|D_A) p(θ∣DA​)为高斯分布,期望为在任务 τ A \tau_A τA​上学习到的参数 θ A ∗ \theta^*_A θA∗​,精度矩阵(协方差矩阵的逆)可以用参数 θ \theta θ在数据集 D A D_A DA​上的Fisher信息矩阵来近似,即:

其中 F 为Fisher信息矩阵,为了提高计算效率,F可以简化为对角阵,由Fisher信息矩阵对角线构成。

Fisher信息矩阵Fisher信息矩阵(Fisher Information Matrix)是一种测量似然函数 p ( x ; θ ) p(x;\theta) p(x;θ)携带的关于参数 θ \theta θ的信息量的方法,通常由一个参数对分布的影响可以通过对数似然函数的梯度来衡量,令打分函数s ( θ ) s(\theta) s(θ)为:

则 s ( θ ) s(\theta) s(θ)的期望为0,证明如下:

s ( θ ) s(\theta) s(θ)的协方差矩阵称为Fisher信息矩阵,可以衡量参数 θ \theta θ的估计不确定性:

由于不知道似然函数 p ( x ; θ ) p(x;\theta) p(x;θ)的具体形式,Fisher信息矩阵可以用经验分布进行估计,给定一个数据集 { x ( 1 ) , ⋯ , x ( N ) } \{x^{(1)}, \cdots, x^{(N)}\} {x(1),⋯,x(N)},Fisher信息矩阵可以近似为:

Fisher信息矩阵的对角线的值反映了对应参数在通过最大似然进行估计时的不确定性,其值越大,表示该参数估计的方差越小,估计更可靠,其携带的关于数据分布的信息越多。

因此,对于任务 τ A \tau_A τA​的数据集 D A D_A DA​,我们可以用Fisher信息矩阵来衡量一个参数携带的关于 D A D_A DA​的信息量:

通过上面的近似,在训练任务 τ B \tau_B τB​时的损失函数为:

其中 L B ( θ ) L_B(\theta) LB​(θ)为任务 p ( θ ∣ D B ) p(\theta|D_B) p(θ∣DB​)的损失函数, F i A F_i^A FiA​为Fisher信息矩阵的第 i 个对角线元素, θ A ∗ \theta_A^* θA∗​为在任务 τ A \tau_A τA​上学习到的参数, λ \lambda λ为平衡两个任务重要性的超参数,N为参数的总数量。

6. 元学习

人脑的学习机制可以根据不同任务动态地选择合适的模型或动态地调整超参数,称作元学习(Meta-Learning),也称为学习的学习(Learning to Learn)

元学习的目的是从已有任务中学习一种学习方法或元知识,可以加速新任务的学习,从这个角度来说,元学习类似归纳迁移学习,但元学习更侧重从多种不同(甚至不相关)的任务中归纳出一种学习方式。

和元学习相关的一个机器学习问题是小样本学习(Few-shot Learning),在小样本上的快速学习能力,每个类只有K个标注样本,K非常小,如果 K=1,称为单样本学习(One-shot Learning),如果K=0,称为零样本学习(Zero-shot Learning)。

接下来介绍两种经典的元学习:基于优化器的元学习模型无关的元学习

6.1 基于优化器的元学习

目前神经网络的学习主要是定义一个目标损失函数,并通过梯度下降来最小化损失函数:

其中一种通用的算法在所有任务上都有效,因此不同的任务上,需要选择不同的学习率以及不同的优化方法。这些选择对具体一个学习的影响非常大,对一个新任务,我们往往通过经验超参数搜索来选择一个合适的设置。

不同的优化算法的区别在于更新参数的规则不同,故一种元学习就是自动学习一种参数更新规则的规则,即通过另一个网络来建模梯度下降的过程,下图给出了基于优化器的元学习实例:

用函数 g t ( ⋅ ) g_t(\cdot) gt​(⋅)来预测第t步时参数更新的差值 Δ θ t = θ t − θ t − 1 \Delta\theta_t = \theta_t-\theta_{t-1} Δθt​=θt​−θt−1​,函数 g t ( ⋅ ) g_t(\cdot) gt​(⋅)称为优化器,输入是当前时刻的梯度值,输出是参数的更新差值 Δ θ t \Delta\theta_t Δθt​,这样第 t 步的更新规则可以写成:

其中 ϕ \phi ϕ为优化器 g t ( ⋅ ) g_t(\cdot) gt​(⋅)的参数。

学习优化器 g t ( ⋅ ) g_t(\cdot) gt​(⋅)的过程可以看做是一种元学习过程,其目标是找到一个适用于多个不同任务的优化器,在标准梯度下降中,每步迭代的目标是使得 L ( θ ) L(\theta) L(θ)下降,在优化器学习中,我们希望再每步迭代的目标是 L ( θ ) L(\theta) L(θ)最小,具体的目标函数为:

其中T为最大迭代次数, w t > 0 w_t >0 wt​>0为每一步的权重,一般可设置为 w t = 1 , ∀ t w_t =1, \forall t wt​=1,∀t。由于LSTM网络可以记忆梯度的历史信息,学习到的优化器可以看做一个高阶的优化方法。

每步训练时,随机初始化模型参数,计算每一步的 L ( θ t ) L(\theta_t) L(θt​),以及元学习的损失函数 L ( ϕ ) L(\phi) L(ϕ),并使用梯度下降更新参数,由于神经网络的参数非常多,导致LSTM网络的输入和输出都是高维的,训练这样一个网络是不可行的。故一种简化的方法是为每个参数都使用一个共享的LSTM网络来进行更新,这样可以用一个非常小的共享LSTM网络来更新参数。

6.2 模型无关的元学习

元学习的目标之一是快速学习的能力,即在多个不同的任务上学习一个模型,让其在新任务上经过少量的迭代,甚至是单步迭代,就可以达到一个非常好的性能,避免在新任务上过拟合。

模型无关的元学习(Model-Agnostic Meta-Learning,MAML)是一简单的模型无关的、任务无关的元学习算法,假设所有的任务都来自于一个任务空间,其分布为 p ( τ ) p(\tau) p(τ),可以在这个任务空间的所有任务上学习一种通用的表示,这种表示可以经过梯度下降方法在一个特定的单任务上进行精调。假设一个模型为 f θ f_{\theta} fθ​,如果我们让这个模型适应到一个新任务 τ m \tau_m τm​上,通过一步或多步的梯度下降更新,学习到的任务适配参数为:

其中 α \alpha α为学习率。这里 θ m ′ \theta_m^{'} θm′​可以理解为关于 θ \theta θ的函数,而不是真正的参数更新。

MAML的目标是学习一个参数 θ \theta θ使得其经过一个梯度迭代就可以在新任务上达到最好的性能:

在所有任务上的元优化(Meta-Optimization)也采用梯度下降来进行优化,即:

其中 β \beta β为元学习率, I I I为单位矩,这才是真正的参数更新步骤,这里可以看出,当 α \alpha α比较小时,MAML就近似为普通的多任务学习优化方法,MAML需要计算关于 θ \theta θ的二阶梯度,但用一些近似的一阶方法通常也可以达到比较好的性能。MAML的算法过程如下:

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