模型独立的学习方式

模型独立的学习方式

模型独立的学习方式的介绍

针对一个给定的任务,首先要准备一定规模的训练数据,这些训练数据需要和真实数据分布一致,然后设定一个目标函数优化方法,在训练数据上学习一个模型。此外,不同任务的模型往往都是从零开始来训练的,一切知识都需要从训练数据中得到。

这也导致了每个任务都需要准备大量的训练数据

机器学习的三个要素:

  • 模型:线性模型和非线性模型;
  • 学习准则:训练集、损失函数、过拟合和欠拟合、风险最小化准则;
  • 优化算法:参数与超参数、梯度下降法、提前停止、随机梯度下降。

在实际应用中, 我们面对的任务往往难以满足上述要求,比如训练任务和目标任务的数据分布不一致,训练数据过少等。这时机器学习的应用会受到很大的局限。并且在很多场合中,我们也需要一个模型可以快速地适应新的任务。

因此,人们开始关注一些新的学习方式

这里**“模型独立”是指这些学习方式不限于具体的模型**,不管是前馈神经网络、循环神经网络还是其他模型,然而,一种学习方式往往会对符合某种特性的模型更加青睐,比如集成学习往往和方差大的模型组合时效果显著。


集成学习

集成学习(Ensemble Learning) 就是通过某种策略将多个模型集成起来,通过群体决策来提高决策准确率。集成学习首要的问题是如何集成多个模型,比较常用的集成策略有直接平均、加权平均等。

最直接的集成学习策略就是直接平均,即“投票”,基于投票的集成模型𝐹(𝒙)为:
F ( x ) = 1 M ∑ m = 1 M f m ( x ) F(x)=\frac{1}{M}\sum_{m=1}^{M}f_m(x) F(x)=M1m=1Mfm(x)
f m ( x ) f_m(x) fm(x)为集成的模型,假设M个不同的模型 f 1 ( x ) , … , f m ( x ) f_1(x),…,f_m(x) f1(x),,fm(x)评价期望错误为 E ˉ ( f ) \bar{E}(f) Eˉ(f),那么由简单投票机制集成的模型 F ( x ) F(x) F(x)的期望错误就在 1 M E ˉ ( f ) \frac{1}{M}\bar{E}(f) M1Eˉ(f) E ˉ ( f ) \bar{E}(f) Eˉ(f)之间,比未集成时要低。

即集成模型的期望错误大于等于所有模型的平均期望错误的1/𝑀,小于等于所有模型的平均期望错误。

如何提高集成的效果

采用集成学习的模型就是为了达到1+1>2的效果,即多个模型的决策结果达到的总效果要远大于其简单的相加。

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

集成学习的思想可以用一句古老的谚语来描述:“三个臭皮匠赛过诸葛亮”。但是一个有效的集成需要各个基模型的差异尽可能大。为了增加模型之间的差异性,可以采取Bagging和Boosting这两类方法。

Bagging类方法与随机森林

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

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

随机森林是多个决策树的集合和封装,每个决策树都独立投票,并在Bagging的基础上增加了独立性。

"""随机森林分类"""

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set()

# 引入决策树
from sklearn.tree import DecisionTreeClassifier
# 集成分类模型的包
from sklearn.ensemble import BaggingClassifier

