提示学习(prompt learning)核心工作原理指南,兼实现代码理解。提示学习三个层面的本质解释。

下文我们从三个层面描述提示学习的本质,包括原理和具体实作方式。

战略级描述(其实就是宏观叙事)

提示学习是利用模板激发预训练语言模板如(bert/bert)之类模型中的事实性知识(factual knowledge), 然后在将得到的事实性知识作为答案空间,映射到目标空间从而完成需要的下游任务。

战术级描述(其实就是基本手法描述)

通常我们是将 需要处理的文本原文加上提示性模板(模板工程)一起输入预训练模板中,然后将得到的答案(即通过模板激发出来的知识的所组成的空间称为答案空间),将答案通过算法映射到目标标签(verbalizer)。

如:

It's a shine day, we are all happy. It is .

将以上句子输入bert/bart ,就会得到包括的向量,如果用bertmaskedLM,可能得到,比如 good, well, nice之类词输出 (选择输出 中概率最大的词),我们有以下的映射 器

[good, well,nice, fantastic....] -> [postitive]

[bad, terrible,....] -> [negative]

上面的映射器术语叫 verbalizer. 从预测 出来的词向最标的标签映射 就可以得到分类结果。上面是情感分类,其实就是一个二分类任务。

实现代码示例:  基于prompt learning的情感分类示例代码_znsoft的博客-CSDN博客

作业层面(其实就是实作方式了)

就是步骤啦:

1. 模板工程 (最简单的就是手工构建 模板,还有自动构建的soft prompt之类)

2. 语言模板预测与fine tuning(promt tuning) ( 将文本和模板的组合输入语言模板,如bert/bart)

3. 输出映射到特征空间 (全连接网络或概率映射)

在第2步输出 的其实就是一个或多个向量(取决于槽位),怎么把它映射 到目标的标签空间,这个其实就是verbalizer的工作。本步通常用全连接网络或概率映射处理。

4. 输出精调(对第3步的输出进行打磨)

输出 的内容可能并不完善,怎么将它打磨到正确的目标标签。 n:n 选择问题,二部图或其它算法实现。通常在通过logits值 进行映射 时需要进行后处理。

实现代码示例: 开发中

你可能感兴趣的:(其它,人工智能)