当前位置: 首页 > news >正文

Clip微调系列:《MaPLe: Multi-modal Prompt Learning》

论文链接:arxiv.org/pdf/2210.03117

参考链接:(28 封私信) CVPR2023 | MaPLe: Multi-modal Prompt Learning - 知乎

灵魂三问:动机?具体实现方法?实验结论?


动机

以Clip为代表的视觉-语言模型虽然在下游任务泛化性好,但是性能高度依赖输入文本提示(Prompt)的设计选择。

现有的改进方法(如CoOp)提出通过可学习的提示调优(prompt-tuning)来替代人工设计硬提示(hard prompt),从而降低模型对prompt的依赖。

Clip微调系列:《coOp: learning to prompt for vision-language models》 -CSDN博客

但是上面这种prompt-tuning改进方法仅通过文本分支的调整,无法在下游任务上灵活动态的调整视觉-语言两个模态的表示空间,因此提出MaPle:促进视觉-语言prompt之间的交互。


具体实现

1. 提出CLIP中的多模态(视觉-文本)的prompt学习;

2. 提出一个耦合函数,为了将视觉-文本两个prompt联系在一起;

3. 在视觉-文本分支的Transformer块中分层学习多模态prompt,逐步建模双模态的协同行为,从而更灵活对齐视觉-文本特征。

  可以拆成两部分看: 

 第一部分:

在两个分支的不同Transoformer Layers分别引入prompt;

 以文本分支举例:
在第一层,引入b个可学习的参数(learnable tokens);

和之前固定的输入token W concat拼接在一起输入Transformer Encoder Layer;

第二层同理,引入新的b个可学习参数 和 W 拼接输入第二层;

图中一共有k层Encoder Layers,J指当前层。

注意,如果这里J是1,也就是只在第一层引入可学习参数,就和coOp方法是一样的。

视觉同理:

第二部分:
为了让两个prompt有联系,设计了一个耦合函数,让视觉分支的prompt由文本分支的prompt 映射形成;

这里的耦合函数就是一个线性层


实验结论

1. 只在第一层添加可学习参数;

2. 只有视觉分支;

3. 只有文本分支;

4. 两个分支的prompt独立;

5. 两个分支的pormpt+耦合函数。

 prompt 深度的影响

一般而言,随着提示深度的增加,性能会有所提升。

当在一个已经成熟的冻结模型的深层插入随机初始化的提示时,性能敏感性会增加。

(人话:当提示在模型比深的层被引入时,任何微小的调整或变化可能会显著改变模型的预测结果,因此模型对这些变化更加敏感。)

类似的趋势也在文献 [Visual Prompt Tuning] 中被报告。由于早期的方法使用浅层语言提示(J=1),我们将我们的方法与深度语言提示进行了比较。总体而言,MaPLe 的表现优于深度语言提示,并在深度为 9 时达到最佳性能。

(28 封私信) 【论文精读】Visual Prompt Tuning - 知乎

prompt  长度的影响 

随着提示长度的增加,基础类别的性能通常保持不变,而新颖类别的准确率则下降。

这表明出现了过拟合,进而影响了对新颖类别的泛化能力。

 多模态提示的有效性

对于那些与 CLIP 预训练数据集有较大分布转移的数据集,以及通常较为稀有和不太通用的视觉概念,MaPLe 提供了显著的性能提升。

提示复杂性

实验了 MaPLe†,它对所有层的提示使用统一的 V-L 耦合函数。MaPLe† 的参数数量约为 MaPLe 的 1/9,但性能差异不大。

 其他对比:

http://www.dtcms.com/a/284047.html

相关文章:

  • kong是什么
  • Vsan关闭集群与重启集群
  • 6、docker network
  • Docker国内镜像
  • Docker-Beta?ollama的完美替代品
  • Ansible AWX 自动化运维
  • 线上项目https看不了http的图片解决
  • Go语言实战案例 - 找出切片中的最大值与最小值
  • vue3+ts+elementui-表格根据相同值合并
  • 宝塔面板一键迁移(外网服务器迁移到内网服务器)
  • Robin问题傅里叶变换与解分析
  • java如何实现打印list对象占用多大内存
  • 算法学习笔记:26.二叉搜索树(生日限定版)——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • xss防御策略
  • 单例模式详细讲解
  • 从 0 到 1 玩转 XSS - haozi 靶场:环境搭建 + 全关卡漏洞解析
  • 50倍性能飞跃!Spring Boot+Doris Stream Load海量数据实时更新方案
  • RabbitMQ—消息可靠性保证
  • 破解本地数据库困局:DbGate+内网穿透如何实现远程管理自由
  • React Native打开相册选择图片或拍照 -- react-native-image-picker
  • CSDN首发:研究帮平台深度评测——四大AI引擎融合的创作革命
  • MySQL安全修改表结构、加索引:ON-Line-DDL工具有哪些
  • mapbox V3 新特性,添加模型图层
  • 深入GPU硬件架构及运行机制
  • OpenCV学习笔记二(色彩空间:RGB、HSV、Lab、mask)
  • 多维动态规划题解——最长公共子序列【LeetCode】空间优化:两个数组(滚动数组)
  • Python eval函数详解 - 用法、风险与安全替代方案
  • Java使用FastExcel实现模板写入导出(多级表头)
  • 设计模式四:装饰模式(Decorator Pattern)
  • maven本地仓库清缓存py脚本