Advertisement

Visual Prompt Tuning 阅读笔记

阅读量:

Visual Prompt Tuning

目录

  • Visual Prompt Tuning

  • 目录

  • 论文介绍

    • 一句话介绍
    • 个人评价(1-10分)
  • Introduction

  • Related Work

  • Approach

  • Experiments

  • Analysis and Discussion

  • Appendix

论文介绍

Visual Prompt Tuning

论文作者:Menglin Jia

通讯机构:1-Cornell University 2-Meta AI

发布信息:ECCV2022

关键词:fine-tuning, prompt, transformer in vision

代码:https://github.com/kmnp/vpt

一句话介绍

As an effective alternative to full fine-tuning for large-scale transformer models in vision, Vision Prompt Tuning (VPT) use only a small amount (less than 1%) of trainable parameters and even outperforms full fine-tuning in many cases.

个人评价(1-10分)

易读性:9

逻辑性:8

美观度:7

丰富度:9

感受:创新性地提出一个微调的方向,即完全冻结主干参数,添加额外的可学习参数。相比于依赖主干调整的方法,自由度更高,但作者只测试了图像分类和分割任务。

Introduction

针对将大模型应用于下游任务的挑战,如果使用full fine-tuning,针对每一个单独的任务,需要存储和另外复制主干参数,这样做消耗大且往往不可行。特别是transformer架构比卷积大很多,问题更严重。如何有效性和效率?一种简单的解决方法是只微调参数的一部分子集,但通常准确率会低于full fine-tuning。

面对以上问题,作者不再关注模型本身预训练过的参数的调整,而是关注模型的输入 ,提出了VPT,针对不同任务在输入空间引入少量可学习的参数,冻结transformer主干,这些参数与线性头一起学习。

预训练的ViT作为主干,24个跨越不同领域的下游识别任务中:

  • 有效性:VPT击败了所有其他迁移学习基线,甚至在20种情况下超过了完全微调。
  • 效率:存储非常少的参数(少于主干参数的1%)

结论:VPT是适应不断增长的vision transformer backbone的最有效的方法之一。

transformer如何有效的适应不同的视觉问题?

transfer learning(希望增加一点介绍,讨论和研究目标的关系):在卷积网络广泛研究,引入技术如side tuning , residual adapter , bias tuning等(我都不太清楚),但在transformer关注较少,作者将关注 Adapters 和BitFit,作为基准测试 。Adapter是在每个transformer layer 中插入额外的轻量模块。[1] 没有插入新的模块,而是提出在微调卷积网络时更新偏差项并冻结其余的主干参数,BitFit将该技术应用于transformer,并验证了有效性。

prompting最初是指输入文本的语言指令,帮助预训练的语言模型“理解”任务。通过手动选择提示,GPT-3显示出对下游迁移学习任务的强泛化。最近的工作提出将提示视为任务特定的连续向量,并在微调过程中通过梯度直接进行优化,即提示调优虽然提示调优也应用于视觉语言模型,但仍然局限于文本编码器的输入。

基于此,作者提问:同样的方法可以成功地应用于图像编码器吗?作者计划验证视觉提示的普遍性和可行性。(可以扩展一些转换的思路分析,比如分析一些将提示调优用于视觉语言模型的例子,分析可以从哪里入手转换)

总结:对背景的分析有些简略。可加入Adapters 和BitFit原理图,提示调优应用于语言、视觉、语言视觉的区别图。

Approach

提出两个VPT变体,deep和shallow,deep为每一层提供可学习的参数,而shallow只为第一层提供。除了提供的可学习参数P ,其他所有参数冻结。

作者提出VPT对多种下游任务都是可用的,只需要训练不同的P。但这里使用的是基于ViT的模型,面向图像分类任务,在附录中作者将VPT应用于更多的vision 任务。
在这里插入图片描述

Experiments