def RandomForestClassifier(X, y, ax=None, max_sample=0.8, tree_number=100, cmap='rainbow'):
    """
    使用100颗决策树集成学习的随机森林完成分类并实现数据可视化
    :param X:待处理的二维矩阵,其中(X[:, 0], X[:, 1])表示二维平面内的一个点
    :param y:监督学习标签
    :param ax:传入提前好的axis对象或默认为None
    :param max_sample: 拟合数据的百分比 默认拟合80%的数据
    :param tree_number: 集成决策树的数量
    :param cmap:采取的颜色映射
    :return: model
    """

    # 生成非None的ax对象
    ax = ax or plt.gca()

    # 画出训练数据以及ax对象的设置
    ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap='rainbow')
    ax.axis('tight')
    ax.set_xlabel('x', fontsize=16)
    ax.set_ylabel('y', fontsize=16)
    ax.set_title('RandomForestClassifier', fontsize=19)

    xlim = ax.get_xlim()
    ylim = ax.get_ylim()

    # 生成集成学习模型 设置模型去拟合 85% 的数据
    model = BaggingClassifier(DecisionTreeClassifier(), n_estimators=tree_number, max_samples=max_sample, random_state=1)

    # 用评估器拟合数据
    model.fit(X, y)
    xx, yy = np.meshgrid(np.linspace(*xlim, num=200),
                         np.linspace(*ylim, num=200))
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)

    # 为结果生成彩色图
    n_classes = len(np.unique(y))
    contours = ax.contourf(xx, yy, Z, alpha=0.3, cmap=cmap, zorder=1, levels=np.arange(n_classes + 1) - 0.5)
    ax.set(xlim=xlim, ylim=ylim)

    # 返回模型
    return model

下面是随机森林分类的效果图,由于里面封装着100棵决策树,而决策树是二分类的线性模型,因此分类的界限只能平行于坐标轴

随机森林分类

Boosting和AdaBoost算法

Boosting 类方法是按照一定的顺序来先后训练不同的基模型,每个模型都针对前序模型的错误进行专门训练。根据前序模型的结果,来调整训练样本的权重,从而增加不同基模型之间的差异性。

最后是按照不同的决策权重来汇总决策的结果。

Boosting 类方法是一种非常强大的集成方法,只要基模型的准确率比随机猜测高,就可以通过集成方法来显著地提高集成模型的准确率。

Boosting类的集成模型的目标是学习一个加性模型:
F ( x ) = ∑ m = 1 M α m f m ( x ) F(x)=\sum_{m=1}^{M}\alpha_mf_m(x) F(x)=m=1Mαmfm(x)

该模型加性的特点:

  • 每一次训练都是在上一次的基础之上;
  • 训练时的权重会随着训练次数的增加而增加;
  • 越到分类器的能力越强,从弱分类器逐渐加强为较强分类器,并且所占的权重增加。

Boosting 类方法的关键是如何训练每个弱分类器 f m ( x ) f_m(x) fm(x)及其权重 α m \alpha_m αm,为了提高集成的效果,应当尽量使得每个弱分类器的差异尽可能大。

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

简单来说就是使得第𝑚 + 1个弱分类器“更关注”于前面m个已有弱分类器分错的样本。这样增加每个弱分类器的差异,最终提升集成分类器的准确率

在这里插入图片描述


自训练和协同训练

监督学习往往需要大量的标注数据,而标注数据的成本比较高。因此,利用大量的无标注数据来提高监督学习的效果有着十分重要的意义。这种利用少量标注数据和大量无标注数据进行学习的方式称为半监督学习 (Semi-SupervisedLearning, SSL)

自训练和协同训练都属于半监督学习。

机器学习的分类:

  1. 监督学习:回归和分类;
  2. 无监督学习:降维、聚类和概率密度估计;
  3. 半监督学习。

自训练

自训练是首先使用标注数据来训练一个模型,并使用这个模型来预测无标注样本的标签,把预测置信度比较高的样本及其预测的伪标签加入训练集,然后重新训练新的模型,并不断重复这个过程。

在这里插入图片描述

自训练的前提:有部分有标签的数据;

自训练的过程:

  1. 通过有标签的数据训练模型;
  2. 通过训练出的模型给无标签的数据打上标签;
  3. 将打上标签的数据重新用于训练 / 强化模型。

自训练的缺点是无法保证每次加入训练集的样本的伪标签是正确的。如果选择样本的伪标签是错误的, 反而会损害模型的预测能力。因此,自训练最关键的步骤是如何设置挑选样本的标准

协同训练

协同训练是自训练的一种改进方法,通过两个基于不同视角的分类器来互相促进

假设一个样本𝒙满足下面两个假设:

(1)条件独立性:给定样本标签𝑦 时,两种特征条件独立;

(2)充足和冗余性:当数据充分时,每种视角的特征都足以单独训练出一个正确的分类器。

在这里插入图片描述

协同算法要求两种视角是条件独立的,如果两种视角完全一样, 则协同训练退化成自训练算法。

