作者 | 上杉翔二

悠闲会 · 信息检索

整理 | NewBeeNLP

上一篇博文整理了预训练新范式,见 预训练新范式!为什么Prompt会更有效? 主要是围绕NLP上的成果,具体的概念本文也不做过多赘述。本篇文章将主要整理几篇有代表性的Prompt方法在多模态领域中的应用。

MAnTiS

  • Multimodal Conditionality for Natural Language Generation

  • paper:https://arxiv.org/pdf/2109.01229.pdf

Prompt用于Natural Language Generation多模态NLG任务。先从NLG任务过渡到Vision-language的应用吧,这篇文章主要是利用图片信息来增强文本的生成。如上图,在生成商品介绍文案时,如果能结合商品的图片,必然能够得到更贴切的文案。然后本文使用了一个十分直观的Prompt方法,将多模态序列作为前缀Prompt放到decoder输入序列的前面,进而中解码过程中分享多模态信息即可。

具体操作如下图:输入由multimodal conditioning data和generation组成。左边的multimodal的输入是image和text(即商品title),分别用ResNet-152和embedding映射到语言模型的同一个空间中。同时作为条件的文本输入和生成序列一同进行编码。最后再经过Transformer Decoder得到输出的描述。

ActionCLIP

  • ActionCLIP: A New Paradigm for Video Action Recognition

  • paper:https://arxiv.org/abs/2109.08472

  • code:https://arxiv.org/abs/2109.08472

Prompt用于Action Recognition动作识别问题。

  • 动作识别问题是一个很CV的任务了,一般的方式是采用上图(a)所示的单模态框架,即先理解视频内容,再预测一组固定的预定义类别。但但但其完全忽略了标签label所包含的语义信息(人类做识别的时候会很自然的对比脑海中的相关语言概念),只将标签映射到一个固定维数的空间中,无迁移/预测能力。

  • 因此作者提出图(b)所示的Prompt新框架,即在输入端就纳入label信息,将其与对应的视频特征进行关联。这样做不仅可以增强视频表征的语义性,同时能够具备很强的zero-shot的迁移能力。另一个优势是,这种多模态输入完全可以利用现在已经做了大量工作的多模态预训练模型。关于 多模态预训练 模型博主过往文章做过整理,不再赘述。

作者提出的新范式的具体做法大概可以分为 “pre-train, prompt, and fine-tune”,模型图如下。pre-train指利用现有的多模态预训练模型,然后改装我们的任务适应模型,最后再在自己的数据集上进行fine-tune。这样的做法,通过prompt保持住pre-trained模型的强大表征性能,又节省了很多的计算资源。具体的框架图不太容易看,主要先看图a是主框架部分。主框架分别对视频和文本做两种Prompt。分别是textual prompt和visual prompt。

  • textual prompt。这是我们比较熟悉的模式,不过作者提供了三种模式:prefix prompt, cloze prompt and suffix prompt。这个在之前的综述博文中都有提到过了。比如label是“watering plants”,那么输入的句子将被改装成“play a human action of [watering planrts]”。具体可以看图b的示意。然后通过encoder得到表示。

  • visual prompt。为了充分理解视频,它分为三个大部分:pre-network prompt, in-network prompt and post-network prompt。pre-network(图c)主要对输入部分进行改动,对所有的输入帧的所有patch都进行时间+空间的位置编码,进行attention计算。in-network(图d)在相邻层间插入temporal shift模块便于相邻帧间的特征交换。post-network(图e-g)是四种对不同时间片段的tokens进行交互建模的模块,MeanP指时间维度上的Mean pooling,Conv1D/LSTM是应用于时间维度上的一维卷积或LSTM,Transf是vision transformer encoder。

然后拿到这两部分的特征之后,再做相似度的计算得到最后的动作识别结果。

CPT

  • CPT:Colorful Prompt Tuning for Pre-Training Vision-Language Models

  • paper:https://arxiv.org/pdf/2109.11797.pdf

Prompt用于Visual Grounding视觉定位问题。

