【album】深度学习/机器学习/人工智能

集锦。

自监督学习

监督学习&无监督学习&半监督学习&自监督学习 - 小吴的日常 - 博客园 (cnblogs.com)

自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。(也就是说自监督学习的监督信息不是人工标注的,而是算法在大规模无监督数据中自动构造监督信息,来进行监督学习或训练。因此,大多数时候,我们称之为无监督预训练方法或无监督学习方法,严格说来,应该叫自监督学习)。

对于自监督学习来说,存在三个挑战:

  1. 对于大量的无标签数据,如何进行表征/表示学习?
  2. 从数据的本身出发,如何设计有效的辅助任务 pretext?
  3. 对于自监督学习到的表征,如何来评测它的有效性?

对于第三点,评测自监督学习的能力,主要是通过 Pretrain-Fintune 的模式。我们首先回顾下监督学习中的 Pretrain - Finetune 流程:我们首先从大量的有标签数据上进行训练,得到预训练的模型,然后对于新的下游任务(Downstream task),我们将学习到的参数(比如输出层之前的层的参数)进行迁移,在新的有标签任务上进行「微调」,从而得到一个能适应新任务的网络。
自监督的 Pretrain - Finetune 流程:首先从大量的无标签数据中通过 pretext 来训练网络(自动在数据中构造监督信息),得到预训练的模型,然后对于新的下游任务,和监督学习一样,迁移学习到的参数后微调即可。所以自监督学习的能力主要由下游任务的性能来体现。

【微信公众号 Smarter:Self-Supervised: 如何避免退化解

一张图理解Self-Supervised Learning:
SSL

Self-Supervised Learning分成两种方法:一种是生成式模型(上图左),一种是判别式模型(上图右)。以输入图片信号为例,生成式模型,输入一张图片,通过Encoder编码和Decoder解码还原输入图片信息,监督信号是输入输出尽可能相似。判别式模型,输入两张图片,通过Encoder编码,监督信号是判断两张图是否相似(例如,输入同一个人的两张照片,判断输入相似,输出1;输入两个人的照片,判断输入不相似,输出0)。
自从MoCo横空出世横扫7个榜单之后,判别式模型逐渐成为了Self-Supervised Learning的主流。

InfoNCE-Loss

Self-Supervised Learning的判别式模型一般称为Contrastive Learning,很容易理解,通过对比两个输入是否相似得到输出结果。Contrastive Learning通常使用InfoNCE作为损失函数来训练模型,可以说理解了InfoNCE就基本上能够很好的掌握self-supervised的核心思想。

对比学习

【微信公众号 Smarter:对比学习(Contrastive Learning):研究进展精要
对比学习(Contrastive Learning):研究进展精要 - 知乎 (zhihu.com)

对比学习是自监督学习的一种,也就是说,不依赖标注数据,要从无标注图像中自己学习知识。
对比学习属于无监督或者自监督学习,但是目前多个模型(Moco系列、SimCLR系列、BYOL、SwAV……)的效果已超过了有监督模型,这样的结果很令人振奋。
这篇公众号文章指出:NLP领域的Bert模型,对于这波图像领域的对比学习热潮,是具有启发和推动作用的。我们知道,Bert预训练模型,通过MLM任务的自监督学习,充分挖掘了模型从海量无标注文本中学习通用知识的能力。而图像领域的预训练,往往是有监督的,就是用ImageNet来进行预训练,但是在下游任务中Fine-tuning的效果,跟Bert在NLP下游任务中带来的性能提升,是没法比的。
从目标来说,对比学习就是要干NLP领域类似Bert预训练的事。
总体而言,图像领域里的自监督可以分为两种类型:生成式自监督学习,判别式自监督学习。VAE和GAN是生成式自监督学习的两类典型方法,即它要求模型重建图像或者图像的一部分,这类型的任务难度相对比较高,要求像素级的重构,中间的图像编码必须包含很多细节信息。对比学习则是典型的判别式自监督学习,相对生成式自监督学习,对比学习的任务难度要低一些。目前,对比学习貌似处于“无明确定义、有指导原则”的状态,它的指导原则是:通过自动构造相似实例和不相似实例,要求习得一个表示学习模型,通过这个模型,使得相似的实例在投影空间中比较接近,而不相似的实例在投影空间中距离比较远。而如何构造相似实例,以及不相似实例,如何构造能够遵循上述指导原则的表示学习模型结构,以及如何防止模型坍塌(Model Collapse),这几个点是其中的关键。
目前出现的对比学习方法已有很多,如果从防止模型坍塌的不同方法角度,我们可大致把现有方法划分为:基于负例的对比学习方法、基于对比聚类的方法、基于不对称网络结构的方法,以及基于冗余消除损失函数的方法。

