P-tuning通过将离散提示转化为可学习的连续嵌入向量,结合提示编码器优化提示嵌入,显著提升了GPT在自然语言理解任务上的性能,同时保持了预训练模型参数不变,具有自动化提示搜索、稳定性增强和更全面激活模型知识等优势。一、背景与动机GPT与BERT的差异:GPT是单向语言模型,主要用于生成任务;BERT是双向语言模型,主要用于理解任务。传统微调下,GPT在NLU任务上表现较差。手工提示的局限性:难以找到最佳提示,需大量尝试和验证。容易过拟合测试集,影响模型泛化能力。对提示敏感,微小改动可能导致性能大幅波动。P-tuning的提出:为了解决手工提示的问题,P-tuning通过训练可学习的连续提示嵌入,自动搜索连续空间中的提示,避免了手工提示的繁琐和不稳定性。二、P-tuning方法详解1. 传统提示的问题难以找到最佳提示:手工编写提示需要大量尝试和验证,寻找最佳提示如同大海捞针。容易过拟合测试集:提示的选择可能影响模型在测试集上的表现,导致过拟合。对提示敏感:模型对提示的微小改动非常敏感,可能导致性能大幅波动。2. P-tuning的核心思想提示嵌入初始化:使用可学习的嵌入向量替代手工提示中的离散词汇,初始值可以是随机的。提示编码器:使用轻量级编码器(如双向LSTM)对提示嵌入进行建模,捕获提示中不同位置的相关性。模型优化:通过最小化下游任务的损失函数,优化提示嵌入和提示编码器的参数,保持预训练语言模型参数不变。3. 提示编码器的作用解决离散性问题:预训练语言模型的词嵌入空间高度离散,直接优化提示嵌入可能陷入局部最小值。提示编码器通过序列建模缓解这一问题。解决关联性问题:提示中的各个位置应具有关联性,提示编码器捕获提示嵌入之间的相关性,使优化过程更有效。4. 锚定词的使用增强提示适应性:在某些任务中,添加少量任务相关的锚定词(如文本蕴含任务中的“?”)可以进一步提升模型性能。标识提示组成部分:锚定词用于标识提示中的不同部分,增强提示对任务的适应性。三、实验与结果分析1. 知识探测(LAMA)上的实验数据集:LAMA-34k:包含34,039个测试三元组,涉及41个Wikidata关系。LAMA-29k:覆盖GPT和BERT词表的交集,约29,000个测试三元组。实验设置:模型选择:GPT和BERT,预训练参数保持不变。提示模板:采用固定格式,如P-tuning中使用(3, sub, 3, obj, 3)的模板。评价指标:Precision@1,衡量模型在第一个预测结果上的准确率。实验结果:性能提升:在LAMA-34k上,Precision@1从43.3%提升到50.6%;在LAMA-29k上,从45.2%提升到64.2%。优于离散提示搜索方法:如AutoPrompt等。与微调比较:P-tuning在不改变预训练模型参数的情况下,取得了与甚至超越微调方法的效果。GPT与BERT对比:P-tuning对GPT的提升效果显著,对BERT的提升相对较小。讨论:知识调用:P-tuning能更好地激活预训练语言模型中已存储的知识。避免遗忘:微调可能导致模型遗忘之前学到的知识,P-tuning通过优化提示嵌入避免了这一问题。2. SuperGLUE基准上的实验实验设置:任务选择:在SuperGLUE基准的7个任务上进行实验,包括问答、文本蕴含、共指消解等。模型选择:使用类似规模的GPT和BERT模型进行对比。训练设置:全监督学习:使用完整训练集进行训练,验证集进行模型选择和参数调整。少样本学习:每个任务仅使用32个训练样本,构建相应的验证集。实验结果:全监督学习:P-tuning的效果:在多数任务上,使用P-tuning的GPT模型表现与BERT相当,甚至超越BERT。GPT的性能提升:P-tuning使GPT在自然语言理解任务上表现出色。少样本学习:与手工提示比较:P-tuning自动搜索的提示优于手工设计的提示,且对提示的不敏感性使其在少样本学习中更具优势。与最新方法比较:P-tuning在少样本学习上超过了之前的最先进方法,如PET和GPT-3。讨论:提示优化的重要性:P-tuning通过优化提示嵌入,充分利用了预训练语言模型中潜在的任务相关知识。对不同模型的效果:P-tuning对单向的GPT模型提升更显著,对双向的BERT模型也有一定效果。四、QA1. 为什么P-tuning对GPT的提升比对BERT更明显?GPT是单向语言模型,上下文获取受限,P-tuning通过优化提示嵌入,更好地激活其在预训练过程中学到的知识,弥补了上下文获取的限制。BERT作为双向模型,已在自然语言理解任务上表现出色,P-tuning对其的提升空间相对较小。2. P-tuning是否需要大量的计算资源?P-tuning只需在提示嵌入和提示编码器上进行优化,预训练语言模型参数保持不变,计算开销比直接微调整个模型小得多。提示编码器通常是轻量级的(如双向LSTM),不会带来显著的计算负担。3. P-tuning如何缓解提示对模型性能的不稳定性?传统手工提示对模型性能影响大,微小改动可能导致性能大幅波动。P-tuning在连续空间中搜索提示嵌入,消除了对离散提示的依赖,提示嵌入可训练,模型可自动调整提示以适应任务,提高了性能的稳定性。4. 在实际应用中,P-tuning是否比传统微调更有优势?资源受限:微调大型预训练模型需要大量计算资源,P-tuning只需优化少量参数,计算开销更小。少样本学习:在数据较少的情况下,P-tuning能更有效地利用预训练模型中学到的知识,比传统微调更具优势。避免过拟合:微调可能导致模型过拟合训练数据,P-tuning通过固定模型参数,降低了过拟合的风险。5. P-tuning和Prompt Tuning的区别在哪里?P-tuning使用了提示编码器。P-tuning主要针对NLU任务,为了证明GPT也能做好NLU任务。P-tuning能够灵活地在输入序列的任意位置插入提示,而不是只在序列开头插入,适用于多种预训练模型和任务类型。6. 为什么要使用提示编码器(Prompt Encoder)?离散性:预训练语言模型的嵌入空间是离散的,仅由词汇表中有限的词的嵌入向量组成。未训练区域的不可预测性:模型对嵌入空间中未训练过的区域的响应是不可预测的。对P-tuning的影响:直接优化随机初始化的提示嵌入可能效果不佳,需要借助提示编码器等机制来引导优化过程。提示编码器的必要性:通过提示编码器,可以将提示嵌入从随机、未训练的状态转化为模型可以理解和利用的形式,从而提高模型在下游任务上的性能。



































