知识图谱部分(早期1)

2023-12-01

 

 

9e5f2fb21d938baba92067bf4da2642c.png

 

prompt engineering

 

什么是prompt engineering?

Prompt engineering is not just about designing anddeveloping prompts. It encompasses a wide range ofskills and techniques that are useful for interacting anddeveloping with LLMs. lt's an important skill to interface,build with, and understand capabilities of LLMs. You canuse prompt engineering to improve safety of LLMs andbuild new capabilities like augmenting LLMs with domainknowledge and external tools.

提示工程不仅仅是设计和开发提示。它包含了广泛的技能和技术,这些技能和技术对于与LLM进行交互和开发非常有用。这是一项重要的技能,与LLM的接口,建立和理解能力。使用者可以使用及时的工程来提高LLM的安全性,并构建新的功能,比如使用领域知识和外部工具增强LLM。

它包括了一系列技术用于与大模型进行交互,能够将大模型的能力充分发挥出来,

Prompt engineering

 

 

几种形式

1.简单技巧:prompt writing skills,如几个方面:1.结构化,prompt结构化,和要求大模型输出结果的结构化,提升整个大模型的可控性2.train of thought提升模型思考深度3.不断迭代prompt,需要根据大模型输出结果优化

2.使用数据:让大模型使用特定领域的数据,Data-aware prompting,让他在一个固定的context下(context可能是个很大的知识领域)做回答,不让他一本正经的胡说八道,如客服聊天工具,让他回答用户的问题,因为不可能把所有的知识领域都传过去,那么需要根据用户的输入,找到相关的context给他传过去,给他一个知识领域Vector Database,向量数据库,(可能需要微调大模型)

3.使用工具:教会大模型实用工具,怎么让他判断需要使用工具,第二个是怎么让他跟工具交互(一般使用特定的API),

4.迭代能力:让大模型自己根据使用工具的结果,能够不断迭代自己对一个问题的认识和下一步策略的能力(典型例子AutoGPT)

5.终极形态:AI agent,能使用上面所有的技巧

 

 

 

向量数据库:是一种将数据存储为高维向量的数据库类型,这些向量只是数据特征或属性的数学表示,每个向量有一定数量的维度(几十~1000),原始数据可以是文本,图像,音频什么的,嵌入函数也可能是一个机器学习模型,也可能是单词嵌入或简单的特征提取算法

向量数据库的优势:可以实现快速和准确的相似性,基于向量距离或相似度的数据搜索和检索,在向量数据库中如果取两个不同的点,越接近的点,相似度越高。

 

典型的关系型数据管理系统需要经过精确匹配,向量数据库更轻松的提取数据检索数据。

 

 

 

 

Prompt engineering问题

就是好多关于prompt engineering的介绍,但是很少有说明与数据集使用的,是如何使用的

Pass前期可以使用向量数据库vector database吗?

Pass又怎样通过给大模型一个专业领域的vector database,使其根据用户的输入,找到相关的context回答,并能输出此领域的知识图谱三元组?

 

 

 

 

 

 

 

 

 

 

 

 

AutoPrompt: Eliciting knowledge from language models with automatically generated prompts(2020)提出了采用自动搜索prompt模板词的方法,其基本思路建立在,从词表中遍历所有词,看哪些词组成的prompt模板能最终生成训练数据中待填充的词,相当于一个逆向操作。Prompt模板需要填充的词最开始用[MASK]初始化,然后去看使用其他词替换[MASK]会让label的概率最大,逐步替换[MASK],得到template。

Template 模板

 

特征工程(feature engineering),即利用领域知识从数据中提取好的特征;

结构工程(architecture engineering),即通过通过设计一个合适的网络结构来把归纳偏置(inductive bias)引入模型中,从而有利于学习好的特征。

预训练 + 微调(pre-train and fine-tune)。在这个模式中, 先用一个固定的结构预训练一个语言模型(language model, LM),预训练的方式就是让模型补全上下文(比如完形填空)。

由于预训练不需要专家知识,因此可以在网络上搜集的大规模文本上直接进行训练。然后这个 LM 通过引入额外的参数或微调来适应到下游任务上。此时研究者转向了目标工程(objective engineering),即为预训练任务和微调任务设计更好的目标函数。

 

