大模型笔记:Prompt tuning

1  NLP模型的几个阶段

1.1 第一阶段(在深度学习出现之前)

  • 通常聚焦于特征工程(feature engineering)
  • 利用领域知识从数据中提取好的特征

1.2 第二阶段(在深度学习出现之后)

  • 特征可以从数据中习得——>研究转向了结构工程(architecture engineering)
  • 通过设计一个合适的网络结构,学习好的特征

1.3 第三阶段(预训练 + 微调)

  • 用一个固定的结构预训练一个语言模型(language model, LM)
    • 预训练的方式就是让模型补全上下文(比如完形填空)
    • 预训练不需要专家知识,因此可以在网络上搜集的大规模文本上直接进行训练
  • 这一阶段的一个研究方向是目标工程(objective engineering)
    • 为预训练任务和微调任务设计更好的目标函数
    • 让下游任务的目标与预训练的目标对齐是有利的
    • 几种经典预训练任务
      • Masked Language Modeling(MLM)
        • 随机选取一个固定长度的词袋区间,然后挖掉中心部分的词,让模型预测该位置的词
      • Next Sentence Prediction(NSP)
        • 给定两个句子,来判断他们之间的关系
        • 存在三种关系
          • entailment(isNext)
            • 紧相邻的两个句子
          • contradiction(isNotNext)
            • 这两个句子不存在前后关系,例如两个句子来自于不同的文章
          • Neutral
            • 中性关系,当前的两个句子可能来自于同一篇文章,但是不属于isNext关系的

1.4 第四阶段(预训练 + Prompt Tuning)

  • 通过添加模板的方法来避免引入额外的参数,从而让语言模型可以在小样本(Few-shot)或零样本(Zero-shot)场景下达到理想的效果

2 prompt tuning

  • Prompt的目的是将Fine-tuning的下游任务目标转换为Pre-training的任务

2.1 举例说明

给定一个句子

[CLS] I like the Disney films very much. [SEP]

  • 传统的Fine-tuning方法
    • 通过BERT的Transformer获得 [CLS]表征
    • 之后再喂入新增加的MLP分类器进行二分类,预测该句子是积极的(positive)还是消极的(negative)
    • 需要一定量的训练数据来训练
  • Prompt-Tuning
    • 构建模板(Template Construction)
      • 通过人工定义、自动搜索、文本生成等方法,生成与给定句子相关的一个含有[MASK]标记的模板
      • 拼接到原始的文本中,获得Prompt-Tuning的输入
        • [CLS] I like the Disney films very much. [SEP] It was [MASK]. [SEP]
      • 将其喂入BERT模型中,并复用预训练好的MLM分类器,即可直接得到[MASK]预测的各个token的概率分布
    • 标签词映射(Label Word Verbalizer)
      • ​​​​​​​因为[MASK]部分我们只对部分词感兴趣【比如 positive/negative】
      • ——>需要建立一个映射关系
        • 如果[MASK]预测的词是“great”,则认为是positive类
        • 如果是“terrible”,则认为是negative类
    • 训练
      • ​​​​​​​​​​​​​​只对预训练好的MLM head进行微调

3 PET(Pattern-Exploiting Training)

《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》(EACL2021)

3.1 pattern 和verbalizer

3.1.1 Pattern(Template) 

  • 记作T  ,即上文提到的模板,为额外添加的带有[mask]标记的短文本
  • 通常一个样本只有一个Pattern(因为我们希望只有1个让模型预测的[mask]标记)
  • 不同的任务、不同的样本可能会有其更加合适的pattern
    • ——> 如何构建合适的pattern是Prompt-Tuning的研究点之一 

3.1.2 Verbalizer

  • 记作V  ,即标签词的映射,对于具体的分类任务,需要选择指定的标签词(label word)。
  • 例如情感分析中,期望Verbalizer可能是
    • V(positive)=great; V(negative)=terrible  
    • (positive和negative是类标签)
  •  如何构建Verbalizer是另一个研究挑战 

上述两个组件被称为Pattern-Verbalizer-Pair(PVP),一般记作P=(T,V) 

3.2 Patterns Ensembling 

  • 一般情况下,一个句子只能有一个PVP
  • 这可能并不是最优的,是否可以为一个句子设计多个不同的PVP呢?
  • ——>Prompt-Tuning的集成
    • Patterns Ensembling :同一个句子设计多个不同的pattern

3.3 Verbalizers Ensembling

  • 在给定的某个Pattern下,并非只有1个词可以作为label word。
    • 例如positive类,则可以选择“great”、“nice”、“wonderful”。当模型预测出这三个词时,均可以判定为positive类。
  • 在训练和推理时,可以对所有label word的预测概率进行加权或投票处理,并最后获得概率最大的类

