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

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

3天内不再提示

应用于任意预训练模型的prompt learning模型—LM-BFF

自然语言处理爱好者 来源:AI部落联盟 作者:JasonCai 2021-08-16 11:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近又出了个比较吸引人眼球的Prompt Learning,甚至该方法还被称之为NLP的“第四范式”,具体有哪几项请参考以下链接:

综述文章:https://arxiv.org/pdf/2107.13586.pdf

相关资源:http://pretrain.nlpedia.ai

Part1什么是Prompt Learning

从BERT诞生开始,使用下游任务数据微调预训练语言模型 (LM)已成为 NLP 领域的通用做法。直到GPT-3模型首先将自然语言的提示信息(prompt)和任务示例(demonstration)作为上下文输入给GPT-3,使得GPT-3只需要少数的几个样本,不需要训练底层的参数便能够处理任务。应该是受到这一做法的启发,目前很多研究聚焦在Prompt Learning上,只为了更好的激发语言模型的潜能。

在了解Prompt Learning之前,首先我们要知道什么是prompt。prompt是提示的意思,也就是说需要提示模型我们想让它干什么。通常在GPT-3中,我们输入一段描述,再加上“翻译”或者“问答”的prompt,那么GPT-3会生成相应的结果。

最近该玩法在NLU中也得到了应用,比如情感分类任务,给定一句话“I missed the bus today.”,在其之后添加一个prompt:“I felt so __”,之后让语言模型用一个情感类的词进行完型填空,再将填空的词语映射到标签,这样一来就能够解决分类任务了。

大家发现没有,这样一来减少了训练和测试阶段之间的gap,因为我们在预训练的时候使用的MLM任务就是一个完型填空任务,通常使用分类任务fine-tuning模型的时候需要加一个hidden_size * label_size的FFN,还得专门去训练这个FFN的参数。但是如果使用Prompt Learning的方式,就省略了这一步了。这样一来岂不是不用花大力气训练模型了?哈哈是的,很多研究证明Prompt Learning在小样本(few-shot)场景下很有效。

Part2Few-shot Learner

论文标题:Making Pre-trained Language Models Better Few-shot Learners

论文来源:ACL2021

论文链接:https://arxiv.org/pdf/2012.15723.pdf

论文代码:https://github.com/princeton-nlp/LM-BFF

本文主要有两个贡献点:

(1)基于提示(prompt)进行微调,关键是如何自动化生成提示模板;

(2)将样本示例以上下文的形式添加到每个输入中,关键是如何对示例进行采样;

1prompt-based fine-tuning

之前说过GPT-3模型基于prompt生成文本。受到该启发本文提出了一种可以应用于任意预训练模型的prompt learning模型——LM-BFF(小样本微调预训练模型)。

9d8d181e-fd9a-11eb-9bcf-12bb97331649.png

从上图可以看出在预训练的时候使用的MLM任务就是一个完型填空任务,在分类任务中微调的时候需要加一个hidden_size * label_size的FFN,微调的过程需要训练这个FFN的参数。在使用Prompt Learning的方式的时候省略了这一步。这样一来就不用花大力气训练模型了,而且该方法减少了训练和测试阶段之间的gap,在小样本(few-shot)场景下很有效。

在具体的实验过程中,作者发现使用不同的模板或不同的标签词进行微调得到的效果是不同的,如下图所示:

9dda6e0c-fd9a-11eb-9bcf-12bb97331649.png

比如对于同一个标签词,如果使用的prompt的模板不同(替换了某个单词或者删除某一个标点符号),得到的结果会有较大的波动;而且当选择不同的标签词时,对预测的结果也会产生影响。这是由于人工设计模板和标签词时候和模型本身具有的gap带来的缺陷。因此作者提出一种自动创建模板的方法。

2Automatic Prompt Generation

Prompt的自动生成又分为了两个部分(label的生成和模板的生成):

Label Generation

这个部分主要分成3步:

(1)首先在训练集中,针对未经过微调的语言模型,对于每个label都找到使其条件概率最大Topk个单词;

9e0efc26-fd9a-11eb-9bcf-12bb97331649.png

(2)综合每个类别下的候选标签词,然后找出使得训练集正确率最大的top-n个分配方式;

(3)使用dev集对模型进行微调,从n个分配方式中选择最佳的一个标签词,构建标签映射关系M。

Prompt Generation

模板的生成则是使用的T5模型,固定标签词,生成固定模板。

9e50d790-fd9a-11eb-9bcf-12bb97331649.png

整体过程如下所示:

Fine-tuning with Demonstration

在GPT-3中,微调的时候从训练集中随机抽取32个示例,以上下文的形式添加到每个输入中;

这种方式的缺陷在于:样本示例的数量会受到模型最大输入长度的限制;不同类型的大量随机示例混杂在一起,会产生很长的上下文,不利于模型学习。

LM-BFF采用2种简单的方式进行了改进:

对于每个输入,从每个类别中随机采样一个样本示例,最终将所有类别下的采样示例进行拼接输入;

对于每个输入,在每个类别中,通过与Sentence-BERT进行相似度计算、并从排序得分的top50%中随机选择一个样本示例。

Results

本文提出了一种简单而又有效的小样本微调方法——LM-BFF。主要包括2部分:

采用提示自动构建方式来进行「基于模板的微调方法」。

动态选择样本示例,作为输入的上下文。但LM-BFF也有以下缺陷:

LM-BFF仍落后基于全量标注数据的标准微调方法(PS:废话,数据目前还是越多好~)

LM-BFF自动构建提示的方法虽然有效,但扩展搜索空间在现实应用中仍是一个巨大挑战;

