持续学习+元学习+无监督学习文章调研(六)

编程入门 行业动态 更新时间:2024-10-10 17:29:17

持续学习+元学习+无监督学习<a href=https://www.elefans.com/category/jswz/34/1771176.html style=文章调研(六)"/>

持续学习+元学习+无监督学习文章调研(六)

持续学习+元学习+无监督学习文章调研(六)

  • Few-Shot Unsupervised Continual Learning through Meta-Examples, Arxiv2009.08107
    • 方法
      • 无监督聚类的任务划分
      • Meta Examples & Meta Learning
    • 实验结果
      • 平衡&不平衡数据集
      • 单步更新&Attention的作用&有监督效果
      • 聚类数量的影响
  • Learning to Prompt for Continual Learning
    • 基于Prompt池进行学习
    • Prompt的选择
    • 分类器&损失函数
    • 实验结果
    • 消融实验

继续进行持续学习+元学习+无监督学习的相关文章的调研。

Few-Shot Unsupervised Continual Learning through Meta-Examples, Arxiv2009.08107

本文将无监督学习和持续元学习结合起来,提出了结合Meta Examples和Meta Learning的学习方式(MEML)。作者使用聚类的方式在数据集中人为划分出任务,并使用这些不平衡的数据集进行元持续学习训练。作者发现,任务的多样性而非单个任务的容量对于提升模型的泛化能力更加重要,这强调了小任务之重要性。

方法

无监督聚类的任务划分

作者使用Deep Cluster方法在Mini-ImageNet,使用ACAI在Omniglot数据集上进行聚类,从而划分任务。这些聚类方法通常结果是不平衡的,也就是不同聚类之间样本的数量差别会很大。不过后续实验证明不需要额外的处理就可以训练出不错的结果。

Meta Examples & Meta Learning

网络划分为Feature Extraction Network(FEN)和CLassification Network(CLN)。前者表示为 f θ f_{\theta} fθ​,后者表示为 f W f_{W} fW​。除此之外,本文的创新之处在于还引入了一个Attention Layer(表示为 f ρ f_{\rho} fρ​)用于计算所有样本间的attention并通过softmax归一化后加权得到一个Meta Example,公式如下:

其中K为样本数,R为经过FEN后得到的特征。

整体的Meta-Learning训练方式和OML类似,采用inner-loop和outer-loop的方式,其中,CLN和Attention Layer的参数在内圈更新,而所有参数同时在外圈更新,这种内圈不训练FEN的方式也比较类似OML。

实验结果

平衡&不平衡数据集

之前提到的监督方法会造成的cluster间不均衡,为了衡量这种不均衡对于性能的影响,作者在OML方法上尝试了均匀的聚类。具体而言,作者将聚类数设置为和真实的分类数完全相同,并移除数量少于N的聚类同时从多的聚类中重新采样N个样本(按我的理解N应该就是和聚类数成反比,不过在ImageNet中则和聚类数量成正比选择10-30个样本)。这样得到的聚类结果就是均匀的,同时类内的多样性减少了。这样的结果并不好。即使减少聚类数量令其小于实际的分类数,从而增大内部的多样性,效果也没有提升,这说明cluster的多样性要比cluster规模的平衡性更重要

为了进一步确定数据不平衡的影响,作者尝试了两种方式解决数据不平衡:

  • 对于大cluster采样N个样本,对于小cluster通过数据增强扩充到N个样本(OML augmentation)
  • 在损失函数上乘以基于cluster大小的scale(OML balancing parameter)

实验结果如下,该结果进一步表明相比于数据的平衡,数据的多样性更加重要(纯粹平衡数据集的balancing param方法对于结果甚至有害,augmentation方法也几乎没有提升)。

单步更新&Attention的作用&有监督效果

除此之外,上表中还可以看到改用single update方式并不会显著影响结果,但是能够大幅度减少资源,这证明了网络的有效性更多不是来自于优秀的学习能力而是来自于特征的复用。

另外,单纯对于所有样本平均相加的效果不如Meta Example方法,证明了Attention的作用。

除此之外,即使在有监督的场景下(不再使用聚类),模型也能够稳定地超过OML方法。

为模型添加一定的回顾记忆功能(Reservoir Sampling,RS)还能进一步提升效果。

聚类数量的影响

过多的聚类数可能会导致cluster内部的多样性不够,过少则会让内部差异过大的样本被分配到同样的标签。
在Omniglot数据集上,1100个cluster的效果(OML)要好过500个cluster(OML balance 500),而在mini-ImageNet中则是256的cluster最好。

Learning to Prompt for Continual Learning

本文将prompt的微调方式应用在持续学习中。借助预训练好的ViT模型,通过引入prompt池的概念,实现在图像分类任务上的class-incremental的持续学习。相比于使用Rehearsal的方法,不仅在存储上更加高效(不需要额外的生成模型或者存储),而且可以做到task-agnostic(不需要知道任务变化的边界)。