预训练微调和prompt微调

Prompt

 

 

使用Prompt数据集,通过新加少量可学习参数,在Prompt和大模型之间,做一个新的建模,以让用户更容易地从大模型那里获取想要的答案,来驾驭大模型。

 

提示的构成

。指示: 对任务进行描述

。上下文: 给出与任务相关的提它背最信息(尤其在多轮交互中)

·例子:必要时给出举例,学术中称为单镜头学习,少镜头学习或上下文学习;实践证明其对输出正确性有帮助

。输入: 任务的输入信息;在提示议中明确的标识出输入

·输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如 (JSON,XML)

 

存在一种方式,可以将预训练语言模型作为电源,不同的任务当作电器,仅需要根据不同的电器(任务),选择不同的插座,对于模型来说,即插入不同的任务特定的参数,就可以使得模型适配该下游任务。Prompt Learning 就是这个适配器,它能高效得进行预训练语言模型的使用。

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

16876ae50027842b41bd986afea50a2c.jpeg

 

在做 objective engineering 的过程中,研究者发现让下游任务的目标与预训练的目标对齐是有好的。因此下游任务通过引入文本提示符(textual prompt),把原来的任务目标重构为与预训练模型一致的填空题。

用不同的 prompt 加到相同的输入上,就能实现不同的任务,从而使得下游任务可以很好的对齐到预训练任务上,实现更好的预测效果。

 

 

Prompt Fine tuning大模型微调

1.Fine tune大模型微调策略

 

一个比较直接的共享参数的方法是只微调部分参数,或者向预训练模型中加入少量额外的参数。比如,对于分类任务:

● Linear:只微调分类器 (一个线性层), 冻结整个骨干网络。

● Partial-k:只微调骨干网络最后的 k 层, 冻结其他层 [2][3]。

● MLP-k:增加一个 k 层的 MLP 作为分类器。

● Side-tuning [4]:训练一个 “side” 网络,然后融合预训练特征和 “side” 网络的特征后输入分类器。

● Bias:只微调预训练网络的 bias 参数 [5][6]。

● Adapter [7]:通过残差结构,把额外的 MLP 模块插入 Transformer。

 

 

然后transformer和Convnet

 

Transformer 与 ConvNet 比较:Transformer 相比于 ConvNet 的一个显著的特点是:它们在对于空间(时间)维度的操作是不同的。

● ConvNet:卷积核在空间维度上执行卷积操作,因此空间内不同位置的特征通过卷积(可学习的)操作融合信息, 且只在局部区域融合。

● Transformer:空间(时间)维度内不同位置的特征通过 Attention(非学习的)操作融合信息,且在全局上融合。

Transformer 在特征融合时非学习的策略使得其很容易的通过增加额外的 feature 来扩展模型。

 

 

prefix语前缀

prefix-tuning在模型输入前添加一个连续的且任务特定的向量序列称之为prefix,固定PLM的所有参数,只更新优化特定任务的prefix。

prefix-tuning之前的工作主要是人工设计模板或者自动化搜索模板,也是prompt范式的第一阶段,就是在输入上加上prompt文本,再对输出进行映射。这种离散模板对模型的鲁棒性很差。所以后续的研究都将离散的方式转成连续。

 

Prefix tuning

1.Prefix tuning将prefix参数(可训练的张量)添加到所有的transformer层

2.机制:将多个prompt vectors 放在每个multi-head attention的key矩阵和value矩阵之前。

3.计算方式:相当于原始的token要多和这些soft prompt token计算相似度,然后聚合。

 

Prompted提示方法的分类:

0a36cca001f153122a9db8bbd64f22de.png

提示模板工程(prompt template)是创建提示函数f(x)的过程,该函数可在下游任务上获得最有效的性能。在之前的许多工作中,这涉及到人类工程师或算法为模型预期执行的每个任务寻找最佳模板。如图prompt template部分所示,必须首先考虑提示形状,然后决定是采用手动还是自动方法来创建所需形状的提示。

 

