0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于训练阶段使用知识库+KNN检索相关信息辅助学习方法

深度学习自然语言处理 来源:圆圆的算法笔记 作者:圆圆的算法笔记 2022-10-09 17:33 次阅读

在prompt learning中一个核心问题是模型存在死记硬背现象。Prompt learnin主要应用在few-shot learning场景,先将训练数据转换成prompt的形式,在训练过程模型侧重于记忆训练数据,然后使用记忆的信息做预测。这个过程会导致模型缺乏泛化能力,一些长尾的case预测效果不好。

NIPS 2022中浙大和阿里提出使用检索方法增强prompt learning,利用训练数据构造知识库,在训练阶段使用知识库+KNN检索相关信息辅助学习,通过这种方式将需要记忆的信息从模型中拆分出来,直接输入到模型中。通过这种方式,可以让模型参数更侧重泛化信息的学习,而不是过拟合训练数据。下面为大家详细介绍一下这篇工作。

NLP Prompt系列——Prompt Engineering方法详细梳理

1 Prompt Learning回顾

Prompt learning主要面向的是训练数据较少的场景。首先需要一个预训练模型,然后将下游任务转换成完形填空的形式。对于分类问题,判断某个text属于哪个label,转换成如下的文本输入到预训练语言模型中:

0562950c-47b1-11ed-a3b6-dac502259ad0.png

利用预训练语言模型,预测出[MASK]对应的文本,后面接一个文本到label的映射函数,即可实现文本分类任务。Prompt learning的好处是可以充分利用预训练语言模型的知识,让下游任务和预训练任务更加适配,以提升样本量不足情况下的效果。我在之前的文章NLP Prompt系列——Prompt Engineering方法详细梳理详细介绍过prompt相关工作,感兴趣的同学可以进一步阅读。

虽然这种方法充分运用了预训练语言模型的知识,但毕竟finetune的数据少,模型更像在死记硬背训练prompt数据中的信息。这对于长尾样本或非典型的句子的预测效果不友好。为了解决上述问题,本文的核心思路是,如果我们把这些需要记忆的信息单独拿出来存储到一个知识库中,在需要的时候检索它们并作为模型额外输入,就能让模型参数没必要再死记硬背这些信息了,从而实现记忆和泛化更好的平衡,有点【好记性不如烂笔头】的感觉。下图是本文提出的基本框架示意图。

05700160-47b1-11ed-a3b6-dac502259ad0.png

2 从知识库中检索信息

实现上面的框架核心是从知识库中检索信息,这也就涉及到两个问题,一个是如何构造知识库,另一个是如何进行信息检索和利用

在知识库的构造上,文中构造的是一个{K, V}格式的数据,训练集中的每条样本对应一个{K, V}。K代表这个样本的prompt输入模型后[MASK]位置的隐向量,V代表这个样本的label对应的单词。由于K是模型输出的向量,因此每训练几轮,就会动态更新知识库中的Key,避免Key和模型最新参数隔代太多不匹配。

在信息检索和利用上,对于当前样本模型先得到其[MASK]位置的向量,然后用这个向量在知识库中进行KNN检索,每个类别的样本都取出topK个,检索的距离度量是向量内积。对于每个类别检索出的向量,使用内积做softmax后进行加权融合,得到这个类别最终向量,拼接到当前样本embedding后面输入到模型中:

05b0da96-47b1-11ed-a3b6-dac502259ad0.png

这部分检索出来的样本就是将需要记忆的知识直接引入到了当前样本中,不再需要模型参数去记忆了。此外,这种将向量引入而不是引入对应的token,可以让信息的扩展更方便,直接引入样本的token会拉长输入样本长度,导致模型性能下降,且长度也有上限。

05e3acf0-47b1-11ed-a3b6-dac502259ad0.png

3 使用KNN指导模型训练和预测

上面收的引入知识库+KNN的方法,缓解了模型参数需要强记忆训练样本的问题。此外,文中还通过KNN检索结果来指导模型的学习过程。KNN检索的好处是不需要模型训练,直接根据预训练的表示计算距离,利用邻居样本的label,就能预测当前样本的label。这对于模型来说是另一个维度的信息补充,文中通过区分难样本指导训练在inference阶段指导预测两个方面进一步指导模型的训练和预测。

KNN的检索结果可以用来区分难样本和简单样本。通过KNN检索以及检索邻居的label,可以得到当前样本各个类别的预测概率。这个KNN的预测结果可以作为是否是难样本的参考,如果模型预测预测结果和KNN结果不一致,就是难样本。对于难样本,加大其学习权重,通过将KNN预测概率引入到交叉熵损失中实现:

0611b294-47b1-11ed-a3b6-dac502259ad0.png

另一方面,在预测阶段,也直接将KNN的预测结果拿出来和模型对于[MASK]的预测结果做插值,得到最终的预测结果:

