当前位置: 首页 > article >正文

【大模型基础_毛玉仁】3.1 Prompt 工程简介


更多内容:XiaoJ的知识星球


目录

  • 3 Prompt工程
    • 3.1 Prompt 工程简介
      • 3.1.1 Prompt 的定义
      • 3.1.2 Prompt 工程的定义
      • 3.1.3 Prompt 分词向量化
        • 1)基本概念
        • 2)分词对模型性能影响
      • 3.1.4 Prompt 工程的意义


3 Prompt工程

大语言模型因训练数据规模和参数数量增长,突破泛化瓶颈,涌现强指令跟随能力。泛化能力使其处理多种未知任务,指令跟随能力让其准确响应人类指令。二者结合,通过精心编写的Prompt引导模型适应下游任务,避免传统微调高昂成本。

Prompt工程是编写有效指令的技术,是连接模型与任务需求的桥梁,要求深入了解模型和精准把握任务目标,能最大化发挥模型潜力,使其在多场景中表现卓越。

本章探讨Prompt工程的概念、方法、作用,介绍上下文学习、思维链等技术及Prompt工程的应用。

.

3.1 Prompt 工程简介

传统自然语言处理研究遵循“预训练-微调-预测”范式,即大规模语料库上预训练–下游任务上微调–进行预测。

但随着语言模型规模和能力的提升,“预训练-提示预测”新范式出现,它通过精心设计Prompt引导大模型直接适应下游任务,无需繁琐微调。

在此过程中,Prompt设计对模型性能影响深远,而专注于编写Prompt的技术即Prompt工程

图3.1: “预训练-微调-预测”范式与“预训练-提示预测”范式对比
在这里插入图片描述

.

3.1.1 Prompt 的定义

Prompt:是指用于指导生成式人工智能模型执行特定任务的输入指令,这些指令通常以自然语言文本的形式出现。

Prompt核心目的:是清晰地描述模型应该执行的任务,以引导模型生成特定的文本、图像、音频等内容。

图3.2: 几种常见的Prompt例子
在这里插入图片描述
Prompt 的应用范围广泛,不仅限于文本到文本的任务。但本文聚焦于文本生成模型。

.

3.1.2 Prompt 工程的定义

Prompt 工程Prompt Engineering),又称提示工程

  • 是指设计和优化用于与生 成式人工智能模型交互的Prompt的过程

Prompt 工程技术的核心:

  • 将新任务通过 Prompt 构建为模型在预训练阶段已经熟悉的形式,利用模型固有的泛化能力来执行新的任务,而无需在额外的特定任务上进行训练。

Prompt 的四个基本元素:

  • 任务说明——向模型明确提出具体的任务要求。任务说明应当清晰、直接,并尽可能详细地描述期望模型完成的任务。

  • 上下文——向模型提供的任务相关背景信息,用以增强其对任务的理解以及提供解决任务的思路。上下文可以包括特定的知识前提、目标受众的背景、 相关任务的示例,或任何有助于模型更好地理解任务的信息。

  • 问题——向模型描述用户的具体问题或需要处理的信息。这部分应直接涉及用户的查询或任务,为模型提供一个明确的起点。问题可以是显式的提问, 也可以是隐式的陈述句,用以表达用户的潜在疑问。

  • 输出格式——期望模型给出的回答的展示形式。这包括输出的格式,以及任何特定的细节要求,如简洁性或详细程度。例如,可以指示模型以JSON格式输出结果。

Prompt 的四个基本元素——任务说明、上下文、问题和输出格式,对于大语言模型生成的效果具有显著影响。这些元素的精心设计和组合构成了Prompt工程的 核心。

在此基础上,Prompt工程包括多种技巧和技术,如

  • 上下文学习(In-Context Learning);

  • 思维链(ChainofThought)等。

Prompt长度增加会减慢模型推理速度、提升推理成本。

LLMLingua提出一种由粗到细的Prompt压缩方法,可将Prompt压缩至原来的二十分之一且几乎不损失性能。

随着RAG技术兴起,模型需处理更多上下文信息,FIT-RAG通过高效压缩检索内容,将上下文长度缩短约50%,同时保持性能稳定。

这些方法在优化Prompt长度的同时,确保了模型性能不受影响,为处理大规模上下文信息提供了有效解决方案。

.

3.1.3 Prompt 分词向量化

1)基本概念

构建Prompt后,将其输入到大语言模型中,以期待得到满意的生成结果。但语言模型无法直接理解文本。

在Prompt进入大模型之前,需要将它拆分成一个Token的序列,其中Token承载语义的最小单元,标识具体某个词,并且每个Token由Token ID唯一标识。

文本转化为Token的过程称之为分词Tokenization),如图3.4所示,对于“小浣熊吃干脆面”这样一句话,经过分词处理之后,会变成一个Token序列,每个Token有对应的Token ID。

图3.4: 分词与嵌入的过程,以DeepSeek-V2-Chat模型的分词器为例
在这里插入图片描述

一句话可能存在多种拆分方式。为实现有效分词,首先需构建一个包含大语言模型所能识别的所有Token的词表,并依据该词表进行句子拆分。

.

在构建大语言模型的词表时,分词器依赖于分词算法,如BBPE、BPE 和WordPiece 等,这些算法通过分析语料库中的词频等信息来划分Token。

