1-范式发展历程:
- P1. 非神经网络时代的完全监督学习 (Fully Supervised Learning, Non-Neural Network)--特征工程
- P2. 基于神经网络的完全监督学习 (Fully Supervised Learning, Neural Network)--架构工程
- P3. 预训练,精调范式 (Pre-train, Fine-tune)--目标工程
- P4. 预训练,提示,预测范式(Pre-train, Prompt, Predict)--prompt挖掘工程
从 2017-2019 年开始,NLP 模型发生了翻天覆地的变化,这种全监督范式发挥的作用越来越小。具体而言,研究重点开始转向预训练、微调范式。在这一范式下,一个具有固定架构的模型通过预训练作为语言模型(LM),用来预测观测到的文本数据的概率。由于训练 LM 所需的原始文本数据需要足够丰富,因此,这些 LM 都是在比较大的数据集上训练完成。之后,通过引入额外的参数,并使用特定任务的目标函数对模型进行微调,将预训练 LM 适应于不同的下游任务。在这种范式下,研究重点转向了目标工程,设计在预训练和微调阶段使用的训练目标(损失函数)。
「预训练、微调」过程被称为「预训练、prompt 和预测」的过程所取代。在这种范式中,不是通过目标工程使预训练的语言模型(LM)适应下游任务,而是重新形式化(Reformulate)下游任务,使其看起来更像是在文本 prompt 的帮助下在原始 LM 训练期间解决的任务。通过这种方式,选择适当的 prompt,该方法可以操纵模型的行为,以便预训练的 LM 本身可以用于预测所需的输出,有时甚至无需任何额外的特定任务训练。这种方法的优点是给定一组合适的 prompt,以完全无监督的方式训练的单个 LM 就能够用于解决大量任务。然而该方法也存在一个问题——这种方法引入了 prompt 挖掘工程的必要性,即需要找出最合适的 prompt 来让 LM 解决面临的任务。
不同范式之间存在一定的规律
1.1-每个范式都会涉及繁琐的,需要人来参与(提供先验)的工程(engineering)
- 特征工程:研究者要进行无聊的特征模版定义环节---不就是我们的pattern
- 结构工程:神经网络虽然解放手动配置特征模板所需要的人力,但是是以需要人工去设计合适网络结构为代价的。因此,在这样的研究范式下,研究人员花了很多时间在探究最适配下游任务的结构偏置(Structural Bias)。比如是使用Rnn、Transformer。
- 目标函数挖掘:这个过程研究者往往是通过引入额外的目标函数到预训练语言模型上,以便让其更适配下游任务。这个过程有时候也需要些网络结构的挖掘,但相比较而言,不是这个范式的主旋律,一个实际的原因在于:(1)预训练过程本身费时,过度的结构偏置(structural bias)探索开销过大;(2)精调的过程中,很多时候 预训练语言模型本身提供的知识已经可以让大家“忘记”使用卷积神经网络和循环神经网络的差异。
- Prompt挖掘工程:在这个过程我们往往不对预训练语言模型改动太多,我们希望是通过对合适prompt的利用将下游任务建模的方式重新定义。
1.2-新范式带来的收益可以让我们暂时忽略那些额外需要的人力代价
- P1-P2:总是吐槽神经网络调参就是炼丹,但是享受着不用人工配置模版,就能收获还不错甚至更好的结果
- P2-P3:研究哪一种损失函数效果更好总比排列组合网络结构看起来更好
- P3-P4:prompt learning激活了类似于小样本学习等场景
2-什么是Prompting Learning:
在传统的用于 NLP 任务的监督学习系统中,输入 x 通常是文本数据,并基于模型 P(y|x; θ) 预测输出 y。但是,监督学习面临的一个主要问题