协同训练的核心点:

  • 通过两个独立模型共同预测未知数据的标签;
  • 选择预测数据中置信度高的数据来重新训练模型。

由于不同视角的条件独立性,在不同视角上训练出来的模型就相当于从不同视角来理解问题,具有一定的互补性,协同训练就是利用这种互补性来进行自训练的一种方法。


迁移学习

标准机器学习的前提假设是训练数据测试数据分布相同的,如果不满足这个假设,在训练集上学习到的模型在测试集上的表现会比较差。

而在很多实际场景中,经常碰到的问题是标注数据的成本十分高,无法为一个目标任务准备足够多相同分布的训练数据。

因此,如果有一个相关任务已经有了大量的训练数据,虽然这些训练数据的分布和目标任务不同,但是由于训练数据的规模比较大,我们假设可以从中学习某些可以泛化的知识,那么这些知识对目标任务会有一定的帮助。

领域与迁移学习

一个样本空间及其分布可以称为一个领域: 𝒟 = (𝒳, 𝒴, 𝑝(𝒙, 𝑦))。

给定两个领域, 如果它们的输入空间输出空间概率分布中至少一个不同,那么这两个领域就被认为是不同的。

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

学习类型样本空间概率分布
标准机器学习 X S = X T , y S = y T X_S=X_T, y_S = y_T XS=XT,yS=yT p S ( x , y ) = p D ( x , y ) p_S(\mathbf{x}, y)=p_D(\mathbf{x}, y) pS(x,y)=pD(x,y)
迁移学习 X S ≠ X T 或 y S ≠ y T X_S \ne X_T 或 y_S \ne y_T XS=XTyS=yT p S ( x , y ) ≠ p D ( x , y ) p_S(\mathbf{x}, y) \ne p_D(\mathbf{x}, y) pS(x,y)=pD(x,y)

迁移学习根据不同的迁移方式又分为两个类型: 归纳迁移学习和转导迁移学习,这两个类型分别对应两个机器学习的范式:归纳学习和转导学习。

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

归纳迁移学习

归纳迁移学习要求源领域和目标领域是相关的(存在可迁移的知识), 并且源领域 D s D_s Ds 有大量的训练样本,这些样本可以是有标注的样本,也可以是无标注样本。

  • 源域中有标注:迁移模型
  • 源域中无标注:迁移规律

(1) 当源领域只有大量无标注数据时,源任务可以转换为无监督学习任务,比如自编码和密度估计任务,通过这些无监督任务学习一种可迁移的表示,然后再将这种表示迁移到目标任务上。

此时主要采用无监督或是半监督学习算法,从源域无标注的数据中学习到一种泛化能力较好的规律迁移到目标任务上。

(2) 当源领域有大量的标注数据时,可以直接将源领域上训练的模型迁移到目标领域上。比如在计算机视觉领域有大规模的图像分类数据集 ImageNet。

在归纳迁移学习中,由于源领域的训练数据规模非常大,这些预训练模型通常有比较好的泛化性,其学习到的表示通常也适用于目标任务。

比如目标任务:识别昆虫

迁移ImageNet的预训练模型,再进行单任务精调 (Fine-Tuning)

归纳迁移学习一般有下面两种迁移方式:
(1) 基于特征的方式:将预训练模型的输出或者是中间隐藏层的输出作为特征直接加入到目标任务的学习模型中。目标任务的学习模型可以是一般的浅层分类器(比如支持向量机等)或一个新的神经网络模型。
(2) 精调的方式:在目标任务上复用预训练模型的部分组件,并对其参数进行精调。

神经网络的迁移

假设预训练模型是一个深度神经网络,这个预训练网络中每一层的可迁移性也不尽相同。

通常来说,网络的低层学习一些通用的低层特征中层或高层学习抽象的高级语义特征,而最后几层一般学习和特定任务相关的特征

因此,根据目标任务的自身特点以及和源任务的相关性,可以有针对性地选择预训练模型的不同层来迁移到目标任务中。

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

  • 初始模型的性能一般比随机初始化的模型要好;
  • 训练时模型的学习速度比从零开始学习要快,收敛性更好;
  • 模型的最终性能更好,具有更好的泛化性和鲁棒性。

