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


更多内容:XiaoJ的知识星球


目录

  • [3 Prompt工程](#3 Prompt工程)
    • [3.1 Prompt 工程简介](#3.1 Prompt 工程简介)
      • [3.1.1 Prompt 的定义](#3.1.1 Prompt 的定义)
      • [3.1.2 Prompt 工程的定义](#3.1.2 Prompt 工程的定义)
      • [3.1.3 Prompt 分词向量化](#3.1.3 Prompt 分词向量化)
      • [3.1.4 Prompt 工程的意义](#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)
LLaMA1 32000 0.6588 0.6891
LLaMA2 32000 0.6588 0.6891
LLaMA3 128256 1.0996 0.7870
DeepSeek-V1 100016 1.2915 0.7625
DeepSeek-V2 100002 1.2915 0.7625
GPT-3.5 & GPT-4 100256 0.7723 0.7867
GPT-3 50,257 0.4858 0.7522
Qwen-1.5 151646 1.2989 0.7865
StarCoder 49152 0.9344 0.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),智能代理又叫做智能体,使其能感知环境、自主行动和学习知识。

.


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


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

相关推荐
ONEYAC唯样3 分钟前
“在中国,为中国” 英飞凌汽车业务正式发布中国本土化战略
大数据·人工智能
mozun20209 分钟前
产业观察:哈工大机器人公司2025.4.22
大数据·人工智能·机器人·创业创新·哈尔滨·名校
-一杯为品-12 分钟前
【深度学习】#9 现代循环神经网络
人工智能·rnn·深度学习
硅谷秋水14 分钟前
ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架
人工智能·深度学习·机器学习·计算机视觉·语言模型·自动驾驶
Java中文社群36 分钟前
最火向量数据库Milvus安装使用一条龙!
java·人工智能·后端
豆芽81944 分钟前
强化学习(Reinforcement Learning, RL)和深度学习(Deep Learning, DL)
人工智能·深度学习·机器学习·强化学习
山北雨夜漫步1 小时前
机器学习 Day14 XGboost(极端梯度提升树)算法
人工智能·算法·机器学习
yzx9910131 小时前
集成学习实际案例
人工智能·机器学习·集成学习
CodeJourney.1 小时前
DeepSeek与WPS的动态数据可视化图表构建
数据库·人工智能·信息可视化
jndingxin1 小时前
OpenCV 图形API(62)特征检测-----在图像中查找最显著的角点函数goodFeaturesToTrack()
人工智能·opencv·计算机视觉