【提示学习论文】BlackVIP: Black-Box Visual Prompting for Robust Transfer Learning论文原理

BlackVIP: Black-Box Visual Prompting for Robust Transfer Learning

BlackVIP:稳健迁移学习的黑盒视觉提示

问题

  • 黑盒白盒?
    黑盒和白盒的概念与对预训练模型内部参数的了解程度相关。黑盒指的是对预训练模型的参数和结构缺乏详细了解,通常只能通过使用其API或者专有软件进行模型调用,而无法直接访问模型内部的参数。相反,白盒则指的是对模型的参数和结构有充分的了解,可以直接访问和修改模型的参数。

在这里插入图片描述

  • FT和VP?
    FT(Fine-Tuning)和VP(Visual Prompting)的区别是预训练模型参数的更新方式和参数数量不同
    FT(Fine-Tuning):通过反向传播算法直接更新整个预训练模型的参数,以适应特定的下游任务(涉及整个预训练模型的参数)
    VP(Visual Prompting):在输入像素空间中添加少量的参数作为视觉提示,来引导预训练模型的适应(涉及添加的少量提示参数)

0 Abstract

在 BlackVIP 中,VP 是由协调器(Coordinator)设计的,并且通过黑盒优化算法(SPSA-GC)来进行优化。

1 Introduction

现实世界中的许多AI应用程序都是作为API和专有软件服务的,由于商业侵犯模型所有权问题,不透露实现级别的信息或完整的参数。BlackVIP设计了与原始给定图像相同形状的提示,以覆盖整个图像视图。

  • 我们提出了coordinator协调器,这是一种非对称的自编码器风格的网络,它接收原始图像并为每个单独的图像产生相应的视觉提示

  • 优化重新参数化的模型而不是提示本身:不优化提示,优化产生提示的coordinator

  • 采用SPSA-GC,基于扰动参数的输出差异估计目标黑盒模型的梯度,然后以基于动量的前瞻方式校正初始估计值。

  • 通过对参数进行随机扰动,观察模型输出的变化来估计目标模型的梯度,不需要直接访问目标模型的内部结构或参数,只通过观察输出的变化来推断梯度信息。

2 Related work

ZOO是一种无导数优化算法,主要通过对输入进行随机扰动,并观察输出的变化来推断目标函数的梯度信息,从而实现优化。

3 Preliminary

4 Methodology

在这里插入图片描述

4.1 Coordinator

  • 一个冻结的编码器 f ( ⋅ ) f(⋅) f(),在ImageNet 上进行了预训练
  • 一个轻量级的可学习解码器 g ϕ d ( ⋅ ) g_{ϕd}(⋅) gϕd()组成
    在这里插入图片描述
  • 构造带提示的图像
    在这里插入图片描述
  • 视觉提示 h ϕ ( x ) = g ϕ d hϕ(x)=gϕd hϕ(x)=gϕd(图像 x x x的特征向量,提示触发向量)
  • 带有提示的图像 x h e a d = c l i p x_{head}=clip xhead=clip( x x x原始输入图像+ ϵ ϵ ϵ超参数*视觉提示 h ϕ ( x ) hϕ(x) hϕ(x))

4.2 端到端的黑盒视觉提示

4.2.1 SPSA

在这里插入图片描述

  • L ( ⋅ ) L(⋅) L() 是待优化的损失函数
  • ϕ i ϕi ϕi表示第 i i i 步的参数向量
  • Δ i Δi Δi是一个随机扰动向量
  • a i ai ai是正衰减序列,可以类比学习率,是一个正数序列,控制着每次参数更新的步长大小,并且随着迭代次数增加而逐渐减小。
    SPSA 使用两个相反方向的扰动来估计梯度的差异,并根据该估计进行参数更新。这种方法在高维空间中能够高效地估计梯度,因此在黑盒优化等问题中得到了广泛应用。

4.2.2 带梯度矫正的SPSA

在这里插入图片描述

在这里插入图片描述

5 Results

实验设置

在这里插入图片描述
为了研究提示设计的重要性,我们考虑了两个合成数据集:Biased MNIST和Loc-MNIST。

优化算法的比较

在这里插入图片描述
SGD-NAG:使用真梯度
SPSA-GC:比Random Gradient- free (RGF)更快更稳定