LM-BFF仅支持几种特定的任务:1)能自然转化为「空白填空」问题,如结构化预测的NER任务可能就不适合;2)句子输入不要太长;3)不要包含过多的类别;其中2)和3)可以在长距离语言模型中进行改善。

编辑:jq

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

    关注

    0

    文章

    368

    浏览量

    16715
  • nlp
    nlp
    +关注

    关注

    1

    文章

    491

    浏览量

    23192

原文标题:Prompt Learning-使用模板激发语言模型潜能

文章出处:【微信号:NLP_lover,微信公众号:自然语言处理爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    模型。 我们使用MNIST数据集,训练一个卷积神经网络(CNN)模型用于手写数字识别。一旦模型训练
    发表于 10-22 07:03

    我如何用Prompt工程将大模型调教成风控专家

    波折、顿悟和惊喜。 今天,我想复盘整个过程,分享我如何通过一套循序渐进的“Prompt工程心法”,将一个“什么都懂一点,但什么都不精”的通用大模型,一步步调教成能够精准识别复杂电商风控风险的“AI专家”。 一、 引言:当算
    的头像 发表于 09-08 14:22 289次阅读
    我如何用<b class='flag-5'>Prompt</b>工程将大<b class='flag-5'>模型</b>调教成风控专家

    模型时代的深度学习框架

    量是约为 25.63M,在ImageNet1K数据集上,使用单张消费类显卡 RTX-4090只需大约35~40个小时 ,即可完成ResNet50模型训练。在 大模型时代 ,由于大
    的头像 发表于 04-25 11:43 659次阅读
    大<b class='flag-5'>模型</b>时代的深度学习框架

    请问如何在imx8mplus上部署和运行YOLOv5训练模型

    我正在从事 imx8mplus yocto 项目。我已经在自定义数据集上的 YOLOv5 上训练了对象检测模型。它在 ubuntu 电脑上运行良好。现在我想在我的 imx8mplus 板上运行该模型
    发表于 03-25 07:23

    用PaddleNLP为GPT-2模型制作FineWeb二进制训练数据集

    作者:算力魔方创始人/英特尔创新大使刘力 《用PaddleNLP在4060单卡上实践大模型训练技术》发布后收到读者热烈反响,很多读者要求进一步讲解更多的技术细节。本文主要针对大语言模型
    的头像 发表于 03-21 18:24 3831次阅读
    用PaddleNLP为GPT-2<b class='flag-5'>模型</b>制作FineWeb二进制<b class='flag-5'>预</b><b class='flag-5'>训练</b>数据集

    训练好的ai模型导入cubemx不成功怎么处理?

    训练好的ai模型导入cubemx不成功咋办,试了好几个模型压缩了也不行,ram占用过大,有无解决方案?
    发表于 03-11 07:18

    从Open Model Zoo下载的FastSeg大型公共训练模型,无法导入名称是怎么回事?

    从 Open Model Zoo 下载的 FastSeg 大型公共训练模型。 运行 converter.py 以将 FastSeg 大型模型转换为中间表示 (IR): pyth
    发表于 03-05 07:22

    为什么无法使用Dla_compiler在OpenVINO™中编译用于FPGA的IR模型

    导入了训练神经网络模型。 使用模型优化器转换为 IR 模型: mo --saved_model_dir \"{path_savedMod
    发表于 03-05 06:00

    用PaddleNLP在4060单卡上实践大模型训练技术

    作者:算力魔方创始人/英特尔创新大使刘力 之前我们分享了《从零开始训练一个大语言模型需要投资多少钱》,其中高昂的训练费用让许多对大模型
    的头像 发表于 02-19 16:10 2134次阅读
    用PaddleNLP在4060单卡上实践大<b class='flag-5'>模型</b><b class='flag-5'>预</b><b class='flag-5'>训练</b>技术

    腾讯公布大语言模型训练新专利

    近日,腾讯科技(深圳)有限公司公布了一项名为“大语言模型训练方法、装置、计算机设备及存储介质”的新专利。该专利的公布,标志着腾讯在大语言模型训练领域取得了新的突破。 据专利摘要显示,
    的头像 发表于 02-10 09:37 716次阅读

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    今天学习<基于大模型的RAG应用开发与优化>这本书。大模型微调是深度学习领域中的一项关键技术,它指的是在已经训练好的大型深度学习模型
    发表于 01-14 16:51

    KerasHub统一、全面的训练模型

    深度学习领域正在迅速发展,在处理各种类型的任务中,训练模型变得越来越重要。Keras 以其用户友好型 API 和对易用性的重视而闻名,始终处于这一动向的前沿。Keras 拥有专用的内容库,如
    的头像 发表于 12-20 10:32 773次阅读

    GPU是如何训练AI大模型

    在AI模型训练过程中,大量的计算工作集中在矩阵乘法、向量加法和激活函数等运算上。这些运算正是GPU所擅长的。接下来,AI部落小编带您了解GPU是如何训练AI大模型的。
    的头像 发表于 12-19 17:54 1325次阅读

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    介绍了如何使用分类任务进行手写数字的分类。相信大家脑海中可能会产生如下疑问: 数据依赖性强:分类模型的表现通常依赖于大量的标注数据进行训练。获取高质量、大规模的数据集既耗时又昂贵。 泛化能力有限:模型
    发表于 12-19 14:33

    【「大模型启示录」阅读体验】如何在客服领域应用大模型

    地选择适合的模型。不同的模型具有不同的特点和优势。在客服领域,常用的模型包括循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元(GRU)、Transformer等,以及基于这些架构的
    发表于 12-17 16:53