知识图谱:【知识图谱问答KBQA(三)】——Prompt Learning

本文介绍了NLP中的Prompt技术,涵盖其定义、分类、为何有效及其与Fine-tune的区别。此外,还深入探讨了Prompt的设计方法,包括手工设计与自动学习,并讨论了当前面临的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. NLP范式

NLP技术的发展可分为4个阶段/范式,如下图:

1. 全监督学习(非神经网络)

仅在目标任务的输入输出样本数据集上训练特定任务模型,其严重依赖特征工程。

2. 全监督学习(神经网络)

使得特征学习与模型训练相结合,于是研究重点转向了架构工程,即通过设计一个网络架构(如CNN,RNN,Transformer)能够学习数据特征。

3. Pre-train,Fine-tune

先在大数据集上预训练,再根据特定任务对模型进行微调,以适应于不同的下游任务。在这种范式下,研究重点转向了目标工程,设计在预训练和微调阶段使用的训练目标(损失函数)。

4. Pre-train,Prompt,Predict

无需要fine-tune,让预训练模型直接适应下游任务。方便省事,不需要每个任务每套参数,突破数据约束。

在这里插入图片描述

二. Prompt兴起的缘由

近几年来,有关预训练语言模型(PLM)的研究比比皆是,自然语言处理(NLP)也借着这股春风获得了长足发展。尤其是在2017-2019年间,研究者们的重心逐渐从传统task-specific的有监督模式转移到预训练上。基于预训练语言模型的研究思路通常是“pre-train, fine-tune”,即将PLM应用到下游任务上,在预训练阶段和微调阶段根据下游任务设计训练对象并对PLM本体进行调整。

随着PLM体量的不断增大,对其进行fine-tune的硬件要求、数据需求和实际代价也在不断上涨。除此之外,丰富多样的下游任务也使得预训练和微调阶段的设计变得繁琐复杂,因此研究者们希望探索出更小巧轻量、更普适高效的方法,Prompt应运而生。

三. Prompt简介

1.Prompt定义

Prompt刚出现时是研究者们为了下游任务设计出来的一种输入形式或模板,用以帮助PLM“回忆”起在预训练时“学习”到的东西,因此后来慢慢地被叫做Prompt。
具体“Prompt”的做法是,将人为的规则给到预训练模型,使模型可以更好地理解人的指令的一项技术,以便更好地利用预训练模型。例如,在文本情感分类任务中,输入为"I love this movie.",希望输出的是"positive/negative"中的一个标签。那么可以设置一个Prompt,形如:“The movie is ___”,然后让模型用来表示情感状态的答案(label),如positive/negative,甚至更细粒度一些的“fantastic”、“boring”等,将空补全作为输出。
对于输入的文本x,有函数fprompt(x),将x转化成prompt的形式x’,即:
在这里插入图片描述

fprompt(x)函数通常会进行两步操作:
1)使用一个模板,模板通常为一段自然语言,并且包含有两个空位置:用于填输入x的位置[X]​​​和用于生成答案文本z​​​的位置[Z]​​​;
2)把输入x填到[X]的位置。

2. Prompt分类

在实际的研究中,prompts应该有空位置来填充答案,这个位置一般在句中或者句末。如果在句中,一般称这种prompt为cloze prompt;如果在句末,一般称这种prompt为prefix prompt。[X]​​​和[Z]​的位置以及数量都可能对结果造成影响,因此可以根据需要灵活调整。

3.为什么Prompt有效?

实际上,prompt 可以看做是对预训练语言模型中已经记忆的知识的一种检索方式,由于 prompt 任务形式就是预训练任务,所以相比于 fine-tuning,当使用 prompt 形式向模型中输入样本时,预测时得到了“提示”,因此所需使用到的信息量是更多的。因为要用到更多的信息量,所以样本的类别分布在 prompt 视角之下都是稀疏的,这应该也是 prompt 在 few-shot 上效果显著的原因。

四. Fine-tune Vs. Prompt

1. Fine-tune和Prompt的区别

prompting 更加依赖先验,而 fine-tuning 更加依赖后验:

  • Fine-tune:是预训练语言模型“迁就“各种下游任务。具体体现就是通过引入各种辅助任务loss,将其添加到预训练模型中,然后继续pre-training,以便让其更加适配下游任务,这个过程中,预训练语言模型做出了更多的牺牲。
  • Prompt: 是各种下游任务“迁就“预训练语言模型。需要对不同任务进行重构,使得它达到适配预训练语言模型的效果,这个过程中,是下游任务做出了更多的牺牲。