分布移位的鲁棒性

在这里插入图片描述

合成数据集的即时可视化,与VP不同,我们的BlackVIP设计了输入依赖的条件提示,有助于在分布/对象位置转移下的鲁棒性。

6 Conclusion

我们开创了黑盒视觉提示,用于预训练模型的现实和稳健适应。我们提出了BlackVIP,它将输入空间提示重新参数化为条件生成网络协调器,并配备了我们的新ZOO算法SPSA-GC,而不是反向传播。BlackVIP不需要模型架构或参数的任何可访问性,并有效地将预训练的模型适应目标下游任务。大量的实证结果表明,BlackVIP在最小参数、最小内存容量、最小API查询和最小成本的情况下,持续提高了少量射击适应、分布移动和对象位置移动的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981208.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python自学之路--001:Python + PyCharm安装图文详解教程

目录 1、概述 2、Python解释器 2.1、下载 2.2、Python安装 2.3、Python环境变量配置,必选项 3、PyCharm安装 3.1、PyCharm下载 3.2、PyCharm安装 4、建一个Hello World 5、Phcarm设置 5.1、Phcarm汉化 5.2、Phcarm工具栏显示在顶部 5.3、Phcarm通过pip安…

[2021年最新]国产时序性数据TDenige入门

一、TDenige简介 TDengine:是涛思数据面对高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,它不依赖任何第三方软件,也不是优化或包装了一个开源的数据库或流式计算产品,而是在吸取众多传统关系型数据库、NoS…

25计算机考研院校数据分析 | 复旦大学

复旦大学(fudan University),简称"复旦”,位于中国上海,由中华人民共和国教育部直属,中央直管副部级建制,位列985工程、211工程、双一流A类,入选“珠峰计划"、"111计划""2011计划…

zabbix自动发现和自动注册

一、zabbix自动发现 1.1 确保客户端上的zabbix-agent2服务器状态正常 1.2 在web页面删除原有的客户端主机 1.3 在服务端和客户端上配置hosts 1.4 web端配置自动发现 二、zabbix自动注册 2.1 环境配置 2.2 修改zabbix-agent2配置文件 过滤非#或非¥开头的内容 2.3 we…

应用实战|只需几步,即可享有外卖订餐小程序

本示例是一个简单的外卖查看店铺点菜的外卖微信小程序,小程序后端服务使用了MemFire Cloud,其中使用到的MemFire Cloud功能包括: 其中使用到的MemFire Cloud功能包括: 云数据库:存储外卖微信小程序所有数据表的信息。…

解决Linux CentOS 7安装了vim编辑器却vim编辑器不起作用、无任何反应

文章目录 前言一、解决vim不起作用(卸载重新安装)1.重新安装vim2.测试vim是否能正常使用 二、解决vim: error while loading shared libraries: /lib64/libgpm.so.2: file too short报错三、解决vim编辑器不能使用方向键和退格键问题 remove vim-common …

【S32DS RTD实战】-1.5-S32DS使用Post-Build调用第三方插件-自动对生成的s19,Hex,Bin文件二次编辑

<--返回「Autosar_MCAL高阶配置」专栏主页--> 案例背景&#xff1a; 在《【S32DS RTD实战】-1.3-S32K3工程生成S19&#xff0c;BIN&#xff0c;Hex文件&#xff0c;以及Post-build steps的妙用_s32ds如何生成s19或hex文件-CSDN博客https://blog.csdn.net/qfmzhu/articl…

C++“流”风格日志系统实战-课程简介

一个能快速提升C复杂代码设计的学习项目&#xff0c;一个能迅速让C面试官会心一笑的简历项目&#xff0c;一个能在实际项目中使用的项目……学习什么是流&#xff1f;如何利用抽象层面的流编写适用面更广的代码&#xff1f; 每天在用的cout和cin 它们是什么类型&#xff1f;最后…

HDMI的识别过程

HDMI可分为发送设备和接收设备&#xff0c;具体的识别过程见下&#xff1a; (1).HDMI发送设备给HDMI接收设备提供5V的电源&#xff0c;其电流应小于50mA; (2).HDMI检测到5V电源后&#xff0c;HDMI接收设备给HDMI发送设备提供HPD信号&#xff0c;其电压为5V&#xff1b; (3).HDM…

