本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经验分享,旨在帮助读者更好地理解和应用这些领域的最新进展
https://arxiv.org/pdf/2001.07676.pdf
如上图所示,是一个文本情绪分类的任务:判别“Best pizza ever!” 是正面情绪还是负面情绪?
文本提出的创新思路是:
1、可以先对文本进行完心填空任务的构造,如变成“Best pizza ever! It was __”。该方案可以进行零样本学习,利用MLM(即Masked Language Model)预训练的掩码语言模型模型(如BERT),预测得到缺失的token预测为“great”或“bad”的概率。即预训练模型能在预训练数据上学习到标签“great”或“bad”语义,以及其填入文中的语义合理性。
2、其实在第1步就能进行文本分类了,但是作者认为还可以进一步训练出分类器。我们利用集成学习的方式,多个预训练模型得到集成的soft-label
3、利用无监督文本数据和soft-label train一个文本分类模型
总结思考
PET的思想还可以进行有监督的少样本学习:对于有标签的数据,构造样本的时候,我们先给每个句子补上Pattern,除了Pattern自带的Mask位置之外,再还随机Mask其他一部分,以增强对模型的正则。
实操
接下来,我们使用 OpenPrompt 架构来进行实操,下面OpenPrompt 的整体架构图:
请注意,不是所有模块都必须使用 Prompt Learning。例如,在生成任务中,学习过程中没有进行 verbalizers 的学习。 PromptTrainer 是一个控制数据流和训练过程的控制器,具有一些独特的属性,用户也可以以常规方式实现训练过程。
情感分类
步骤 1. 定义任务
第一步是确定当前的 NLP 任务,想想你的数据是什么样的,你想从数据中得到什么!也就是说,这一步的本质是确定任务的classses和InputExample。为简单起见,我们以情绪分析为例。
from openprompt.data_utils import InputExample
classes = [ # 情绪分析分为两类,一类是负面的,一类是正面的
"负面",
"正面"
]
dataset = [ # 为简单起见,仅举两个例子
# text_a 是数据的输入文本,其他一些数据集在一个样本中可能有多个输入句子。
InputExample(
guid=0,
text_a="今天阳光灿烂。",
label=1
),
InputExample(
guid=1,
text_a="最近天天下雨。",
label=