与为提示方法设计适当输入的提示模板工程不同,提示答案工程旨在搜索答案空间Z和原始输出Y的映射,从而产生有效的预测模型。图中的“prompt answer engineering”部分说明了在执行提示答案工程时必须考虑的两个维度:决定答案形状和选择答案设计方法。

 

 

 

回去看数据集(信息抽取),

NLP信息抽取&知识图谱生成实战案例:联合关系抽取JointER$Casrel原理及代码讲解_哔哩哔哩_bilibili

 

哔哩哔哩工房 (bilibili.com)

【信息抽取】基于prompt的通用信息抽取方案——千言数据集_哔哩哔哩_bilibili

然后看能否用于咱们的模型,找数据集(啥数据集都行),然后可以对大模型进行适当prompt tuning,让大模型LLama2输出咱们要的知识图谱三元组,

 

 

【信息抽取】基于prompt的通用信息抽取方案——千言数据集

任务介绍

通用信息抽取

按照特定的抽取框架S,从给定的一组自由文本X中抽取出所有符合抽取需求的信息结构Y(实体、关系、事件等)。对于同一输入文本,不同的抽取框架会抽取不同的信息结构.

任务类型

NER:文本->(实体类型,实体span)两元组   NER任务

Relation Extraction:文本→>(主体span,关系类型,客体span)三元组.  关系抽取任务

Event Extraction:文本->(事件类型,论元角色,论元span)三元组      事件抽取任务

opinion Extraction :文本-→>(意见对象span,情感表达span,情感极性)三元组  观点抽取任务

 

任务设定

Seen Schema:有充分训练数据(Rich-Resource ).   高资源场景

Unseen Schema:仅有少量训练数据(Low-Resource )    低资源场景

通用信息抽取的本质:若干span和类别 组成的多元组的集合

要求模型具有抽取extraction,分类classification和将若干span和类别进行组合的combination的能力

 

高资源,指针层

0d4b532c560bac9ad59ce8d0a70eb36e.jpeg

 

 

 

 

 

 

低资源,训练数据较少,label

bbdec8668a607356ffeaa8e8c8927d59.jpeg

 

 

 

 

New数据集

 

已下载:AGnews,

其它好多数据集都是论文形式的,应该怎么下载呢?

 

Penn Treebank  Datasets

 

torchtext.datasets — Torchtext 0.16 documentation (pytorch.org)

Text Classification

AG_NEWS  已下载

AmazonReviewFull  论文形式[1509.01626] Character-level Convolutional Networks for Text Classification (arxiv.org)

AmazonReviewPolarity      论文形式[1509.01626] Character-level Convolutional Networks for Text Classification (arxiv.org)

CoLA     已经下载,里面有论文以及github详细介绍The Corpus of Linguistic Acceptability (CoLA) (nyu-mll.github.io)

69e5d976a6488fbb5c7742b252f36446.jpeg

[1805.12471] Neural Network Acceptability Judgments (arxiv.org)

DBpedia    网站Latest Core Releases - DBpedia Association

数据库 Latest releases of core data from en.wikipedia.org (dbpedia.org)

下载了第一个200MB的试试水

 

0d398260ee497098fd6a565d7894fa8b.jpeg

IMDb      已下载,情绪分析 (stanford.edu)

MNLI      已下载,ultiNLI 分布在单个 ZIP 文件中,其中包含 JSON 行 (jsonl) 和制表符分隔文本 (txt) 的语料库。多NLI (nyu.edu)

MRPC      已下载,是.msi文件从 Microsoft 官方下载中心下载 Microsoft Research 释义语库

    单击“下载”,然后按照说明进行操作。

支持的操作系统

Windows 7、Windows 8 或 Windows 10

 

QNLI    论文介绍,1804.07461.pdf (arxiv.org)

QQP     已下载,Quora数据集Quora数据集首次发布:问题对 - Data @ Quora - Quora

RTE     没下载,因为网页最后编辑于2013年,太老了识别文本蕴涵 - ACL Wiki (aclweb.org)

SogouNews  论文形式,[1509.01626] Character-level Convolutional Networks for Text Classification (arxiv.org)

SST2      2013年的,未下载情感树库上语义组合性的递归深度模型 (stanford.edu)