Java | Leetcode Java题解之第45题跳跃游戏II

题目&#xff1a; 题解&#xff1a; class Solution {public int jump(int[] nums) {int length nums.length;int end 0;int maxPosition 0; int steps 0;for (int i 0; i < length - 1; i) {maxPosition Math.max(maxPosition, i nums[i]); if (i end) {end maxP…

将本地项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮&#xff0c;新建一个项目 新建空白项目 项目名称与本地新建项目名称相同&#xff0c;其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下&#xff0c;右击 git bash here打开命令窗口 初始化…

场景 - 分库分表

分什么 数据量大分表&#xff0c;并发大分库 分表字段如何选择 如果对交易订单进行分表&#xff0c;可以选择的东西很多&#xff0c;比如说商户id&#xff0c;用户id&#xff0c;地区等等 分表的时候要考虑到数据倾斜问题 数据倾斜 比如说按商户号进行分表&#xff0c;一共…

Java基础入门1-2

跟着韩顺平老师的30天入门java课程学习&#xff0c;整理一下自己的笔记&#xff0c;方便回顾知识点和复习。 另附上视频链接&#xff1a;0034_韩顺平Java_变量原理_哔哩哔哩_bilibili 第一章&#xff1a;学习前的了解 第二章&#xff1a;Java概述 2.1什么是程序&#xff1f…

KPI与OKR的区别:深入解析与案例应用

一、KPI&#xff1a;量化与结果的导向 KPI是一种基于量化指标的绩效管理方法&#xff0c;强调对关键业务成果的衡量和评估。它通常关注那些可以直接影响企业战略目标达成的具体指标&#xff0c;如销售额、客户满意度等。KPI的优点在于其明确性和可衡量性&#xff0c;有助于企业…

简化图卷积 笔记

1 Title Simplifying Graph Convolutional Networks&#xff08;Felix Wu、Tianyi Zhang、Amauri Holanda de、 Souza Jr、Christopher Fifty、Tao Yu、Kilian Q. Weinberger&#xff09;【ICML 2019】 2 Conclusion This paper proposes a simplified graph convolutional m…

Oracle 第二章

1- 排序查询 select * from 表名 order by 字段; desc &#xff1a;从大到小排序 默认是从小到大排序 2- 基于伪列的查询 ROWID 和 ROWNUM rowid &#xff1a; 唯一的编号 select rowid,表名.* from 表名 where ROWID AAAStKAANAAAAC/AAC; &#xff08;rowid号&#…

ROS 话题订阅模型之自定义消息类型 C++实现

ROS 话题订阅模型之自定义消息类型 1.自定义消息类型好处 ROS提供了许多标准的消息类型&#xff0c;如 std_msgs/String、sensor_msgs/Image 等&#xff0c;涵盖了很多常见的数据类型和传感器数据。但是&#xff0c;在实际的开发中&#xff0c;我们经常会遇到需要传输的数据类…

SD-WAN多分支组网案例分享

随着企业规模持续扩大&#xff0c;业务版图日益多元&#xff0c;多分支组网已成为企业网络建设的核心议题。如何构建高效、安全且灵活的网络连接&#xff0c;成为企业急需解决的关键问题。近些年&#xff0c;SD-WAN技术的崭露头角&#xff0c;为企业带来了前所未有的解决方案。…

在浏览器输入网址,Enter之后发生了什么?

在浏览器输入网址&#xff0c;Enter之后发生了什么&#xff1f; 很多八股文会给出&#xff1a; 1. DNS Resolution2. Establishing a Connection3. Sending an Http Request4. Receiving the HTTP Response5. Rendering the Web Page 但今天我斗胆插入第0.9步URL Parsing&#…

为什么堆排序的时间复杂度是O(N*logN)?

目录 前言&#xff1a; 堆排序&#xff08;以排升序为例&#xff09; 步骤&#xff08;用大根堆&#xff0c;倒这排&#xff0c;排升序&#xff09;&#xff1a; 1.先把要排列的数组建立成大根堆 2.堆顶元素&#xff08;82&#xff09;和最后一个元素交换&#xff08;2&…