Prompt的优点是给定一组合适的prompt,以完全无监督的方式训练的单个LM就能够用于解决大量任务。然而该方法也存在一个问题——这种方法引入了 prompt 挖掘工程的必要性,即需要找出最合适的 prompt 来让 LM 解决面临的任务,即怎么做Prompt Engineering。

2. Fine-tune和Prompt的性能对比

Prompt参数量要小很多。如下图T5的两者对比图所示,Fine-tune模型的每个副本都需要110亿个参数;而Prompt每个任务只需要20480个参数——减少超过5个数量级。
在这里插入图片描述

  • Fine-tune需要为每个下游任务都存下整个预训练模型的副本,并且推理必须在单独的批次中执行。
  • Prompt只需要为每个任务存储一个特定于下游任务的小单元,并使用原始的预先训练过的模型启用混合任务推理即可。

五. Prompt的设计

1. Prompt的形状

Prompt的形状主要指的是[X]和[Z]的位置和数量。cloze prompt和prefix prompt的区别,在实际应用过程中选择哪一种主要取决于任务的形式和模型的类别。cloze prompts和Masked Language Model的训练方式非常类似,因此对于使用MLM的任务来说cloze prompts更加合适;对于生成任务来说,或者使用自回归LM解决的任务,prefix prompts就会更加合适;Full text reconstruction models较为通用,因此两种prompt均适用。另外,对于文本对的分类,prompt模板通常要给输入预留两个空,[X1]和[X2]。

2. 手工设计模板

Prompt最开始就是从手工设计模板开始的。手工设计一般基于人类的自然语言知识,力求得到语义流畅且高效的模板。例如,Petroni等人在著名的LAMA数据集中为知识探针任务手工设计了cloze templates;Brown等人为问答、翻译和探针等任务设计了prefix templates。手工设计模板的好处是较为直观,但缺点是需要很多实验、经验以及语言专业知识,代价较大。

3. 自动学习模板

为了解决手工设计模板的缺点,许多研究开始探究如何自动学习到合适的模板。自动学习的模板又可以分为离散(Discrete Prompts)和连续(Continuous Prompts)两大类。离散的主要包括 Prompt Mining, Prompt Paraphrasing, Gradient-based Search, Prompt Generation 和 Prompt Scoring;连续的则主要包括Prefix Tuning, Tuning Initialized with Discrete Prompts 和 Hard-Soft Prompt Hybrid Tuning。

离散Prompts

自动生成离散Prompts指的是自动生成由自然语言的词组成的Prompt,因此其搜索空间是离散的。目前大致可以分成下面几个方法:

  • Prompt Mining. 该方法需要一个大的文本库支持,例如Wikipedia。给定输入x和输出y,要找到x和y之间的中间词或者依赖路径,然后选取出现频繁的中间词或依赖路径作为模板,即“[X] middle words [Z]”。
  • Prompt Paraphrasing. Paraphrasing-based方法是基于释义的,主要采用现有的种子prompts(例如手动构造),并将其转述成一组其他候选prompts,然后选择一个在目标任务上达到最好效果的。一般的做法有:将提示符翻译成另一种语言,然后再翻译回来;使用同义或近义短语来替换等。
  • Gradient-based Search. 梯度下降搜索的方法是在单词候选集里选择词并组合成prompt,利用梯度下降的方式不断尝试组合,从而达到让PLM生成需要的词的目的。
  • Prompt Generation. 既然Prompt也是一段文本,那是否可以用文本生成的方式来生成Prompt呢?该类方法就是将标准的自然语言生成的模型用于生成prompts了。例如,Gao等人将T5引入了模板搜索的过程,让T5生成模板词;Ben-David 等人提出了一种域自适应算法,训练T5为每个输入生成一种唯一的域相关特征,然后把输入和特征连接起来组成模板再用到下游任务中。
  • Prompt Scoring. Davison等人在研究知识图谱补全任务的时候为三元组输入(头实体,关系,尾实体)设计了一种模板。首先人工制造一组模板候选,然后把相应的[X]和[Z]都填上成为prompts,并使用一个双向LM给这些prompts打分,最后选取其中的高分prompt。
连续Prompts