转导迁移学习

转导迁移学习是一种从样本到样本的迁移,直接利用源领域和目标领域的样本进行迁移学习。

转导迁移学习通常假设源领域有大量的标注数据, 而目标领域没有(或只有少量)标注数据, 但是有大量的无标注数据。目标领域的数据在训练阶段是可见的。

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

深度迁移学习

深度迁移学习(DTL)是一种新的机器学习范式,它不仅可以利用深度学习(DL)特征表示方面的优势,还可以受益于迁移学习(TL)知识迁移方面的优越性。因此,DTL 技术可以使基于 DL 的故障诊断方法更加可靠、稳健和适用,并且在智能故障诊断 (IFD) 领域得到了广泛的开发和研究。

深度迁移学习同时具有了深度学习和迁移学习的优点,更好的提高了模型的性能。
在这里插入图片描述

“两次训练?“两家养活一家?”

源域和目标域两个数据集同时训练模型,这两个模型本质上都是为一个模型服务的,一个是实在的训练,另一个是为训练的这个模型提供有用的知识。

在这里插入图片描述

  1. 基于实例的深度迁移学习:旨在在迁移场景下训练更精确的深度模型,其中源和目标域/任务之间的差异仅来自于不同的边际概率分布,或条件概率分布。这里值得注意的是不是所有的知识都是有利的 (负迁移),对模型建设有利的知识将被赋予更高的权重。
  2. 基于模型的深度迁移学习:侧重于迁移假设,即源域和目标域之间的任务在模型级别共享一些公共知识(神经网络结构和参数),这意味着可迁移知识很好地嵌入到结构和参数具有通用性的预训练源深度模型中有助于学习强大的目标模型。基于模型的 DTL 方法的目标是利用在源域中预训练的深度学习模型的哪一部分可以帮助改进目标域的模型学习过程
  3. 基于特征的深度迁移学习:赋予深度模型通过学习特征空间级别公共表示来迁移知识的能力,而不是在实例或模型级别,这进一步放宽了基于实例的 DTL 迁移学习场景中的假设,并且从而允许源域和目标域中存在特征空间的差异。基于特征的 DTL 方法背后的一个直观解决方案是学习映射函数作为将源域和目标域中的原始数据从不同特征空间转换为公共潜在特征空间的桥梁,在该空间中可以减少域之间的差异并可以获得不同域之间的域不变和任务判别表示。

多任务学习

一般的机器学习模型都是针对单一的特定任务,不同任务的模型都是在各自的训练集上单独学习得到的。如果有两个任务比较相关,它们之间会存在一定的共享知识,这些知识对两个任务都会有所帮助。这些共享的知识可以是表示、特征、模型参数或学习算法等。

多任务学习(Multi-task Learning) 是指同时学习多个相关任务,让这些任务在学习过程中共享知识,利用多个任务之间的相关性来改进模型在每个任务上的性能和泛化能力。

多任务学习可以看作一种归纳迁移学习,即通过利用包含在相关任务中的信息作为归纳偏置( Inductive Bias) 来提高泛化能力

迁移学习:源域为目标域提供知识

多任务学习:多个域之间相互提供和共享知识

共享机制

多任务学习的主要挑战在于如何设计多任务之间的共享机制。在传统的机器学习算法中,引入共享的信息是比较困难的,通常会导致模型变得复杂。但是在神经网络模型中,模型共享变得相对比较容易。

常见的共享方式有四种:

(1) 硬共享模式:让不同任务的神经网络模型共同使用一些共享模块(一般是低层特征或是神经网络的底层参数)来提取一些通用特征,然后再针对每个不同的任务设置一些私有模块(一般是高层) 来提取一些任务特定的特征。

(2) **软共享模式:**不显式地设置共享模块,但每个任务都可以从其他任务中“窃取”一些信息来提高自己的能力,可以通过添加注意力机制来主动提取有用信息。