基于Prompt池进行学习

Prompt学习最早来自于自然语言理解,指的是通过对输入的处理,让模型在不改变参数的情况下通过对输入做一定的微调让模型完成新的任务。该方法常用于对语言输入的修改,适合RNN或Transformer的结构。本文同样选择了基于Transformer的ViT预训练模型进行prompt学习,这样,对于多个任务通过使用不同的prompt就可以标明不同的任务从而改变模型的行为。

然而在持续学习的特殊情况下,直接运用这样的方法有几个问题:

  1. 无法task-agnostic,需要根据任务选择prompt
  2. 即使知道任务,独立的prompt也限制了模型的复用能力
  3. 使用单一的prompt可能会造成灾难性遗忘的问题

后面两个问题实际上都是模块化不足的结果。因此,本文中使用了prompt池的概念。具体而言,对于ViT输入的图像patches,模型选从prompt池中选择 N N N个promps,附加到模型的输入之前,如下所示:

其中 M M M为所有可选的prompt的数目,也就是prompt池的容量。而 P j ∈ R L p × D P_j\in \mathbb{R}^{L_p\times D} Pj​∈RLp​×D,其中 L p L_p Lp​为选定的prompt长度, D D D就是每一个输入Transformer的embedding的维度。

Prompt的选择

为了从prompt池中选择prompts,作者设计了一套基于key-value的匹配方式,该方式和VQ-VAE等模型中的设计异曲同工。具体而言,对于prompt池中的每一个prompt,我们为它赋予一个key,表示为 k k k,这样prompt池就是:

这里 D k D_k Dk​是key的维度,特别注意它和prompt向量的维度不一定相等,本文中 D k = D D_k=D Dk​=D。

同时,为了查询,作者借助预训练的ViT(或者任何模型)的特征提取功能获得同样维度的向量,表示为:

这里[0,:]指的是输入ViT之后的第一个输出,也就是[CLS]标记对应的位置。(注意在之前的prompt中我没有写出附在最前面的[CLS]标记)

通过余弦相似度等度量方式(表示为 γ \gamma γ),可以选择最接近的N个prompt:

这里还有一个训练时的小trick,为了鼓励模型尝试新的prompts,我们记录下不同prompt的出现频率,对选择过程做一个修改:

这样鼓励模型在训练时尝试新的prompts,而在测试时再采用回原始的方式(该方法旨在5datasets实验下使用)。

分类器&损失函数

这样,整个prompt学习的损失函数可以表示为:

f r f_r fr​为预训练模型(本文中为ViT), f r a v g = A v g P o o l [ 0 : N L p , : ] f_r^{avg}=AvgPool[0:NL_p,:] fravg​=AvgPool[0:NLp​,:]指的是对[CLS]标记和所有prompt位置的输出做平均池化 其中 K x K_x Kx​就是我们选择出来的那些prompt对应的查询key, λ \lambda λ为标量。第二项可以看出,是单纯地让所选择的prompt的key更加靠近 q ( x ) q(x) q(x),这里需要特别注意,由于选择key的过程是不可导的,因此第一项的损失函数对于 K \mathbf{K} K是不可导的,所以只有第二项对更新查询过程起作用,这也难怪为何要配合前面的trick鼓励模型尝试更多的prompts。 ϕ \phi ϕ为分类器(一个简单的全连接层)的参数。

实验结果

作者的一些实验结果如下,Upper-bound指的是模型再iid条件下训练的结果。

此外我比较感兴趣的是对于边界不明确的任务(task-agnostic)情况下的对比,下面是在Gaussian scheduled CIFAR-100数据集上的结果:

我不知道如果训练时的数据是硬边界而非平滑变化的话,这些模型的表现如何呢?

消融实验

一般来说我的笔记不会记消融实验,但是这篇文章的架构比较有启发,所以在此记录分析。

作者首先尝试了去除prompt池,也就是从头到尾采用和使用一个prompt,模型效果产生了明显的下降,这应该就是由于之前分析所说的训练过程中的灾难性遗忘。

之后,作者尝试直接使用prompt的平均值作为key,而非另外学习 k k k,效果也下降了,这说明了解耦key和value对于学习过程很重要。

作者还尝试不再使用之前提到的提升选择多样性的trick,也造成了性能降低。

其实我觉得直接采用预训练模型的特征作为 q ( x ) q(x) q(x)的影响应该也挺大的,而且有一点作弊的感觉,可惜作者没有放学习 q ( x ) q(x) q(x)的效果。

更多推荐

持续学习+元学习+无监督学习文章调研(六)

本文发布于:2024-02-11 23:51:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1684397.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文章

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!