既然构造Prompt的初衷是能够找到一个合适的方法,让PLM更“听话”地得出我们想要的结果,那就不必把prompt的形式拘泥于人类可以理解的自然语言了,只要机器可以理解就好了。因此,还有一些方法探索连续型prompts——直接作用到模型的embedding空间。连续型prompts去掉了两个约束条件:

  • 1)模板中词语的embedding可以是整个自然语言的embedding,不再只是有限的一些embedding。
  • 2)模板的参数不再直接取PLM的参数,而是有自己独立的参数,可以通过下游任务的训练数据进行调整。

目前的连续prompts方法大致可以分为下面几种:

  • Prefix Tuning. 是一种在输入前添加一串连续的向量的方法,该方法保持PLM的参数不动,仅训练合适的前缀(prefix)。它的形式化定义是,在给定一个可训练的前缀矩阵​​和一个固定的参数化为​​​​的PLM的对数似然目标上进行优化,即
    在这里插入图片描述

  • Tuing Initialized with Discrete Prompts. 这类方法中连续prompts是用已有的prompts初始化的,已有的prompts可以是手工设计的,也可以是之前搜索发现的离散prompts。

  • Hard-Soft Prompt Hybrid Tuning. 这类方法可以说是手工设计和自动学习的结合,它通常不单纯使用可学习的prompt模板,而是在手工设计的模板中插入一些可学习的embedding。Liu等人提出的“P-Tuning”方法,通过在input embedding中插入可训练的变量来学习连续的prompts。并且,该方法使用BiLSTM的输出来表示prompt embeddings,以便让prompt tokens之间有一定的交互。P-tuning还引入了任务相关的anchor tokens(例如关系提取中的“capital”)来进一步提高效果,这些anchor tokens不参与后续的调优。Han等人提出了Prompt Tunning with Rules(PTR)方法,使用手工指定的子模板按照逻辑规则组装成完整的模板。为了增强生成的模板的表示能力,该方法还插入了几个虚拟token,这些虚拟token的embeddings可以和PLM的参数一起被调整,PTR的模板token既有实际token也有虚拟token 。实验结果证明了该方法在关系分类任务中的有效性。

六. Prompt的挑战与展望

  • Prompt的设计问题。目前使用Prompt的工作大多集中分类任务和生成任务,其它任务则较少,因为如何有效地将预训练任务和prompt联系起来还是一个值得探讨的问题。另外,模板和答案的联系也函待解决。模型的表现同时依赖于使用的模板和答案的转化,如何同时搜索或者学习出两者联合的最好效果仍然很具挑战性。
  • Prompt的理论分析和可解释性。尽管Prompt方法在很多情况下都取得了成功,但是目前prompt-based learning的理论分析和保证还很少,使得人们很难了解Prompt为什么能达到好的效果,又为什么在自然语言中意义相近的Prompt有时效果却相差很大。

参考资料:

【综述论文】:https://arxiv.org/pdf/2107.13586.pdf
【知乎帖子】:https://zhuanlan.zhihu.com/p/399295895
【Prefix-Tuning】
paper:https://arxiv.org/abs/2101.00190
code:https://github.com/XiangLi1999/PrefixTuning
【P-tuning V1】
paper:https://arxiv.org/abs/2103.10385
code:https://github.com/THUDM/P-tuning
【P-Tuning v2】
paper:https://arxiv.org/abs/2110.07602
code:https://github.com/thudm/p-tuning-v2
【OpenPrompt】
document: https://thunlp.github.io/OpenPrompt/notes/installation.html#installation-from-github
code: https://github.com/thunlp/OpenPrompt

