Prompt Tuning训练过程

news2024/12/27 12:03:22

目录

0. 入门

0.1. NLP发展的四个阶段:


Prompt工程如此强大,我们还需要模型训练吗? - 知乎

Prompt learning系列之prompt engineering(二) 离散型prompt自动构建

Prompt learning系列之训练策略篇 - 知乎

ptuning v2 的 chatglm垂直领域训练记录_路人与大师的博客-云服务器哪家好

Pretrain + Fine-tuning(Model Tuning):

对于不同的任务,都重新 fine-tune 一个新的模型,且不能共用。但是对于一个预训练的大语言模型来说,这就仿佛好像是对于每个任务都进行了定制化,十分不高效。

Prompt Tuning:

对于不同的任务,仅需要插入不同的prompt 参数,每个任务都单独训练Prompt 参数,不训练预训练语言模型,这样子可以大大 缩短训练时间,也极大的提升了模型的使用率。

0. 入门

0.1. NLP发展的四个阶段

1st阶段 feature engineering

需要相关研究人员或者专业人士利用自己扎实的领域知识从原始数据中定义并提取有用的特征供模型学习。依赖于大量的人工

2nd阶段architecture engineering

如何设计一个合理的网络结果去学习有用的特征,从而减少对人工构建特征的依赖。

3rd阶段objective engineering

Pre-train, Fine-tune,更注重于目标的设计,合理设计预训练跟微调阶段的目标函数,对最终的效果影响深远。前面两个阶段都依赖于有监督学习,但是这个阶段里的预训练可以不需要有监督的数据,极大的降低了对监督语料的依赖。

4th阶段prompt engineering

在特定下游任务下可以通过引入合适的模版(prompt)去重构下游任务,管控模型的行为,实现zero shot或者few shot。一个合适的模版甚至可以让模型摆脱对下游特定任务数据的要求,所以如何构建一个合理有效的prompt成为了重中之重。

  1. 什么是Prompt

Prompt就是提示词的意思,一种为了更好的使用预训练语言模型的知识,采用在输入段添加额外的文本的技术。

  • 目的:更好挖掘预训练语言模型的能力
  • 手段:在输入端添加文本,即重新定义任务(task reformulation)

在NLP中Prompt代表是什么呢?

  • prompt 就是给 预训练语言模型 的一个线索/提示,帮助它可以更好的理解 人类的问题。

例如,下图的BERT/BART/ERNIE 均为预训练语言模型,对于人类提出的问题,以及线索,预训练语言模型可以给出正确的答案。

  • 根据提示,BERT能回答,JDK 是 Oracle 研发的
  • 根据 TL;DR: 的提示,BART知道人类想要问的是文章的摘要
  • 根据提示,ERNIE 知道人类想要问鸟类的能力–飞行

  1. Prompt工作流

Prompt工作流包含一下4部分:

  • Prompt模版 (Template)的构造
  • Prompt答案空间映射(Verbalizer)的构造
  • 文本代入 Template,并且使用晕训练语言模型进行训练
  • 将预测结果映射回label

step1:prompt construction【Template】

首先,我们构造一个模版,模版的作用是将输入和输出进行重新构造,变成一个新的带有mask slots的文本,

  • 定义一个模版,包含2出带填入的slots:【x】和【z】
  • 将【x】用输入文本代入

例如:

输入:x = 我喜欢这个电影。

模版:【x】总而言之,它是一个【z】电影

代入(prompting):我喜欢这个电影。总而言之,它是一个【z】电影

step2:answer construction【verbalizer】

对于构造的prompt,需要知道预测词和label之间的关系,并且z不是任意词,需要一个mapping function将输出词与label进行映射。

例如:

step3:answer prediction【Prediction】

选择合适的预训练模型,进行mask slots 【z】的预测。

例如:

step4:answer-label mapping【mapping】

得到的answer,需要使用verbalizer将其映射回原本的label

例如:fantastic 映射回label

总结:

Terminology

Notion

Example

Input

x

I love this movie

Output(label)

y