(3) 层次共享模式: 一般神经网络中不同层抽取的特征类型不同,低层一般抽取一些低级的局部特征,高层抽取一些高级的抽象语义特征。因此如果多任务学习中不同任务也有级别高低之分,那么一个合理的共享模式是让低级任务在低层输出,高级任务在高层输出。

(4) **共享-私有模式:**一个更加分工明确的方式是将共享模块和任务特定(私有)模块的责任分开。共享模块捕捉一些跨任务的共享特征, 而私有模块只捕捉和特定任务相关的特征,最终的表示由共享特征和私有特征共同构成。

在这里插入图片描述

学习步骤

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

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

(1) **联合训练阶段:**每次迭代时, 随机挑选一个任务,然后从这个任务中的训练集中随机选择一些训练样本,计算梯度并更新参数。跟一般的神经网络训练过程无异,只不过是多个网络交替进行训练

(2) 单任务精调阶段:基于多任务学习得到的参数,分别在每个单独任务进行精调,其中单任务精调阶段为可选阶段。当多个任务的差异性比较大时,在每个单任务上继续优化参数可以进一步提升模型能力。

多任务学习的优点

多任务学习通常可以获得比单任务学习更好的泛化能力,主要有以下几个原因:

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

终身学习

虽然深度学习在很多任务上取得了成功,但是其前提是训练数据和测试数据的分布要相同,一旦训练结束模型就保持固定,不再进行迭代更新。并且,要想一个模型同时在很多不同任务上都取得成功依然是一件十分困难的事情。

机器学习与人类学习的区别

在围棋任务上训练的 AlphaGo 只会下围棋,对象棋一窍不通。如果让 AlphaGo去学习下象棋, 可能会损害其下围棋的能力,这显然不符合人类的学习过程。

人类的学习是一直持续的,人脑可以通过记忆不断地累积学习到的知识,这些知识累积可以在不同的任务中持续进行。

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

终身学习的特点

在终身学习中,假设一个终身学习算法已经在历史任务 T 1 , T 2 , ⋯ , T m T_1, T_2, ⋯ , T_m T1,T2,,Tm 上学习到一个模型,当出现一个新任务 T m + 1 T_{m+1} Tm+1 时,这个算法可以根据过去在 𝑚 个任务上学习的知识来帮助学习第 𝑚 + 1 个任务, 同时累积所有的 𝑚 + 1 个任务上的知识。

终身学习可以利用以前学习过的知识来帮助学习新的知识,其学习能力是逐步提高的。

在终身学习中,一个关键的问题是如何避免灾难性遗忘 (Catastrophic Forgetting),即按照一定顺序学习多个任务时,在学习新任务的同时不忘记先前学会的历史任务。

比如在神经网络模型中,一些参数对任务 T A T_A TA 非常重要,如果在学习任务 T B T_B TB 时被改变了,就可能给任务 T A T_A TA 造成不好的影响。

在网络容量有限时,学习一个新的任务一般需要遗忘一些历史任务的知识,而目前的神经网络往往都是过参数化的, 对于任务 T A T_A TA 而言有很多参数组合都可以达到最好的性能。这样,在学习任务 T A T_A TA 时,可以找到一组不影响任务 T A T_A TA 而又能使得任务 T B T_B TB 最优的参数。


元学习

根据没有免费午餐定理没有一种通用的学习算法可以在所有任务上都有效。因此,当使用机器学习算法实现某个任务时,我们通常需要“就事论事”,根据任务的特点来选择合适的模型损失函数优化算法以及超参数。那么,我们是否可以有一套自动方法,根据不同任务来动态地选择合适的模型或动态地调整超参数呢?

事实上,人脑中的学习机制就具备这种能力。在面对不同的任务时,人脑的学习机制并不相同。即使面对一个新的任务,人们往往也可以很快找到其学习方式。这种可以动态调整学习方式的能力,称为元学习 (Meta-Learning),也称为学习的学习。

元学习的目的是从已有任务中学习一种学习方法或元知识,可以加速新任务的学习。

基于优化器的元学习