<think>嗯,用户让我介绍一下LLM知识图谱构建,首先我需要明确什么是LLM,也就是大语言模型,比如GPT系列之类的。然后知识图谱构建,这部分可能涉及如何利用LLM来创建或增强知识图谱。不过用户可能对这两个概念都有一定的了解,但需要知道它们结合的方法。 首先,我应该先分清楚知识图谱构建的传统流程,比如信息抽取、实体识别、关系抽取、知识融合、存储与应用。然后,再讲LLM如何在这些步骤中发挥作用。可能需要提到LLM在自然语言处理任务上的优势,比如文本理解、生成能力,能提升信息抽取的效率和准确性。 接下来,用户可能关心LLM构建知识图谱的具体方法,比如自监督学习、提示工程、微调模型等。需要举例说明,比如用LLM生成元组,或者用few-shot prompting引导模型输出结构化的知识。 还要考虑挑战和优化方向,比如LLM的幻觉问题,如何确保生成的知识准确可靠,可能需要结合外部知识库验证。另外,处理多模态数据或者实时更新也是发展方向。 用户可能还想知道应用场景,比如智能问答、推荐系统、垂直领域应用等,这时候需要举一些实际例子,比如医疗知识图谱帮助诊断,或者金融领域的风险控制。 需要注意回答的结构要清晰,分步骤讲解,同时保持口语化,避免使用专业术语过多,但又要准确。另外,用户可能希望了解当前的研究进展和未来趋势,这部分可以稍微提一下,比如结合图神经网络或持续学习的技术。 最后,检查是否遵循了系统级指令,数学表达式用$...$,独立公式用$$...$$,但当前内容可能不需要太多公式,如果有的话要正确使用LaTeX。确保用中文,结构清晰,分点说明。</think>大语言模型(LLM)知识图谱构建是一种结合深度学习与结构化知识表示的技术,其核心目标是利用LLM的能力自动化或半自动化地生成、扩展和优化知识图谱。以下是分步骤解析: --- ### 一、知识图谱与LLM的关系 1. **知识图谱(KG)** - 本质:以元组(头实体-关系-尾实体)形式存储结构化知识,例如 `$(\text{北京}, \text{首都}, \text{中国})$`。 - 特点:显式、可解释性强,但构建成本高,依赖人工标注或规则抽取。 2. **LLM的作用** - 优势:通过预训练学习隐式知识,擅长文本理解和生成。 - 互补性:LLM可为KG提供**知识抽取**和**推理能力**,KG可为LLM提供**事实性约束**。 --- ### 二、LLM构建知识图谱的关键步骤 #### 步骤1:知识抽取 - **实体识别(NER)** 使用LLM识别文本中的实体,例如: ```text 输入: "巴黎是法国的首都。" 输出: ["巴黎", "法国"] ``` - **关系抽取(RE)** 通过提示工程(Prompting)或微调(Fine-tuning)提取实体间关系: ```text 提示: "巴黎和法国的关系是?" 输出: "首都" ``` - **元组生成** 结合以上结果,生成结构化元组:`$(\text{巴黎}, \text{首都}, \text{法国})$` #### 步骤2:知识融合 - **消歧与对齐** LLM通过上下文理解解决一词多义问题(如“苹果”指公司还是水果)。 - **外部知识注入** 将现有知识图谱(如Wikidata)与LLM生成结果结合,提升覆盖率。 #### 步骤3:知识推理 - **逻辑推理** 利用LLM的链式思维(Chain-of-Thought)补全缺失关系,例如: ```text 输入: "已知A是B的父亲,B是C的母亲,则A与C的关系是?" 输出: "祖父" ``` - **数学推理** 处理数值型知识(如地理数据): $$ \text{面积}(中国) = 9,596,960 \, \text{km}^2 $$ --- ### 、关键技术方法 1. **提示工程(Prompt Engineering)** - 设计模板引导LLM输出结构化结果,例如: ``` 文本:"莫言获得了诺贝尔文学奖。" 提示:"从文本中提取元组,格式:(实体, 关系, 实体)" 输出:("莫言", "获奖", "诺贝尔文学奖") ``` 2. **微调(Fine-tuning)** - 用标注数据训练LLM适配特定领域(如医学、金融)。 3. **检索增强(RAG)** - 结合外部知识库验证LLM输出,减少幻觉(Hallucination)。 --- ### 四、挑战与优化方向 | 挑战 | 解决方案 | |------|----------| | LLM幻觉导致错误知识 | 引入知识库验证 + 置信度评分 | | 长尾知识覆盖不足 | 主动学习(Active Learning) + 增量更新 | | 多模态知识融合 | 结合视觉、语音等多模态LLM | --- ### 五、典型应用场景 1. **智能问答** - 基于KG+LLM实现精准答案生成(如医疗诊断问答)。 2. **推荐系统** - 利用用户行为图谱与LLM推理个性化偏好。 3. **垂直领域构建** - 金融风险图谱、生物医药实体关系挖掘。 --- ### 六、未来趋势 1. **动态知识更新** 结合持续学习(Continual Learning)实现KG实时演进。 2. **可解释性增强** 通过KG追溯LLM决策路径。 3. **分布式KG协作** 联邦学习(Federated Learning)支持多源知识安全整合。 通过上述方法,LLM知识图谱构建正在突破传统人工主导的瓶颈,向自动化、智能化方向发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值