Template

-

【x】overall,it was a 【z】movie

Prompt

x'

I love this movie. overall,it was a 【z】movie

Answer

z

fantastic, boring

  1. Prompt-based Training Strategies (训练策略选择)

Prompt-based模型子啊训练中,有多重训练策略,可以选择那些模型部分训练,哪些不训练。

根据训练数据的多少分为:

Zero-shot

对于下游任务,没有任何训练数据

Few-shot

对于下游任务,只有很少的训练数据,例如:100条

Full-shot

有很多训练数据,例如1W多条数据

  1. Prompt Mining

人工构建Prompt的方式有两个弊端,人工构建Prompt和测试Prompt效果耗费时间跟精力,另一方面专业人士也不一定能通过人工的方式构建最优的prompt。为了解决这个问题,自然而然就衍生自动构建prompt的方式,自动构建prompt分为离散型的prompt(prompt可以用具体的字符表示)和 连续型的prompt(prompt由向量替代)

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

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

相关文章

【zookeeper】zookeeper日常运维

本文将分享一些zookeeper在日常使用中一些维护经验。 zookeeper清理快照 脚本或者命令清理 zookeeper长时间运行,快照逐渐增多可能造成服务器磁盘被占满的情况,但我们不能贸然用rm命令删除快照文件,如果直接删完会导致丢失好多数据&#x…

【Yellowbrick】特征可视化分析

Yellowbrick特征可视化分析 ⭐Yellowbrick⭐特征分析可视化⭐Rank1D⭐Rank2D ⭐Yellowbrick Yellowbrick是一个用于可视化机器学习模型和评估性能的Python库。它提供了一系列高级可视化工具,帮助数据科学家和机器学习从业者更好地理解、调试和优化他们的模型。 它在…

【【STM32-29正点原子版本串口发送传输实验】

STM32-29正点原子版本串口发送传输实验 通过串口接收或发送一个字符 例程目的 开发板上我们接入的是实现异步通信的UART接口 USB转串口原理图 我们一步步分析 PA9是串口1 的发送引脚 PA10是串口1 的接受引脚 。因为我们现在只是用到异步收发器功能,所以我们现…

应用可视化流程设计,实现提质增效流程化办公!

如果想要实现提高办公效率的目的,显然采用传统的办公方式是无法实现的。如今,在低代码技术平台深入无纸化办公的当下,应用可视化流程设计软件,可以借助其灵活、易操作、可视化、轻量级等优势特点,助力广大用户实现流程…

图解SQL查询之去重技巧:如何使用DISTINCT对数据进行去重

使用 SQL 的 DISTINCT 关键字,可以去除重复的数据记录,只保留不同的记录。 以下是用到的表。 例如,要获取所有学生所在班级的唯一班级ID。

工业4G路由器的户外组网与无人值守场景应用

工业4G路由器是专为不便电缆布线的工业或日晒雨淋网络不畅的户外环境所设计的网络设备。它能够在没有光纤宽带的情况下使用插卡的方式提供4G或无线WiFi的网络支持。具备工业级防水功能,能够在户外环境下进行网络部署,并实现无人值守运行。工业4G路由器还…

使用Xshell串口通过Ymodem协议发送文件

一. 虚拟串口 首先使用虚拟串口软件Free Virtual Serial Ports(下载链接)创建一对虚拟串口,如图COM1和COM2,然后COM1用Xshell连接,COM2用串口助手连接,二者连接的波特率需一致;Xshell创建串口连…

css中的z-index是什么

css中的z-index是什么 在 CSS 中&#xff0c;有一个属性可以显式控制 HTML 元素的堆叠顺序&#xff1a;z-index。具有较高值的​​元素就会出现在顶部&#xff1a; <style>.box {position: relative;width: 50px;height: 50px;border: 3px solid;background: silver;}.…

【HAL库】STM32F407----内部Flash的读写