3.4 PVPs Ensembling(Prompt Ensembling)

  • Pattern和Verbalizer均进行集成,此时同一个句子有多个Pattern,每个Pattern又对应多个label word

3.5  选择不同的Pattern和Verbalizer会产生差异很大的结果

4 挑选合适的pattern

  • 从3.5可以看出,不同的pattern对结果影响很大,所以如何挑选合适的pattern,是近几年学术界的一个热点
    • 离散的模板构建(Hard Prompt)
      • ​​​​​​​直接与原始文本拼接显式离散的字符,且在训练中这些离散字符的词向量(Word Embedding) 始终保持不变
      • ——>很难寻找到最佳的模板
      • ——>效果不稳定
    •  连续的模板构建(Soft Prompt)
      • 让模型在训练过程中根据具体的上下文语义和任务目标对模板参数进行连续可调
离散的模板构建

Hard Prompt
启发式法(Heuristic-based Template)通过规则、启发式搜索等方法构建合适的模板
生成(Generation)根据给定的任务训练数据(通常是小样本场景),生成出合适的模板
连续的模板构建

​​​​​​​Soft Template
词向量微调(Word Embedding)
  • 显式地定义离散字符的模板,但在训练时这些模板字符的词向量参与梯度下降
  • 初始定义的离散字符用于作为向量的初始化
伪标记(Pseudo Token)不显式地定义离散的模板,而是将模板作为可训练的参数

4.1 soft prompt

The Power of Scale for Parameter-Efficient Prompt Tuning, EMNLP 2021

  • 记Y是LLM的输出,X是输入token,θ是Transformer的权重参数
    • NLP中的文本生成任务可以表示为P_\theta(Y|X)
  • 之前的hard Prompting在生成 Y 时向模型添加额外信息以作为条件:
    • 这一过程可以表示为P_\theta(Y|[P;X])
    • 也就是将prompt的语句和输入token 连接在一起,输入给pre-train 模型,在pre-train 模型中,用它的参数生成 embedding,经过一系列的流程得到对应的输出
  • soft prompt/prompt tuning 使用一组特殊Token作为prompt
    • 给定一系列 n 个Token,\{x_1,x_2,\cdots,x_n\}
      • 第一步是将这些Token向量化,形成一个矩阵X_e \in R^{n \times e} 
        • 【使用pre-train 模型的参数】
        • (e是向量空间的维度)
      • soft prompt以参数P_e\in R^{p\times e}的形式表示
        • (p是prompt的长度)
      • 将prompt与向量化后的输入连接起来,形成一个整体矩阵[P_e;X_e] \in R^{(p+n) \times e}
      • 该矩阵接着正常地通过编码器-解码器流动
      • 模型旨在最大化 P_{\theta,\theta_P}(Y|[P_e;X_e])的概率,但仅更新prompt参数θP

参考内容:一文详解Prompt学习和微调(Prompt Learning & Prompt Tuning)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hololens2远程音视频通话与AR远程空间标注,基于OpenXR+MRTK3+WebRTC实现

Hololens2远程音视频通话与AR远程空间标注 使用Unity2021.3.21版本开发,基于OpenXRMRTK3.0WebRTC实现。 (1)通过视频获取视频帧的矩阵的方法可以参考:https://learn.microsoft.com/zh-cn/windows/mixed-reality/develop/advanced…

深度学习-多尺度训练的介绍与应用

一、引言 在当今快速发展的人工智能领域,多尺度训练已经成为了一种至关重要的技术,特别是在处理具有复杂结构和不同尺度特征的数据时。这种技术在许多应用中发挥着关键作用,例如图像识别、自然语言处理和视频分析等。 多尺度训练的定义 多尺…

pandas(day8 市场分析案例)

一. 相关知识 数据报告 : - 传统零售 : - 代理商 : 压货 挣差价 - 层层分级别 - 网络零售 : - 代运营 : 了解代理品牌 了解品类市场 竞品 - 数据报告 PPT(活动) (日报EXCEL 周报 月报) 二. 读取数据(循环一次性读取下列文件) .\\灭鼠杀虫剂市场近三年交易额.xlsx.\\电蚊香套装…

scFed:联邦学习用于scRNA-seq分类

scRNA-seq的出现彻底改变了我们对生物组织中细胞异质性和复杂性的理解。然而,大型,稀疏的scRNA-seq数据集的隐私法规对细胞分类提出了挑战。联邦学习提供了一种解决方案,允许高效和私有的数据使用。scFed是一个统一的联邦学习框架&#xff0c…

自动化测试-web

