前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Visual Prompt Tuning:视觉版的P-tuning

Visual Prompt Tuning:视觉版的P-tuning

作者头像
CristianoC
发布2022-11-18 15:02:59
8080
发布2022-11-18 15:02:59
举报
文章被收录于专栏:计算机视觉漫谈

VPT是一篇在视觉领域应用prompt tuning的文章,以往计算机视觉是先预训练好一个大模型,然后针对不同的下游任务去微调,VPT只需要引入少量的prompt参数(少于原来模型参数的1%)进行训练,就可以在很多下游任务上表现出比原来整体微调更好的效果。

从上图我们可以看到VPT和现有别的tuning方式的差别:现在的tuning分为2种类型,第一种就是固定好backbone,微调分类头、微调模型主干的最后k层等;第二种就是在backbone那里,仅微调backbone的bias或者插入Adapter这样的结构。VPT的思想是在输入那里引入prompt参数,把backbone冻住,整个训练过程仅仅需要微调引入的prompt参数和分类头即可。从右图的效果也能看出VPT确实比其他方法要好,甚至比Full(整体微调)更好。

我们来具体看看VPT是怎么做的:

VPT分为deep和shallow两个版本,如果数据不充裕,就使用shallow版本,如果数据充裕,就使用Deep版本。我们可以看到VPT真的很简单,shallow版本只需要在第一层输入层之前,引入一些prompt参数,和CLS和其他输入embedding一起拼接起来输入进第一个Transformer的encoder即可。但是如果数据充裕,那自然我们觉得仅仅在输入引入prompt没法很好的利用这么多数据(说白点就是可学习参数少了),所以在每一层Transformer的输入层前都加入一些prompt参数学习。不管是shallow还是deep版本,都只需要学习输入的prompt参数和分类头。

当然作者还做了一个实验,关于prompt加在哪里比较合适,比如VPT本来的做法是加在embedding层后面,还尝试了Add(在Embedding层后学一个prompt参数直接加在原始像素对应的embedding上),Prepend-pixel(在输入图像块的时候输入prompt参数),concat-channel(在输入图像块的时候,将prompt参数和图像块在通道维concat)。最后结果是在embedding后拼接prompt参数最好。

熟悉nlp prompt learning的小伙伴这时候应该看出来了,视觉的VPT和nlp的P-Tuning真的很像,我们看看P-Tuning v2:

P-Tuning v2固定住了所有其他token对应的参数,每一层输入进transformer的时候只有prompt参数需要训练;而P-Tuning v1则只有transformer第一层对应的prompt需要训练。所以可以说P-Tuning v1对应着VPT-Shallow,P-Tuning v2对应着VPT-Deep。这也给了我们一个提示:nlp的prompt发展了那么久,虽然CV的prompt和nlp的prompt会不一样,但是很多方法我们可以借鉴过来CV,说不定会起到奇效。

参考

https://arxiv.org/pdf/2203.12119.pdf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机视觉漫谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档