STSB    时间在2017,2018年,最后编辑于2019年,未下载STSbenchmark - stswiki (ehu.eus)

WNLI     18年的论文形式,未下载1804.07461v3.pdf (arxiv.org)

YahooAnswers      15年的论文形式,未下载[1509.01626] Character-level Convolutional Networks for Text Classification (arxiv.org)

YelpReviewFull    15年的论文,未下载[1509.01626] Character-level Convolutional Networks for Text Classification (arxiv.org)

YelpReviewPolarity  同15年论文形式,未下载[1509.01626] Character-level Convolutional Networks for Text Classification (arxiv.org)

 

 

 

Language Modeling

PennTreebank

WikiText-2

WikiText103

Machine Translation

IWSLT2016

IWSLT2017

Multi30k

Sequence Tagging

CoNLL2000Chunking

UDPOS

Question Answer

SQuAD 1.0

SQuAD 2.0

Unsupervised Learning

CC100

EnWik9

 

 

 

然后NLP信息抽取&知识图谱生成实战案例:联合关系抽取JointER$Casrel原理及代码讲解

NLP信息抽取&知识图谱生成实战案例:联合关系抽取JointER$Casrel原理及代码讲解_哔哩哔哩_bilibili

代码包括三个模型:JointER,Casrel,SpERT,主要在DuIE,CMED,CPRED三个数据集中运行。

 

 

dcbcbf90d31f8bb5edde215981a4c90a.jpeg

 

由图可知,joinER比Casrel无论在哪个数据集上都表现更好,收敛速度更快,精度更高,在绝大多数场景都优于前一个模型

本文中认为

关系抽取:旨在从非结构化文本中提取带有关系的实体对,即三元组,结构一般为(主体,关系,客体)

86c732faf849a13e8e9ceea99262f234.jpeg

传统方法会增加错误累积的概率,

同时也会产生大量的冗余实体对,4个实体产生16组实体对,但只有4组是对的

 

JointER

先提取后标记,先抽取个主体,再根据这个主体,在给定一定的条件下,再提取它可能的客体和关系

7d90e173e6abc6465e11050f0d89282d.jpeg

 

94b6a84e5ac2333a98a633aa9310ee95.jpeg

 

JointER和Casrel在模型结构上可以看作是一摸一样的

先通过BERT得到整个句子的表示,记为Hn(hn最下面浅紫色一步),由Hn预测主体(方式是在主体的首末位置进行标记),主体用V(ksub)表示,然后看上述图片↑

 

 

 

 

BERT对中文字符收录不完整,只收录了两万多个,其他字都是用字符[UNK]表示,如图所示

7a200de30b2061cb9ebea0d8bc8278d8.jpeg

 

 

 

 

 

DuIE:

dc4d00d1198e39346ea443d3837bbcdd.jpeg

  1. 简单关系

 

5711f0e844c3b141d627c87079ae8ef5.jpeg

2.复杂关系

首先是百度开源数据集,分为简单关系,一个主体一个关系一个客体,一一对应

复杂关系就是主体,关系不变,客体很多,一个主体,一种关系,但是对应不同的客体

DuIE:

视频中用的是百度开源竞赛数据集,已经找不到了,第二个是人物关系数据集,第三个是医疗疾病关系数据集

DuIE 大规模中文信息抽取数据集 / 数据集 / 超神经 (hyper.ai)

【数据集】中文关系抽取数据集 DuIE 2.0 - Harukaze - 博客园 (cnblogs.com)

CMED:这个不确定找的数据集对不对,不确定是不是视频中所用到的,下载了下面面两个:

cMedQA中文社区医学问答数据集_数据集-阿里云天池 (aliyun.com)

zhangsheng93/cMedQA2:这是华人社区医学问答数据集的更新版本。 (github.com)

 

看了但是未下载:

中文医学信息抽取(数据集) - 知乎 (zhihu.com)

CPRED:

下面文章只介绍了但是没说怎么下载

面向复杂语境的中文人物关系抽取数据集 - 知乎 (zhihu.com)

JointER部分代码来源:https://github.com/loujie0822/DeepIE

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值