【HAL库】STM32CubeMX开发----STM32F407----目录 一、STM32存储器介绍 STM32存储器分为以下两种&#xff1a; 1. 随机存储器—RAM RAM是与CPU直接交换数据的内部存储器&#xff0c;也叫主存&#xff08;内存&#xff09;。它可以随时读写&#xff0c;而且速度很快&#xff0…

记录--移动端的双击事件好不好用?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 2023年了&#xff0c;我不允许还有人不会自己实现移动端的双击事件。 过来&#xff0c;看这里&#xff0c;不足 50 行的代码实现的双击事件。 听笔者娓娓道来。 dblclick js原生有个dblclick双击…

大文件上传demo,前端基于Uppy,后端基于koa

前言 文件上传基本上所有的管理系统之类的项目都有这么一个功能。因为使用了Element&#xff0c;可以方便的使用 其提供的Upload组件&#xff0c;对于普通上传来说基本上就够用了。但是有时候会涉及到大文件上传的需求&#xff0c;这时就会面临一些问题&#xff1a;比如文件上…

使用QPixmap显示图片

在QT中&#xff0c;经常需要我们显示图片&#xff08;作为背景&#xff0c;游戏元素&#xff0c;菜单背景&#xff0c;等待&#xff09;。 本文将用最简洁的方法介绍如何将图片素材显示在指定控件的指定位置。 一.基础知识 QPixmap 该类可以加载&#xff08;load&#xff0…

算法:合并两个有序数组---双指针[1]

1、题目&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&a…

什么是websockret连接

什么是WebSocket WebSocket&#xff0c;是一种网络传输协议&#xff0c;位于 OSI 模型的应用层。可在单个 TCP 连接上进行全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通迅 客户端和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&am…

一种结合白平衡统计信息和曝光信息的软光敏算法专利学习(专利三)

基础理论&#xff1a; 亮度计算&#xff1a; 对于白天模式而言&#xff0c;IR滤光片处于过滤红外光的状态&#xff0c;也就是说&#xff0c;摄像机的感光芯片所感受到的环境光中的红外光几乎为零&#xff1b;而对于夜晚模式而言&#xff0c;IR滤光片处于不过滤红外光的状态&am…

ABB 3BHB002916R0001 UFC721AE模拟输入卡

通道数目&#xff1a; UFC721AE 模拟输入卡通常具有多个输入通道&#xff0c;可以同时监测多个模拟信号。 输入类型&#xff1a; 这种卡片通常支持不同类型的模拟输入&#xff0c;例如电压信号、电流信号或其他传感器信号。 精度&#xff1a; UFC721AE 模拟输入卡通常具有高精…

树莓 LUMA-OLED.EXAMPLE使用

详细介绍在文件目录下的README.rst中 第一步 $ sudo usermod -a -G i2c,spi,gpio pi //好像没什么用 $ sudo apt install python3-dev python3-pip python3-numpy libfreetype6-dev libjpeg-dev build-essential //安装依赖包&#xff0c;树莓派中好像已经有了 $ sudo a…

Seata 笔记

Seata 笔记 分布式事务理论基础 CAP 定理 Consistency 一致性&#xff1a;用户访问分布式系统中的任意节点得到的结果都是一致的Availability 可用性&#xff1a;用户和访问任意健康节点都必须得到响应而不是超时拒绝Partition tolernance 分区容错性&#xff1a;出现独立分…

解决本地jar包导入maven

1、确定是否安装maven 2、输入导入命令 命令说明 <path-to-file>为你jar包所在的路径&#xff08;尽量简单并且不要含中文&#xff09; <group-id>为grouId号&#xff0c;与<artifact-id>组成唯一识别你jar包的坐标&#xff0c;当不在公共资源jar包中&#…

libbpf-bootstrap安卓aarch64适配交叉编译

1.为什么移植 疑惑 起初我也认为&#xff0c;像libbpf-bootstrap这样在ebpf程序开发中很常用的框架&#xff0c;理应支持不同架构的交叉编译。尤其是向内核态的ebpf程序本身就是直接通过clang的-target btf直接生成字节码&#xff0c;各个内核上的ebpf虚拟机大同小异&#xf…