一、自动化测试理论: UI: User Interface (用户接口-用户界面),主要包括:app 和webUI自动化测试:使用工具或代码执行用例的过程什么样的项目适合做自动化: 需要回归测试项目(甲方自…

基于令牌桶算法对高并发接口的优化

业务背景 项目中有一个抽奖接口,此接口需要处理高并发问题以及使用脚本作弊的问题。 本文主要探讨如何最大程度地减少脚本作弊行为对抽奖业务的影响。 设计思路 如何减少脚本作弊行为对抽奖业务的影响 使用令牌桶算法,对频率过高的用户请求进行拦截 …

基于ros的相机内参标定过程

基于ros的相机内参标定过程 1. 安装还对应相机的驱动2. 启动相机节点发布主题3. 下载camera_calibartion4. 将红框的文件夹复制在自己的工作空间里边,编译5. 标定完成以后,生成内参参数文件camera.yaml。将文件放在对应的路径下,修改config文…

vex-table—— 获取插入或修改数据后的tableData

例子来自vxe-table。在开发过程中发现新增数据后,输出this.tableData,发现数据并没有被修改 想要获取更新的数据方式为 mounted () {const $table this.$refs.xTableconsole.log("🚀 ~ mounted ~ $table:", $table.tableData)},

[开源] 基于transformer的时间序列预测模型python代码

分享一下基于transformer的时间序列预测模型python代码,给大家,记得点赞哦 #!/usr/bin/env python # coding: 帅帅的笔者import torch import torch.nn as nn import numpy as np import pandas as pd import time import math import matplotlib.pyplo…

BoostCompass(数据准备预处理模块)

阅读导航 一、网页数据下载二、编写数据去标签与数据清洗的模块 Parser✅boost 开发库的安装1. 基本思路2. 详细讲解(1)程序递归遍历目录,收集所有HTML文件的路径(2)对每个HTML文件进行解析,提取出文档标题…

【HTML】简单制作一个3D动态粒子效果的时空隧道

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言,本文将详细介绍一段HTML,具体内容如下: 开始 首先新建文件夹,创建两个文本文档,其中HTML的文件名改为[index.html],CSS的文件名改为[Bab…

【CPA考试】2024注册会计师报名照片尺寸要求解读及手机拍照方法

随着2024年注册会计师考试的临近,众多会计专业人士和学生都开始准备报名参加这一行业的重要考试,报名时间为4月8日至4月30日。报名过程中,一张符合要求的证件照是必不可少的。本文将为您详细解读2024年注册会计师考试报名照片的尺寸要求&…

Kafka基础/1

Kafka 概念 Kafka 是一个分布式的流媒体平台。 应用:消息系统、日志收集、用户行为追踪、流式处理 特点:高吞吐量、消息持久化、高可靠性、高扩展性 术语: broker:Kafka 的服务器,Kafka 当中每一台服务器&#xf…

网络安全---Packet Tracer - 配置扩展 ACL

一、实验目的 在Windows环境下利用Cisco Packet Tracer进行 配置防火墙操作。 二、实验环境 1.Windows10、Cisco Packet Tracer 8.2 2.相关的环境设置 在最初的时候,我们已经得到了搭建好的拓扑模型,利用已经搭建好的拓扑模型,进行后续的…

SOLIDWORKS如何新建定义材质库

SolidWorks材质库中包含了大量的材料选项,涵盖了金属、塑料、橡胶、复合材料等各种类型,每种材料都有详细的特性参数。用户可以根据设计需求,在材质库中选择合适的材料,从而更好地满足设计要求。在有限元分析中,需要附…

【架构师】-- 成长路线图

成长为软件架构师不是一件容易的事,这篇文章列举了架构师需要学习的技术储备,给出了成为软件架构师的路线图,帮助有志于在架构领域成长的同学可以明确学习的方向。原文:Master Plan for becoming a Software Architect[1] 软件架…

easyExcel - 动态复杂表头的编写

目录 前言一、情景介绍二、问题分析三、代码实现方式一:head 设置方式二:模板导出方式三:自定义工具类 前言 Java-easyExcel入门教程:https://blog.csdn.net/xhmico/article/details/134714025 之前有介绍过如何使用 easyExcel&…

LeetCode_144(二叉树前序遍历)

1.递归 public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();accessTree(root,res);return res;}public void accessTree(TreeNode root,List<Integer>res){if(root null){return;}res.add(root.val);acce…

Redis 八种常用数据类型常用命令和应用场景

5 种基础数据类型&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散列&#xff09;、Zset&#xff08;有序集合&#xff09;。 3 种特殊数据类型&#xff1a;HyperLogLog&#xff0…