小样本学习在文心ERNIE3.0多分类任务应用–提示学习

小样本学习在文心ERNIE3.0多分类任务应用(提示学习)

项目链接:
https://aistudio.baidu.com/aistudio/projectdetail/4438610ontributionType=1

0.小样本学习简介

二分类/多分类任务在商品分类、 页分类、新闻分类、医疗文本分类等现实场景中有着广泛应用。现有的主流解决方案是在大规模预训练语言模型进行微调,因为下游任务和预训练任务训练目标不同,想要取得较好的分类效果往往需要大量标注数据,因此学界和业界开始研究如何在小样本学习(Few-shot Learning)场景下取得更好的学习效果。

提示学习(Prompt Learning) 的主要思想是通过任务转换使得下游任务和预训练任务尽可能相似,充分利用预训练语言模型学习到的特征,从而降低样本需求量。除此之外,我们往往还需要在原有的输入文本上拼接一段“提示”,来引导预训练模型输出期望的结果。

我们以Ernie为例,回顾一下这类预训练语言模型的训练任务。 与考试中的完形填空相似,给定一句文本,遮盖掉其中的部分字词,要求语言模型预测出这些遮盖位置原本的字词。

因此,我们也将多分类任务转换为与完形填空相似的形式。例如影评情感分类任务,标签分为1-正向,0-负向两类。

  • 在经典的微调方式中,需要学习的参数是以[CLS]向量为输入,以负向/正向为输出的随机初始化的分类器。

  • 在提示学习中,我们通过构造提示,将原有的分类任务转化为完形填空。如下图所示,通过提示我[MASK]喜欢。,原有1-正向,0-负向的标签被转化为了预测空格是很还是不。此时的分类器也不再是随机初始化,而是利用了这两个字的预训练向量来初始化,充分利用了预训练模型学习到的参数。

安装git仓库中的包

用到它的场景就是比如你有一个代码已经上传到github了,要分发给别人用,你就懒得再下载下来再导出成tar.gz或者whl文件,是可以直接让他从github 址安装

等价于:

先把paddlenlp develop分支下下载到本地,进行压缩上传到aistudio。

获得的paddlenl文件夹在C:Usersadmin路径下,然后进行压缩上传到aistudio
win10压缩参考下面链接:(或者直接用压缩软件压缩)
https://blog.csdn.net/sinat_39620217/article/details/126290315

0.2数据集格式要求

数据集格式
对于训练/验证/测试数据集文件,每行数据表示一条样本,包括文本和标签两部分,由tab符t分隔。格式如下

对于待预测数据文件,每行包含一条待预测样本,无标签。格式如下

对于分类标签集文件,存储了数据集中所有的标签集合,每行为一个标签名。如果需要自定义标签映射用于分类器初始化,则每行需要包括标签名和相应的映射词,由==分隔。格式如下

Note 这里的标签映射词定义遵循的规则是,不同映射词尽可能长度一致,映射词和提示需要尽可能构成通顺的语句。越接近自然语句,小样本下模型训练效果越好。如果原标签名已经可以构成通顺语句,也可以不构造映射词,每行一个标签即可。

1.模型训练与预测

这里提示一下:

如果运行程序 错:

是因为paddlenlp.prompt在2.4.0版本才会有,请检查上面步骤是否有遗漏,

结果部分展示:

Training Configuration Arguments

模型保存,以及指标性能

1.2 预测

在模型训练时开启–do_predict,训练结束后直接进行预测,也可以在训练结束后,通过运行以下命令加载模型参数进行预测:

可配置参数说明:

data_dir: 测试数据路径。数据格式要求详见数据准备,数据应存放在该目录下test.txt文件中,每行一条待预测文本。

output_dir: 日志的保存目录。

resume_from_checkpoint: 训练时模型参数的保存目录,用于加载模型参数。

do_predict: 是否进行预测。

max_seq_length: 最大句子长度,超过该长度的文本将被截断,不足的以Pad补全。提示文本不会被截断。

!python train.py --do_predict --data_dir ./data/tnews --output_dir .

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月16日
下一篇 2022年7月16日

相关推荐