对比学习目前的主要范式
对比学习主要是通过对比,拉近相似样本之间的距离,推远不相似样本之间的距离。而相似样本的构造,又可以分为有监督与无监督两种:

  • 「有监督」:通过将监督样本中的相同label的样本作为正样本,不同label的样本作为负样本,来进行对比学习;
  • 「无监督」:由于没有监督信号(label),此时,我们对同一个样本构造两个view,让同一样本构造的两个view互为正样本,而其他样本构造的view则全部为负样本,以此来进行对比学习。而由同一个样本构造两个view,又是数据扩增的过程,所以也可以称作是数据扩展对比学习。而不管那种范式,通常对比学习都是在batch内进行。

迁移学习

【github:jindongwang/transferlearning

主动学习

主动学习(Active Learning)概述及最新研究 (qq.com)
主动学习是一种通过主动选择最有价值的样本进行标注的机器学习或人工智能方法。其目的是使用尽可能少的、高质量的样本标注使模型达到尽可能好的性能。也就是说,主动学习方法能够提高样本及标注的增益,在有限标注预算的前提下,最大化模型的性能,是一种从样本的角度,提高数据效率的方案,因而被应用在标注成本高、标注难度大等任务中。

多任务学习

【微信公众号NewBeeNLP,作者上杉翔二:如何利用多任务学习提升模型性能?

  • 多任务学习Multi-Task Learning(MTL)实质上是一种迁移机制,如何让模型能够同时解决多种问题,从而提高泛化准确率、学习速度和能力,模型的可理解性。特别是如何使用与其他任务的“相关性”与“差异性”,通过多个任务训练并共享不同任务已学到的特征表示,减轻对特定任务的过度拟合,从正则化效果中获益,提升最终的性能,使学习的嵌入在任务之间具有通用性。

提升模型性能的方法有很多,除了提出过硬的方法外,通过把神经网络加深加宽(深度学习),增加数据集数目(预训练模型)和增加目标函数(多任务学习)都是能用来提升效果的手段。(别名Joint Learning,Learning to learn,learning with auxiliary task....等)
tasks

增量学习

【微信公众号NewBeeNLP,作者Maple小七:增量学习(Incremental Learning)小综述

  • 增量学习的能力就是能够不断地处理现实世界中连续的信息流,在吸收新知识的同时保留甚至整合、优化旧知识的能力。
  • 在机器学习领域,增量学习致力于解决模型训练的一个普遍缺陷:「灾难性遗忘(catastrophic forgetting)」,也就是说,一般的机器学习模型(尤其是基于反向传播的深度学习方法)在新任务上训练时,在旧任务上的表现通常会显著下降。
  • 要注意增量学习和在线学习的区别,在线学习通常要求每个样本只能使用一次,且数据全都来自于同一个任务,而增量学习是多任务的,但它允许在进入下一个任务之前多次处理当前任务的数据。
  • 增量学习的优点是可以随时训练新数据,不需要保留大量训练数据,因此存储和计算开销都比较小,同时还能够有效避免用户的隐私泄露问题,这在「移动边缘计算的场景」下是非常有价值有意义的。「但目前的增量学习依旧是一个很开放的研究问题,很大程度上还处于理论探索阶段,在很多方面学界都没有达成统一的共识,不少论文给出的结论常常会相互冲突,因此增量学习还没有在细分领域中得到大规模的应用和落地。