实验设计:模型主干有ViT和Swin两种,都在 ImageNet-21k上预训练。(更多细节在附录A)

基准:

  • Full fine-tuning
  • 关注分类头:用线性层作为分类头;微调最后k层,冻结其他层,重新定义了主干头和分类头的边界;使用具有k层的多层感知器(MLP)作为分类头。
  • 更新子集骨干参数或向骨干参数添加新的可训练参数的方法:sidetune;bias;Apdater

下游任务数据集设定:

  • FGVC数据集的5个细粒度的视觉分类任务,如果只有train和test,将train set 取10%做val
  • VTAB-1k数据集有19种视觉分类任务,被分成三组:使用标准相机捕获的自然图像、通过特殊设备捕获的图像、需要几何理解的结构化任务。每个任务有1000个训练示例,使用提供的train(800-200)确定超参数,使用完整的训练数据最终的评估。

实验结果:Table1
在这里插入图片描述

结论:

  • 24个任务中有20个,VPT-Deep优于Full,同时使用更少的参数。与NLP中类似研究对比,NLP中没有超过完全微调
  • VPT-Deep的性能优于所有其他测试的参数微调方法
  • VPT-Shallow在存储限制的情况下也是一个不错的选择
  • 训练数据大小对FGVC任务中准确性的影响,fig3显示VPT-deep在整个训练数据大小上仍然始终优于全面的性能。
  • VPT在不同的主干尺度上,fig4,除了中间任务,在其他两个任务中,VPT表现均优于全微调
  • VPT对Swin(Table2):Prompt参数会在本地窗口中参与,但在补丁合并阶段被忽略。尽管在全微调获得的总体准确率最高,VPT继续优于其他参数高效的微调方法。在Natural任务中,VPT-deep相对于VPT-浅层的优势减少了。
    在这里插入图片描述

上图曲线仍上升,未平稳
在这里插入图片描述

想法:模型主干的种类只有ViT和Swin,作者想验证的是该方法对vision transformer的有效性,这个方向变体很多,可以解释一下这两个模型的可代表性。从表中‘Scope’这一项可以看出只有VPT不动主干参数,是否有其他不改主干参数的方法。从fig4中不同图像分类任务的表现,可以看见在Special任务中全部微调微微超过VPT,思考是否源于预训练数据集对下游任务精度的影响,目前只使用了一种数据集预训练,考虑增加预训练数据集的种类。(后续有更换数据集预训练模型)

额外的实验设计:VPT在ViT-Base上的变体,将参数在不同位置插入,不同prompt长度。

  • Add:表现均低于默认设计
  • 针对VPT-shallow的变体,表现进一步下降
  • 最佳提示长度因任务而异,值得注意的是,即使只有一个提示,VPT-deep仍然显著优于其他2个基线,与全微调相比仍有竞争力
  • fig7表明VPT的表现一般与提示深度呈正相关。然而,如果我们从上到下插入提示,准确率就会下降,这表明早期变压器层的提示比后期层的提示更重要。
  • 输出:不适用分类头,使用对embed的输出池化,有三种方式。使用图像的池化,结果基本保持不变。但如果池化涉及到提示,那么精度会下降。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Analysis and Discussion

额外工作:将VPT应用于语义分割; 将VPT应用于其他数据集预训练的模型,VPT性能下降,原因未知;将VPT应用于卷积网络,由于无法保证在网络中提供的参数位置不变,所以将其添加在输入图像的像素值中(这种方法在 adversarial attack 文献中讨论过),相比于全微调,模型主干越大VPT表现越好。

提出问题:具有域转移的vision transformer的微调动态(更换预训练模型);如何有效地转移到更广泛的视觉识别任务。

Appendix

待看

参考

[1] Cai, H., Gan, C., Zhu, L., Han, S.: Tinytl: Reduce memory, not parameters for
efficient on-device learning. NeurIPS 33, 11285–11297 (2020)

全部评论 (0)

还没有任何评论哟~