BBPEByte-Level Byte Pair Encoding)算法为例,阐述其分词过程:

  1. 初始化词表:首先,将所有字符按照其底层编码拆分为若干字节,并将这些单字节编码作为初始词表的Token。

  2. 统计词频:接下来,统计词表中所有Token对(即相邻Token的组合)的出现频率。在初始阶段,Token对即为相邻字节的组合。

  3. 合并高频Token对:然后,选择出现频率最高的Token对,将其合并成一个新的Token并加入词表。

  4. 迭代合并:重复步骤2和步骤3,不断迭代合并,直至达到预设的词表大小或达到指定的合并次数。

.

2)分词对模型性能影响

词表大小和分词粒度影响模型性能。

  • 词表过小:会使模型难以区分相似词汇,限制语义承载能力,增加序列长度;

  • 词表过大:则可能导致学习不深入,难以捕捉词汇关联。

构建词表时需平衡涵盖词汇广泛性和语义精细度,以确保大语言模型能学习丰富词汇知识,准确理解和生成复杂语义文本。

如图3.4所示,词表构建时,高频词语或短语收录为独立Token,如“干脆”表示一个Token;同时包含特殊Token,通过组合表示低频生僻字,如“浣”用“æµ”和“£”组合表示。这样既能涵盖常见高频词汇,又能灵活表达稀有字符,且词表构建受人类语料库积累沉淀的“先验知识”影响。

大语言模型的分词器质量直接影响模型性能。优秀分词器应具备以下特点:

  • 一是准确识别文本中的关键词和短语,助力模型捕捉语义信息;

  • 二是高效实现文本Token优化压缩,显著缩短模型处理数据时间,提升训练和推理速度,降低计算资源消耗。

表3.1: 模型分词器对比表

模型词表大小中文分词效率(字/Token)英文分词效率(词/Token)
LLaMA1320000.65880.6891
LLaMA2320000.65880.6891
LLaMA31282561.09960.7870
DeepSeek-V11000161.29150.7625
DeepSeek-V21000021.29150.7625
GPT-3.5 & GPT-41002560.77230.7867
GPT-350,2570.48580.7522
Qwen-1.51516461.29890.7865
StarCoder491520.93440.6513

不同开源大语言模型的分词器性能受词表大小、分词效率等因素影响。

  • 对DeepSeek、Qwen等中文开源模型对中文分词优化好,平均每个Token可表示1.3个字(每个字仅需0.7个Token即可表示),常用词甚至一个Token表示,分词效率高。

  • 而GPT-4、LLaMA系列等以英文为主的模型,中文支持弱,分词效率低。

  • 在英文中,由于存在“ly”,“ist”等后缀Token,单词通常需1个及以上Token表示。单个Token语义承载多,模型输出Token少,提升推理效率。

对比不同模型分词器处理不同语言的效率,对选合适模型和优化性能意义重大。

分词后的Token,经嵌入矩阵Embedding Matrix)转为固定大小的表征向量,供模型理解处理。生成阶段,模型依输入向量序列计算词表概率分布,选对应Token输出并转为文本内容。

上述通过分词技术将文本分割成Token,再将Token转化为特征向量,在高维 空间中表征这些文本的处理流程,使得语言模型能够捕捉文本的深层语义结构,并 有效地处理和学习各种语言结构,从简单的词汇到复杂的句式和语境。

.

3.1.4 Prompt 工程的意义

Prompt工程是一种高效灵活的自然语言处理任务执行方式,无需微调模型,避免了高昂的计算成本。它能激发大型语言模型的潜力,在垂域任务、数据增强、智能代理等多个领域发挥出卓越的性能。

  • 垂域任务:Prompt工程可引导大语言模型完成垂直领域任务,无需针对每个任务进行特定微调,降低计算成本和标注数据依赖。

  • 数据增强:Prompt工程利用大语言模型进行数据增强,提升现有数据集质量并生成新高质量数据。

  • 智能代理:Prompt工程可将大语言模型构建为智能代理(IntelligentAgent,IA),智能代理又叫做智能体,使其能感知环境、自主行动和学习知识。

.


其他参考:【大模型基础_毛玉仁】系列文章


声明:资源可能存在第三方来源,若有侵权请联系删除!


http://www.kler.cn/a/590793.html

相关文章:

  • 清晰易懂的Node.js安装教程
  • 【Git学习笔记】Git分支管理策略及其结构原理分析
  • 操作系统的心脏节拍:CPU中断如何驱动内核运转?
  • Conda 环境迁移指南
  • dataframe数据形式操作中的diff和shift函数区别与对比
  • [Lc15_bfs+floodfill] 图像渲染 | 岛屿数量 | 岛屿的最大面积 | 被围绕的区域
  • 使用 ESP8266 和 Android 应用程序实现基于 IOT 的语音控制家庭自动化
  • 从字段级脱敏到文件级授权,构建全场景数据安全闭环
  • Linux与HTTP报头属性和请求方式
  • flutter 专题 八十八 Flutter原生混合开发
  • 常见限流算法及实现
  • 蓝桥杯嵌入式组第十四届省赛题目解析+STM32G431RBT6实现源码
  • 【一起来学kubernetes】17、Configmap使用详解
  • 程序包jakarta.annotation不存在
  • 求余在程序设计中的用处
  • Netty基础—Netty实现消息推送服务
  • IntelliJ IDEA 调试技巧指南
  • apache-maven-3.9.9 详细安装配置教程(2025版)
  • 散货拼柜业务,如何管理多个客户和供应商的财务账单?
  • Android audio(8)-native音频服务的启动与协作(audiopolicyservice和audioflinger)