这篇文章提出的Prompt方法是Colorful Prompt Tuning(彩色提示调优),它主要的思路是在图像和文本中使用共同的颜色来标识,以将视觉定位问题变成填空问题来解决跨模态差异。与以往路线的不同如上图所示:

  • 图a和图b是传统的视觉定位方法。a是指先用大量的数据来预训练,即使用[mask]机制来盖住token,然后还原信息以提升表示的质量。

  • 图b是fnetune,图中画的路线是使用[CLS]做二分类来判断定位的问题。

  • 图c是本文的CPT方法咯。很直观的可以看到它用不同颜色来区分不同的实体模块,然后构建一个Prompt模版为:xxx is in [mask] color,然后在[mask]上预测对应的该是哪个颜色即可。

同时由于Prompt这种范式自身拥有的生成能力,使得CPT改装一下也可以在其他视觉任务上进行应用,如下图所示。如果做目标检测是 xxx is a  [mask]等等。

CLIP

在整理CoOp前还是放一下经典的CLIP,更完整的整理在传送门[1],CLIP中用到Prompt的地方也是它处理句子-图像对的方式。

如下图所示,dog 这一label会被改造成 "A photo of a dog",然后被mask,再尝试通过模型算内积相似度来预测出这个词,也就能做好分类了,由于是生成句子的感觉,所以其实CLIP是十分适合做zero-shot 的分类的。

CoOp

  • Learning to Prompt for Vision-Language Models

  • paper:https://arxiv.org/pdf/2109.01134.pdf

  • code:https://github.com/KaiyangZhou/CoOp

CLIP实际上就是prompt在visual-language model中的一个应用,所以CoOp实际是在CLIP的基础上进一步进行的改进。不过它受到了AutoPrompt的启发会更多一些,前面的一些工作的Prompt方式都是基于人工模版(如xxx is [label]),连续型自动模版的Prompt会是更加不错的选择。所以CoOp的结构可以如下图所示,前面是一个learnable context,而不是人工模版。然后这个[class]信息(即label)可以放到生成的虚拟模板的中间,前面和后面都可以,因为后续的一些连续型自动模版Prompt的研究都证明了模型是不一定需要符合自然语言的连贯性的。learnable context将和不同类别的word embedding拼接之后再进行后面的过程。然后其他地方,image encoder和text encoder和CLIP都比较类似,优化的目标也是使得和图片对应的prompt预测分数最大。

另外还有两种有意思的变体:

  • 在class的前后都插入learnable context,以增加prompt的灵活性。

  • 设计class-specific context(CSC),让所有类别的prompt参数独立(目前是所有参数都是共享的),实验结果证明这种做法在一些细粒度分类任务中效果更好。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

本文参考资料

[1]

传送门: https://nakaizura.blog.csdn.net/article/details/116903995

END -

检索召回 技术综述!

2022-01-10

COIL:结合稠密检索和词汇匹配的更高效检索模型

2022-01-06

深度学习中 Batch Size 对训练过程的影响

2022-01-05

冯仕堃:预训练模型哪家强?百度知识增强大模型探索实践!

2022-01-04

