ICLR24_CONSISTENCY-GUIDED PROMPT LEARNING FOR VISION-LANGUAGE MODELS

Abstract

提出了一种名为一致性引导提示学习(Consistency-guided Prompt learning,CoPrompt)的微调方法。CoPrompt在少样本设置下微调后,可以改善大模型在下游任务中的泛化能力。CoPrompt的基本思想是在可训练模型和预训练模型的预测中添加一致性约束,以防止在下游任务上过度拟合

关键组件:

  • 在两个扰动输入上约束一致性,并将提示和适配器两种微调范式组合。在扰动输入上保持一致性有助于进一步规范一致性约束,从而提高泛化能力
  • 适配器和提示的整合不仅提高了在下游任务上的性能,还在输入和输出空间中提供了更多的微调灵活性,有助于在少样本学习设置中更有效地适应下游任务
  • 实验证明,CoPrompt在一系列评价标准上的性能优于现有方法,包括base-to-novel泛化、域泛化和跨数据集评估

Intro.

在这里插入图片描述
为保证大模型在小规模的下游任务(例如,少样本学习)微调的性能以及保持泛化能力,出现了多种微调方法。然而,少样本性能的提高往往会导致零样本能力的下降,主要是由于在少样本微调过程中模型对新引入的参数的严重过拟合,导致与基础模型的原始预测出现显著偏离。CoPrompt通过防止可训练模型的嵌入与预训练模型的嵌入在学习新任务时偏离过远来减少过拟合问题并提高泛化能力,在可训练模型和预训练模型之间的语言和图像分支上添加一致性约束。与自监督学习中的一致性正则化不同,扰动输入用于训练可学习编码器和预训练编码器之间保持一致。实现了从冻结的编码器到可学习的编码器间的知识蒸馏,从而在处理少样本新任务时保持了预训练基础模型的泛化能力。引入了两个额外的组件来改进所提出的一致性约束:

  • 在两个扰动输入上约束一致性,文本分支从通用格式的输入提示文本生成更详细和描述性的句子,在这两个句子的表示之间约束可学习和预训练文本编码器之间的一致性;图像分支对输入图像应用增强,生成两个扰动图像
  • 集成了两种主要的调优范式,adapter与prompt,在输入和输出空间中提供了增强的调优灵活性,促进了在少样本情景中学习新任务的更有效的学习,以前的工作尚未能成功地将它们结合起来以提高性能,模型往往会因为额外的可学习参数而过拟合

Contributions

  • 提出了一种强调一致性的大模型微调方法,能够从少量样本中学习新任务,而不会失去零样本泛化能力
  • 结合了预训练LLM的知识,并在文本分支上施加了一致性约束,以及在图像分支上进行数据增强,进一步提高了泛化性能
  • 将两种强大的基础模型调优范式,提示和适配器,结合成一个单一框架,以提高在新任务上的性能
  • 多个评价基准上的实验效果出色

Method

COPROMPT: CONSISTENCY-GUIDED PROMPT LEARNING

在这里插入图片描述

Consistency constraint

使用余弦距离作为预训练和可学习编码器的嵌入之间的一致性约束(实验选择度量标准,捕捉了向量之间的角度相似性,而不仅仅依赖于它们的大小)
在这里插入图片描述

Input perturbation

给定模板文本“a photo of a [category]”,使用预训练的大语言模型 GPT 生成更具描述性的句子 s k = ϕ G P T ( ‘ a photo of a [category] k ’ ) ) s_k=\phi_{GPT}(‘\text{a photo of a [category]}_k’)) sk=ϕGPT(a photo of a [category]k))。在图像分支上,使用一个数据增强模块 δ δ δ来生成扰动后的图像 x ′ = δ ( x ) x' = δ(x) x=δ(x)。约束扰动输入到预训练模型和可学习模型的嵌入之间的一致性:
在这里插入图片描述

Adapters

适配器(两个线性层之间带有非线性的结构)添加在图像及文本编码器的顶部以变换嵌入向量
在这里插入图片描述
约束两个模态上嵌入之间的一致性


Experiments

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 08:52:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 08:52:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 08:52:01       87 阅读
  4. Python语言-面向对象

    2024-04-05 08:52:01       96 阅读

热门阅读

  1. 什么是CSS编程语言?怎么使用?

    2024-04-05 08:52:01       37 阅读
  2. 【leetcode面试经典150题】9.跳跃游戏(C++)

    2024-04-05 08:52:01       33 阅读
  3. tomcat 常用的一些配置

    2024-04-05 08:52:01       27 阅读
  4. jvm的垃圾回收策略

    2024-04-05 08:52:01       38 阅读
  5. Linux服务器之间SSH免密登陆

    2024-04-05 08:52:01       40 阅读
  6. ssh 连接linux经常断开

    2024-04-05 08:52:01       31 阅读
  7. 开源 riscv 的一些实现和资料链接

    2024-04-05 08:52:01       33 阅读
  8. 【WPF应用32】WPF中的DataGrid控件详解与示例

    2024-04-05 08:52:01       34 阅读
  9. 分布式数据库中间件 Mycat 和 ShardingSphere 对比

    2024-04-05 08:52:01       29 阅读
  10. 枚举类练习

    2024-04-05 08:52:01       33 阅读