我们知道没有一种通用的优化算法在所有的学习任务上都有效,因此在不同的任务上,我们需要选择不同的学习率以及不用的优化方法,来更新参数使得损失最小:
θ t ← θ t − 1 − α ∇ L ( θ t − 1 ) \theta_t\gets \theta _{t-1} - \alpha \nabla \mathcal{L} (\theta _{t-1}) θtθt1αL(θt1)
不同的优化算法的区别在于更新参数的规则不同, 因此一种很自然的元学习就是自动学习一种更新参数的规则, 即通过另一个神经网络(比如循环神经网络)来建模梯度下降的过程

8

我们用函数 g t ( ⋅ ) g_t(⋅) gt() 来预测第 𝑡 步时参数更新的差值。函数 g t ( ⋅ ) g_t(⋅) gt() 称为优化器,输入是当前时刻的梯度值,输出是参数的更新差值。这样,第 𝑡 步的更新规则可以写为
θ t ← θ t − 1 − g t ( ∇ L ( θ t − 1 ) ; ϕ ) \theta_t\gets \theta _{t-1} - g_t(\nabla \mathcal{L} (\theta _{t-1});\phi ) θtθt1gt(L(θt1);ϕ)
学习优化器 g t ( ⋅ ) g_t(⋅) gt() 的过程可以看作一种元学习过程,其目标是找到一个适用于多个不同任务的优化器:通过一个共享的循环神经网络来更新参数
L ( ϕ ) = E f [ ∑ t = 1 T w t L ( θ t ) ] , θ t = θ t − 1 + g t , [ g t ; h t ] = L S T M ( ∇ L ( θ t − 1 ) , h t − 1 ; ϕ ) \mathcal{L}(\phi ) =\mathbb{E}_f[\sum_{t=1}^{T}w_t\mathcal{L}(\theta _t) ], \\ \theta _t =\theta _{t-1} + g_t, \\ [g_t; h_t]=LSTM(\nabla \mathcal{L}(\theta _{t-1}),h_{t-1};\phi ) L(ϕ)=Ef[t=1TwtL(θt)],θt=θt1+gt,[gt;ht]=LSTM(L(θt1),ht1;ϕ)

与模型无关的元学习

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

模型无关的元学习是一个简单的模型无关、任务无关的元学习算法。

可以理解为将一个训练好的做A任务的模型通过微调参数使其去完成B任务,这样比从零开始训练更快,需要的迭代次数更少。

假设一个模型为 f θ f_\theta fθ,如果我们让这个模型适应到一个新任务 T m T_m Tm 上,通过一步或多步的梯度下降更新,学习到的任务适配参数为:
θ m ′ = θ − α ∇ θ L ℑ m ( f θ ) \theta '_m = \theta -\alpha \nabla _\theta \mathcal{L}_{\Im _m}(f_\theta ) θm=θαθLm(fθ)
与模型无关的元学习的目标是学习一个参数 θ \theta θ 使得其经过一个梯度迭代就可以在新任务上达到更好的性能:
$$

\sideset{}{}{min}\theta \sum {\Im m\sim p(\Im )}\mathcal{L}{\Im_m}(f{\theta’m})=\sideset{}{}{min}\theta\sum {\Im m\sim p(\Im )}
\mathcal{L}
{\Im_m}(f(\theta -\alpha \nabla \mathcal{L}
{\Im_m}(f
\theta )))

$$

训练过程还是最小化损失,

但是优化的对象是一个已经训练好的模型,而不是模型的参数,

具体更新的对象是一个已经训练好的模型的参数。

heta \mathcal{L}{\Im m}(f\theta )
KaTeX parse error: Can't use function '$' in math mode at position 22: …的元学习的目标是学习一个参数 $̲\theta$ 使得其经过一个…
\sideset{}{}{min}
\theta \sum {\Im m\sim p(\Im )}\mathcal{L}{\Im_m}(f{\theta’m})=\sideset{}{}{min}\theta\sum {\Im m\sim p(\Im )}
\mathcal{L}
{\Im_m}(f(\theta -\alpha \nabla \mathcal{L}
{\Im_m}(f_\theta )))
$$

训练过程还是最小化损失,

但是优化的对象是一个已经训练好的模型,而不是模型的参数,

具体更新的对象是一个已经训练好的模型的参数。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WhenYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值