目录
一、 NLP的两大巨变
基于完全监督的学习,即只在目标任务的输入输出例子的数据集上训练特定任务的模型,已经在机器学习各领域上充分发挥了作用,NLP也不例外。为了学习高质量的模型,早期的NLP模型主要依赖于特征工程,即工程师利用其专业知识来定义提取原数据集,从而在学习中能被注意到。随着神经网络模型的出现,特征提取与模型的训练可以同步进行,问题的侧重点转移到了架构工程上,即构建合适的网络模型来提取数据特征。
近些年新兴的基于预训练、微调的范式正取代以往的学习方式,这也成为了NLP领域的第一次巨变。这个范式下,一个具有固定架构的模型被预训练为语言模型(LM),而后基于大量原始数据集的LM可以学习到可适用于普遍任务的通用特征。之后通过引入额外的参数及特定任务的目标函数来进行微调从而适应下游任务。问题转移到了目标工程上,即选择合适的训练目标适用于预训练和微调两个阶段(如损失函数)。
如今我们正处于第二次巨变中,即“预训练微调”结构正在被“预训练、提示和预测”结构取代,即通过一些提示信息如填空、翻译等,通过无监督的方式训练单一的LM直接用于解决大量的问题。通过提示来控制模型的行文,问题也就转移到了提示工程,即找到最合适的提示。
二、 Prompting的正式描述
2.1 NLP中基于监督的学习
利用条件概率P(y|x;\theta)预测,其中x为输入,y为输出。通过包含输入输出的数据集来学习模型的参数\theta,要求我们有完整的数据集。
2.2 Prompting的基础
想法的最初来源于我们没有大量的数据来进行有监督的学习。prompting通过学习一个LM对输入文本本身的概率进行建模,预测y的概率。共分为添加提示、搜索答案、答案映射三个步骤。
2.2.1 Prompt Addition
定义一个构造函数x=f_{prompt}(x)将输入文本x修改为LM中使用的模式串。
构造函数共两步:1.应用一个模板,共有两个槽一个是输入槽[X]一个是答案槽[Z],后者用于存放升温答案文本,以后将映射到y。2.用输入文本x填入槽[X]中。
其中槽的数量可以根据不同任务改变,答案槽在文本中间的称作cloze prompt,在末尾被称作perfix prompt
2.2.2 Answer Search
搜索得分最高的答案,使整个LM得分最大
定义函数f_{fill}(x^{'},z)为在x’的答案槽中填入词z,同时对每一个可能的答案z给一个分类用的分数,如Z={开心,平静,难过,死去活来}->{++,+,-,--}。
最后定义搜索函数\hat{z} = searchP(f_{fill}(x^{'},z);\theta) \ \ \ \ z\in{Z}
搜索函数可以使搜索搜索最高分输出的argmax搜索也可以是按照LM概率分布随机生成输出的抽样。
2.2.3 Answer Mapping
从得分最高的答案z到最高分对应的输出y在答案为一时是一样的(翻译等NLG任务),在有多个答案时(如同义词)就要在搜索到的答案和输出值间构造一个映射。
2.3 Prompting设计的几个方面
1.预训练模型
2.提示工程 即如何构造f_{prompt}函数
3 答案工程 不同任务对应的Z集合不同
4 拓展范式 将上述框架进行拓展
5 基于Prompt来训练参数
三、预训练语言模型
3.1 训练目标
预训练LM的主要任务几乎都包括对一段文本x的预测概率目标。
Standard Language Model(SLM)目标即使训练模型以优化语料库中文本的概率P(x),通过自回归预测,通常为从左至右。
替代SLM的一种方法为降噪目标,利用噪声函数修改输入文本,在降噪文本下预测原句子的概率,共有两种常见形式。
Corrupted Text Reconstructed(CTR)仅对输入句子的噪声部分计算损失,将文本恢复至未损失的状态。
Full Text Reconstruction(FTR)计算整个输入文本的损失来重构文本,无论其是否经过噪声处理。
训练目标在确定其对特定提示任务的适用性起着重要作用。如SLM更适合于prefix prompt,CTR、FTR更适合cloze prompt;SLM和FTR更适合文本生成任务。
3.2 噪声函数
mask在不同层次上用一个特殊token替代原词,一个或多个,可以随机选择也可以人为设计。
Replace用另一个token替换原词。
Delete将若干个词从文本中删除,不增加其他token。
Permutation将文本先分块再排列。
3.3计算的方向
分为从左到右、双向、混合、随机几种情况,主要利用注意力模型中的masked参数实现。