Incremental Learning Description
regularization 基于正则化的增量学习的主要思想是「通过给新任务的损失函数施加约束的方法来保护旧知识不被新知识覆盖」,这类方法通常不需要用旧数据来让模型复习已学习的任务,因此是最优雅的一类增量学习方法。
缺点是高度依赖于新旧任务之间的相关性,当任务差异太大时会出现任务混淆的现象(inter-task confusion),并且一个任务的训练时间会随着学习任务的数量线性增长,同时引入的正则项常常不能有效地约束模型在新任务上的优化过程。
1、Learning without Forgetting (ECCV 2016)提出的LwF算法是基于深度学习的增量学习的里程碑之作。
2、LwF算法先得到旧模型在新任务上的预测值,在损失函数中引入新模型输出的蒸馏损失,然后用微调的方法在新任务上训练模型,从而避免新任务的训练过分调整旧模型的参数而导致新模型在旧任务上性能的下降。
replay 基于回放的增量学习的基本思想就是"温故而知新",在训练新任务时,一部分具有代表性的旧数据会被保留并用于模型复习曾经学到的旧知识,因此「要保留旧任务的哪部分数据,以及如何利用旧数据与新数据一起训练模型」,就是这类方法需要考虑的主要问题。
主要缺点是需要额外的计算资源和存储空间用于回忆旧知识,当任务种类不断增多时,要么训练成本会变高,要么代表样本的代表性会减弱,同时在实际生产环境中,这种方法还可能存在「数据隐私泄露」的问题。
1、iCaRL: Incremental Classifier and Representation Learning (CVPR 2017)是最经典的基于回放的增量学习模型,iCaRL的思想实际上和LwF比较相似,它同样引入了蒸馏损失来更新模型参数,但又放松了完全不能使用旧数据的限制。
parameter isolation 参数隔离范式需要引入较多的参数和计算量,因此通常只能用于较简单的任务增量学习。

元学习

元学习,即Meta-Learnig,它希望模型获取一种“学会学习”的能力,使其可以在获取已有“知识”的基础上快速学习新的任务,它的意图在于通过少量的训练实例设计能够快速学习新技能或适应新环境的模型。

参考:

  1. 初探元学习(Meta-Learning)
  2. 顶会的宠儿:元学习(Meta-learning)的前世今生
  3. 一文解读元学习研究进展 (qq.com)

从广义上讲,元学习的定义可包括迁移,多任务,特征选择和模型集成学习。还有人认为元学习广泛涵盖了基于数据集特征的算法选择等技术。参考【3】专注于当前神经网络下的元学习,并将其理解为算法或归纳偏差搜索,通过对明确的目标函数进行端到端学习来实现的。

机器学习和元学习实际上目的都是找一个Function,只是两个Function的功能不同,要做的事情不一样。机器学习中的Function直接作用于特征和标签,去寻找特征与标签之间的关联;而元学习中的Function是用于寻找新的f,新的f才会应用于具体的任务。
也可这样理解:机器学习学习某个数据分布X到另一个分布Y的映射。而元学习学习的是某个任务集合D到每个任务对应的最优函数f的映射(任务到学习函数的映射)。

相关领域:

  • 「迁移学习」。迁移学习(transfer learning)强调从已有任务中学习新任务的思维。与meta-learning相比,迁移学习更强调的是这种学习问题,而meta-learning则更侧重于学习方法。因此,二者不是完全没有联系,也并不是完全相等,取决于看待问题的角度。在很多情况下,二者的终极目标是一致的。或者说:元学习更偏重于任何和数据的双重采样,任务和数据一样是需要采样的,而学习到的F(x)可以帮助在未见过的任务f(x)里迅速建立mapping。而迁移学习更多是指从一个任务到其它任务的能力迁移,不太强调任务空间的概念。
  • 「领域自适应和领域泛化」。Domain adaptation和domain generalization这两种学习模式是迁移学习的子集。与meta-learning显著区别的是,二者没有meta-objective,也就是说,没有bi-level优化的过程。当然最近有一些工作试图将meta-learning引入来解决这两个领域的问题。
  • 「终身学习和持续学习」。终身学习(lifelong learning)和持续学习(continual learning)强调在一个任务上进行连续不断地学习,而meta-learning则侧重于在多个任务上学习通用的知识,有着显著区别。
  • 「多任务学习」。多任务学习(multi-task learning)指从若干个相关的任务中联合学习出最终的优化目标。Meta-learning中的任务是不确定的,而多任务中的任务就是要学习的目标。
  • 「超参数优化」。严格来说,超参数优化(hyperparameter optimization)侧重学习率、网络架构等参数的设计,其是meta-learning的一个应用场景。
posted @ 2021-03-09 11:39  Skye_Zhao  阅读(425)  评论(0编辑  收藏  举报