062a7b3a-47b1-11ed-a3b6-dac502259ad0.png

4 实验结果

文中在9个NLU数据集的few-shot和zero-shot learning上对比了效果,可以看到本文提出的方法对于效果的提升还是非常明显的。

063fd1a6-47b1-11ed-a3b6-dac502259ad0.png

此外,文中也对比了跨领域的效果,在source domain进行prompt learning,对比在target domain上的效果:

06658856-47b1-11ed-a3b6-dac502259ad0.png

5 总结

检索在NLP各类任务中的应用越来越多,本文也将检索用于分离可记忆的信息来提升模型的泛化能力,并取得了显著效果。检索通过信息记忆+查询的方式,引入了丰富的外部信息,能够让模型更多的容量服务于学习泛化性,而非简单的记住训练数据。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6515

    浏览量

    87616
  • KNN
    KNN
    +关注

    关注

    0

    文章

    22

    浏览量

    10729
  • 语言模型
    +关注

    关注

    0

    文章

    436

    浏览量

    10059

原文标题:不要让模型死记硬背—用检索增强Prompt Learning

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    面向对象的汽车制动系专家系统及其知识库的构建

    间分配的三种方法,提出采用踏板力——制动减速度曲线和踏板力——制动距离曲线来分析系统制动性能。2. 应用面向对象的知识表示方法初步建立了汽车制动系专家系统知识库,指出面向对象的
    发表于 12-02 12:42

    快速的学习方法?

    有老师跟我说学习方法,直接从模块化电路 一个一个的学,不明白的再看电路基础的相关章节,这样好吗?有没有 具体 有哪些模块,求详细说下,,或有其他快速学习方法.请指点下.
    发表于 06-25 22:28

    FPGA技术的学习方法

    。那么究竟如何才能高效学习好FPGA技术呢?本期邀请到的FPGA专家梅雪松,将为大家解答FPGA有效学习方法。专家观点:学习FPGA技术,或者不仅局限于FPGA,学习任何一个新技术只要
    发表于 01-11 13:58

    【Firefly RK3399试用体验】之结项——KNN、SVM分类器在SKlearn机器学习工具集中运用

    已知分类的训练数据集,然后用这些数据及其分类去训练分类器,然后再用测试数据输入训练器,训练器对这些数据做出分类,这也是一般机器学习的一种
    发表于 07-20 22:26

    学习STM32必备的知识库

    学习STM32必备的知识库包括STM32F103C8T6寄存器手册、STM32F103ZET6各IO口功能、STM32固件使用手册(中文版)、stm32学习方法,参考手册还有样品申请
    发表于 04-01 14:16

    机器学习KNN介绍

    机器学习(李航统计学方法)之KNN
    发表于 04-07 16:20

    单片机的学习方法和步骤

    ,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。第一步:基础理论知识学习基础理论
    发表于 07-15 09:11

    单片机学习方法和步骤相关资料推荐

    ,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。目录第一步:基础理论知识学习第二步:单片机实践1.有刻苦
    发表于 11-22 08:31

    单片机的学习方法和步骤

    不同的学习方法,根据笔者的亲身学习经验,提出笔者的学习方法和步骤。Part 1 基础理论知识学习基础理论
    发表于 11-30 06:38

    使用KNN进行分类和回归

    ,这种学习器很少或根本不处理训练数据。与线性回归等积极学习的算法不同,KNN 不会估计在训练阶段
    发表于 10-28 14:44

    stm32学习方法及资料

    1、 一共 24 个,不可能都学,都学也没用。按照我的工作需求必须学的有 16 个,这 16 个也不是全学。主要学习来源是各种例程代码、“固件函数用户手册”和“参考手册”。具体学习方法
    发表于 10-13 06:30

    领域知识库的研究与设计

    领域知识库的构建有利于知识检索和共享。分析了领域知识库应具备的条件,指出构建领域知识库的有效方法
    发表于 08-29 14:39 0次下载

    复杂知识库问答任务的典型挑战和解决方案

    ,即基于语义解析(基于SP)的方法和基于信息检索(基于IR)的方法。首先,我们形式化地定义了知识库问答任务并介绍了该任务下
    的头像 发表于 06-13 09:49 2147次阅读

    面向异质信息的网络表示学习方法综述

    面向异质信息的网络表示学习方法综述
    发表于 06-09 14:12 13次下载

    无监督域自适应场景:基于检索增强的情境学习实现知识迁移

    本文对比了多种基线方法,包括无监督域自适应的传统方法(如Pseudo-labeling和对抗训练)、基于检索的LM方法(如REALM和RAG
    发表于 12-05 14:14 208次阅读
    无监督域自适应场景:基于<b class='flag-5'>检索</b>增强的情境<b class='flag-5'>学习</b>实现<b class='flag-5'>知识</b>迁移