一文速览!多模态预训练中的 Prompt 范式相关推荐

  1. 多模态预训练中的Prompt(ALPRO,Frozen)

    以往的文章更新过,背景就不再赘述: Cross-modal Pretraining in BERT(多模态预训练) CLIP,DALL-E 预训练新范式(Prompt-tuning,Prefix-tu ...

  2. 笔记:文澜:桥接视觉和语言的大规模多模态预训练 WenLan: Bridging Vision and Language by Large-Scale Multi-Modal Pre-Training

    笔记:WenLan: Bridging Vision and Language by Large-Scale Multi-Modal Pre-Training 笔记:文澜:桥接视觉和语言的大规模的多模 ...

  3. AI:2023年6月9日北京智源大会演讲分享之基础模型前沿技术论坛—《工程化打造AI中的CPU》、《构建一个AI系统:在LLM上应用带有RLHF来推进定制》、《多模态预训练的进展回顾与展望》、《扩展大

    AI:2023年6月9日北京智源大会演讲分享之基础模型前沿技术论坛-<工程化打造AI中的CPU>.<构建一个AI系统:在LLM上应用带有RLHF来推进定制>.<多模态预训 ...

  4. CLIP-对比图文多模态预训练的读后感

    CLIP-对比图文多模态预训练的读后感 FesianXu 20210724 at Baidu Search Team 前言 CLIP是近年来在多模态方面的经典之作,其用大量的数据和算力对模型进行预训练 ...

  5. 《达摩院2023十大科技趋势》发布,生成式AI、多模态预训练大模型入选

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 1月11日,达摩院发布<达摩院2023十大科技趋势>,生成式AI.多模态预训练大模型等技术入选. 达摩院认为,AI正在加速奔 ...

  6. 从顶会论文看多模态预训练研究进展

    本文约4000字,建议阅读5分钟本文主要从以下几个方面对近期多模态预训练模型的工作进行介绍:预训练模型.多模态prompt.多模态预训练分析.知识迁移和知识蒸馏. 凭借着强大的泛化能力,预训练模型在C ...

  7. 格“物”致知:多模态预训练再次入门

    ©PaperWeekly 原创 · 作者|Chunyuan Li 单位|Microsoft Research Researcher 研究方向|深度生成模型 本文简要阐述了基于视觉和语言信息的多模态学习 ...

  8. 扔掉目标检测器,实现真正的端到端多模态预训练!阿里提出E2E-VLP(ACL2021)...

    关注公众号,发现CV技术之美 ▊ 写在前面 基于大规模图文对的视觉-语言预训练(VLP)已经让许多跨模态的下游任务取得了巨大的性能提升.现有的大多数预训练方法主要采用两步 训练过程,即首先使用预训练的 ...

  9. <<多模态预训练—泛读>>2022:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Unders

    目录 问题与方案: 一.Introduction 二.Related Work 2.1.Vision-language Pre-training 2.2.Knowledge Distillation ...

最新文章

  1. 深度有趣 | 27 服饰关键点定位
  2. VSLAM|回环检测之词袋字典效果测试及一点思考
  3. Centos 6.8安装Python3.7
  4. 组建核心团队时的困惑
  5. Java并发编程:线程的生命周期是个怎样的过程?
  6. python 的常用时间操作,取得当前时间等
  7. Js中caller和callee的区别
  8. python access_Python3 os.access() 方法
  9. mts模式_MTS的完整形式是什么?
  10. TensorFlow12CIFAR-CNN实现
  11. 经典面试题(51):以下代码将输出的结果是什么?
  12. Python学习:图形界面设计01
  13. 谷歌安全研究员发现3个 Apache Web 服务器软件缺陷
  14. u大侠装服务器系统,U大侠一键U盘装系统装机UEFI二合一版
  15. eclipse使用jsp
  16. wxpy 扫码登录微信报错 KeyError: pass_ticket(网页版微信登录失败)
  17. Java学习之路---对象篇(Object)
  18. matlab 清浊音判断+源代码
  19. 缓存雪崩的基于事前+事中+事后三个层次的完美解决方案
  20. 香港科大EMBA校友黄立伟冠名两位商学院教授

热门文章

  1. 工程监测管理平台、工程数据看板、工程总览、动态模型、数据分析、数据跟踪、建筑工地、数据报表、警点管控、现场记录、观测记录、测点管理、模型管理、文档管理、墙体下沉、成员管理、axure原型、产品原型
  2. windows10系统右键新建菜单的自定义
  3. 牛客练习赛39 B 选点(dfs序+LIS)
  4. POJ - 3026(BFS+最小生成树.krustal)
  5. js拼的onclick调用方法需要注意的地方 之二
  6. 第7章 使用Spring MVC构建Web程序(一)
  7. root用户安装的软件在普通用户不生效
  8. IOS开发之实现App消息推送(最新)
  9. (转)一步一步Asp.Net MVC系列_权限管理之权限控制
  10. Linux系统Bash的常用功能(9)