[LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别
一、提示调整(Prompt Tuning)
Prompt Tuning是一种通过改变输入提示语(input prompt)以获得更优模型效果的技术。举个例子,如果我们想将一条英语句子翻译成德语,可以采用多种不同的方式向模型提问,如下图所示:

这个案例采用的是硬提示调优(hard prompt tuning) 方法,因为它直接修改了离散的输入标记(input tokens),而这些标记是不可再分的。
译者注:在自然语言处理领域,一般将文本进行分词处理,将一个句子拆分为一个个离散的单词或标点符号作为input token。每个token代表一个离散的语义单位,模型可以根据这些token进行语义理解和生成回复。
例如,对于句子 "你好,很高兴见到你!",可以将其分解为以下离散的input token:
[ "你", "好", ",", "很", "高兴", "见到", "你", "!" ]
这些离散的token可以作为模型的输入,用于训练或生成对话回复。注意,在使用离散的input token时需要将其转换为对应的向量表示(如词嵌入表示),以便模型能够对其进行处理和学习。
与硬提示调优(hard prompt tuning)相反,软提示调优(soft prompt tuning)方法(Lester等人,2021年[1])将输入标记(input tokens)的嵌入(embeddings)与可通过反向传播算法(backpropagation)进行优化的可训练张量(tensor)连接起来,以提高模型在目标任务上的性能。
伪代码如下所示:

与离散的文本prompt不同,软提示(soft prompts)是通过反向传播算法(back-propagation)获得的,因此可以根据已标注数据集的损失函数反馈(loss feedback)进行调整。
相较于全参数微调(full-finetuning),软提示调优(soft prompt tuning)具有更高的参数效率(more parameter-efficient),但使用软提示调优的模型性能可能稍逊一筹,如下图所示。

二、前缀调优(Prefix Tuning)
目前,有一种特殊的、被独立开发的prompt tuning方式被称为前缀调优(prefix tuning) (Li & Liang 2021[2])。其思想是将可训练的张量(trainable tensors)添加到每个Transformer块中,而非像soft prompt tuning中那样只添加输入嵌入(input embeddings)。同时,通过全连接层(fully connected layers,两层并且具有非线性激活函数的小型多层感知机)获取soft prompt embedding。
译者注: 在使用深度学习模型进行自然语言处理任务时,input embeddings常作为模型的第一层进行使用,将离散的input token转换为连续的向量表示,从而实现对文本的有效建模和处理。
前缀调优技术将预定义的prompt嵌入到模型中,以影响模型的生成行为。这项技术可以改变模型对输入的解释方式,使得模型能够更好地根据prompt生成相应的输出。
下图说明了常规Transformer块和经过前缀(prefix)修改的Transformer块之间的区别。

请注意,在上图中,“全连接层”是指一个小型多层感知机(由两个全连接层和一个非线性激活函数组成)。这些全连接层将soft prompt嵌入到一个与transformer块输入具有相同维度的特征空间(feature space)中,以确保两层连接时的兼容性。
使用Python伪代码,可以说明常规Transformer块和经过前缀(prefix)修改的Transformer块之间的区别:

根据提出prefix tuning的论文,该方法在仅训练0.1%的参数的情况下,实现了与微调所有层相当的模型性能(该实验基于GPT-2模型)。此外,在大多数情况下,prefix tuning的表现甚至优于微调所有层,可能是因为该方法涉及的参数较少,有助于减少对较小目标数据集的过拟合问题。
最后,为了澄清推理过程中soft prompts的使用方式,请注意以下几点:在学习了soft prompts后,在我们针对特定任务对模型进行微调时,我们必须将其(soft prompts)作为前缀(prefix)提供。这样做可以使模型根据特定任务自定义其回答。此外,我们可以拥有多个soft prompts,每个对应于不同的任务,并且在推理过程能够提供相应的前缀,以最好地去处理特定任务。
三、两者区别
在性能方面,soft prompt tuning和prefix tuning孰强孰弱?不幸的是,就性能而言,目前尚无直接比较soft prompt tuning和prefix tuning的研究结果,因为这它们是独立开发并同时发布的方法,各自的论文中未进行直接的比较。此外,在我查阅参数高效型大语言模型(parameter-efficient LLM)的最新文献中,并没有找到同时包含这两种方法的基准测试(benchmark) 。
在prefix tuning这种方法中,通过向输入序列(input sequence)插入特定任务的前缀(a task-specific prefix)来修改模型的更多层、,因此需要微调更多的参数。另一方面,soft prompt tuning仅涉及对input prompt embeddings进行微调,因此更新的参数较少。这使得soft prompt tuning可能比prefix tuning更轻量化(parameter-efficient),但也可能限制了其适应更广泛目标任务的能力。
就性能方面而言,我们可以合理地期望prefix tuning可能表现得更好,因为它能够调整更多的模型参数以便适应更广泛的新任务。然而,这可能是以增加计算资源的消耗和提高模型出现过拟合的风险为代价的。另一方面,soft prompt tuning可能具有更高的计算效率,但由于微调的参数较少,可能会导限制模型的性能。
四、总结
好啦,以上就是Prefix Tuning 和 Prompt Tuning的介绍,结合了伪代码进行辅助讲解,更容易理解这两者的区别,而不是文绉绉的文本介绍,对于面试者来说增加容易理解。
相关文章:

[LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别
一、提示调整(Prompt Tuning) Prompt Tuning是一种通过改变输入提示语(input prompt)以获得更优模型效果的技术。举个例子,如果我们想将一条英语句子翻译成德语,可以采用多种不同的方式向模型提问,如下图所示…...

【CubeMX+STM32】SD卡 U盘文件系统 USB+FATFS
本篇,将使用CubeMXKeil, 创建一个 USBTF卡存储FatFS 的虚拟U盘读写工程。 目录 一、简述 二、CubeMX 配置 SDIO DMA FatFs USB 三、Keil 编辑代码 四、实验效果 串口助手,实现效果: U盘,识别效果: 一、简述 上…...

在JVM的栈(虚拟机栈)中,除了栈帧(Stack Frame)还有什么?
在JVM的栈(虚拟机栈)中,除了栈帧(Stack Frame),还有其他一些与方法调用相关的重要信息。栈的主要作用是存储方法调用的执行过程中的上下文信息,栈帧是其中最关键的组成部分。 栈的组成 栈帧&am…...

# 解析Excel文件:处理Excel xlsx file not supported错误 [特殊字符]
解析Excel文件:处理Excel xlsx file not supported错误 🧩 嘿,数据分析的小伙伴们!👋 我知道在处理Excel文件的时候,很多人可能会遇到这样一个错误:Excel xlsx file not supported。别担心&…...

图片下载不下来?即便点了另存为也无法下载?两种方法教你百分之百下载下来
前言,我要讲的是网站没有禁鼠标右键,可以右键,也可以打开控制台,图片也不用付费这种。 一、用鼠标按住图片直接往桌面拖动,也可以打开开发者工具,在里面往外拖。 二、这个方法很有意思,在电脑的…...

Unity项目实战-Player玩家控制脚本实现
玩家控制脚本设计思路 1. 代码演变过程 1.1 初始阶段:单一Player类实现 最初的设计可能是一个包含所有功能的Player类: public class Player : MonoBehaviour {private CharacterController controller;private Animator animator;[SerializeField] …...

CP AUTOSAR标准之ICUDriver(AUTOSAR_SWS_ICUDriver)(更新中……)
1 简介和功能概述 该规范指定了AUTOSAR基础软件模块ICU驱动程序的功能、API和配置。 ICU驱动程序是一个使用输入捕获单元(ICU)来解调PWM信号、计数脉冲、测量频率和占空比、生成简单中断和唤醒中断的模块。 ICU驱动程序提供服务 信号边缘通知控制唤醒中断周期信号时间测…...

Python3 ImportError: cannot import name ‘XXX‘ from ‘XXX‘
个人博客地址:Python3 ImportError: cannot import name XXX from XXX | 一张假钞的真实世界 例如如下错误: $ python3 git.py Traceback (most recent call last):File "git.py", line 1, in <module>from git import RepoFile &quo…...

[学习笔记] Kotlin Compose-Multiplatform
Compose-Multiplatform 原文:https://github.com/zimoyin/StudyNotes-master/blob/master/compose-multiplatform/compose.md Compose Multiplatform 是 JetBrains 为桌面平台(macOS,Linux,Windows)和Web编写Kotlin UI…...

【R语言】t检验
t检验(t-test)是用于比较两个样本均值是否存在显著差异的一种统计方法。 t.test()函数的调用格式: t.test(x, yNULL, alternativec("two.sided", "less", "greater"), mu0, pairedFALSE, var.equalFALSE, co…...

flutter ListView Item复用源码解析
Flutter 的 ListView 的 Item 复用机制是其高性能列表渲染的核心,底层实现依赖于 Flutter 的渲染管线、Element 树和 Widget 树的协调机制。以下是 ListView 复用机制的源码级解析,结合关键类和核心逻辑进行分析。 1. ListView 的底层结构 ListView 的复…...

Spring Boot 配置 Mybatis 读写分离
JPA 的读写分离配置不能应用在 Mybatis 上, 所以 Mybatis 要单独处理 为了不影响原有代码, 使用了增加拦截器的方式, 在拦截器里根据 SQL 的 CRUD 来路由到不同的数据源 需要单独增加Mybatis的配置 Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) t…...

网络初识-
网络的相关概念 一、局域网和广域网 将各种计算机、外部设备等相互连接起来,实现在这个范围内数据通信和资源共享的计算机网络。它的覆盖范围通常在几百米到几公里之内。例如,一个小型企业的办公室,通过交换机将多台电脑连接在一起…...

DNS污染:网络世界的“隐形劫持”与防御
在互联网的底层架构中,DNS(域名系统)如同数字世界的“导航员”,将用户输入的域名翻译成机器可读的IP地址。然而,DNS污染(DNS Poisoning)正像一场无声的“地址篡改”危机,威胁着全球网…...

MQTT(Message Queuing Telemetry Transport)协议(三)
主题是什么 2. TCP 协议封装 tcp.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>// 建立 TCP 连接 int tcp_connect(const char *server_ip, int s…...

多核cpu与时间片多线程的问题
在多核处理器中,每个核心可以独立运行一个线程。操作系统负责管理和调度这些线程,以确保高效利用处理器资源。下面详细解释如何获取时间片以及四个线程如何在四个核心上同时工作。 ### 时间片和调度 #### 1. 时间片(Time Slice)…...

电脑出现蓝屏英文怎么办?查看修复过程
电脑出现蓝屏英文是一种常见的电脑故障,它通常表示电脑遇到了严重的错误,需要停止运行以防止进一步的损坏。电脑蓝屏英文的原因可能有很多,比如硬件故障、驱动程序错误、系统文件损坏、病毒感染等。那么,当电脑出现蓝屏英文时&…...

安卓基础(第一集)
SharedPreferences(本地存储简单数据) 在 Android 中,SharedPreferences 用于存储小型数据。 (1)存储数据 // 获取 SharedPreferences 对象 SharedPreferences sharedPreferences getSharedPreferences("MyPre…...

【从零开始入门unity游戏开发之——C#篇56】C#补充知识点——模式匹配
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…...

【数据可视化-16】珍爱网上海注册者情况分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

c/c++蓝桥杯经典编程题100道(21)背包问题
背包问题 ->返回c/c蓝桥杯经典编程题100道-目录 目录 背包问题 一、题型解释 二、例题问题描述 三、C语言实现 解法1:0-1背包(基础动态规划,难度★) 解法2:0-1背包(空间优化版,难度★…...

电赛DEEPSEEK
以下是针对竞赛题目的深度优化方案,重点解决频率接近时的滤波难题和相位测量精度问题: 以下是使用NI Multisim 14.3实现本项目的详细解决方案: 一、基础要求实现方案(模块化设计) 1. 双频信号发生电路 电路结构&…...

VSOMEIP ROUTING应用和CLIENT应用之间交互的消息
#define VSOMEIP_ASSIGN_CLIENT 0x00 // client应用请求分配client_id #define VSOMEIP_ASSIGN_CLIENT_ACK 0x01 // routing应用返回分配的client_id #define VSOMEIP_REGISTER_APPLICATION 0x02 // client应用注册someip应用 #…...

HTML之基本布局div|span
HTML基本布局使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width<device-width>, initial-scale1.0"><title>布局</title> <…...

Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)
绪论 每日激励:“唯有努力,才能进步” 绪论: 本章是MySQL中常见的函数,利用好函数能很大的帮助我们提高MySQL使用效率,也能很好处理一些情况,如字符串的拼接,字符串的获取,进制…...

【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列
目录 一.TTL ???1.设置消息的TTL 2.设置队列的TTL 3.俩者区别? 二.死信队列 定义: 消息成为死信的原因: 1.消息被拒绝(basic.reject 或 basic.nack) 2.消息过期(TTL) 3.队列达到最大长度? …...

机器学习赋能的智能光子学器件系统研究与应用
机器学习赋能的智能光子学器件系统研究与应用 时间: 2025年03月29日-03月30日 2025年04月05日-04月06日 机器学习赋能的光子学器件与系统:从创新设计到前沿应用 课程针对光子学方面的从业科研人员及开发者,希望了解和实践在集成光学/空间…...

尚硅谷课程【笔记】——大数据之Linux【三】
课程视频链接:尚硅谷大数据Linux课程 七、定时任务调度 任务调度:指系统在某个时间执行的特定的命令或程序。 1)系统工作:有些重要的工作必须周而复始地执行。 2)个别用户工作:用户可能希望在某些特定的时…...

Visual Studio踩过的坑
统计Unity项目代码行数 编辑-查找和替换-在文件中查找 查找内容输入 b*[^:b#/].*$ 勾选“使用正则表达式” 文件类型留空 也有网友做了指定,供参考 !*\bin\*;!*\obj\*;!*\.*\*!*.meta;!*.prefab;!*.unity 打开Unity的项目 注意:只是看࿰…...

教程 | MySQL 基本指令指南(附MySQL软件包)
此前已经发布了安装教程安装教程,现在让我们来学习一下MySQL的基本指令。 一、数据库连接与退出 连接本地数据库 mysql -uroot -p # 输入后回车,按提示输入密码(密码输入不可见)若需隐藏密码显示,可使用࿱…...