• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

P-tuning v1 v2

武飞扬头像
开心的火龙果
帮助3

### GPT Understands, Too (P-tuning)
根据训练目标,预训练语言模型能够划分为三种类型:
1. 单向语言模型:GPT,用于自然语言生成任务
2. 双向语言模型:BERT,用于自然语言理解任务
3. 混合语言模型:UniLM,是上述两种方法的结合

在以前,研究者们认为GPT类型的模型在自然语言理解任务上表现不好。随着GPT-3的出现,这个看法被打破了。只要设计出合适的prompt,单向语言模型也能够在自然语言理解任务上有出色表现。
但prompt的设计并不容易,往往一个单词的改变就会使最终结果产生巨大改变,例如下面这个表格。

学新通

这篇文章的目的就是设计一个自动的生成连续prompt的方法,来提升模型的效果,本文将该方法称为P-tuning。P-tuning仅仅修改了模型的输入部分,采用了一种连续的表征来代替人工设计的离散prompt。
假设一个人工设计的离散模版用下面的公式表示:
学新通
其中p代表模版token,x代表数据的原始输入,y代表数据的标签;那么P-tuning的模版可以用下面的公式表示:
学新通
其中h代表P-tuning的连续prompt表征,e代表一个预训练的语言模型,x代表数据的原始输入,y代表数据的标签。在面对下游任务时,通过优化h来进行模型优化:
学新通
连续prompt在设计时如果是随机初始化的话,优化器很容易陷入局部最优,另外,可以很容易想到的是,连续的prompt embedding之间应该不是相互独立的,而应该是含有依赖关系的。因此作者在这里设计了一个双向LSTM模型来生成prompt embedding。
学新通
该图显示了在LAMA-34k的效果,其中MP代表手动设计的prompt。
学新通
该图显示了在LAMA-29k上的实验效果,可以看到和MP对比的话,P-tuning的效果有明显提升,和FT对比的话,效果也不错。
学新通
该表格显示了:
1. 基于bert-base模型,在5/7的数据集上,P-tuning的效果比finetune等更好。
2. 基于gpt模型,在全部的数据集上,P-tuning的效果都比finetune等更好。
3. 对比gpt-base和bert-base,在6/7的数据集上,基于P-tuning,gpt-base的效果都更好。
4. 这个实验颠覆了我们以前的认知:即在自然语言理解任务上,双向模型比单向模型更好。

下图是关于few-shot的实验:
学新通

### P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks
提出P-Tuning v2的原因:
1. 先前的工作显示,Prompt tuning在normal-sized的预训练模型上效果一般;
2. 现有的Prompt tuning方法在较难的文本序列问题上效果不好;

P-Tuning v2的思路来源:
基于prefix-tuning设计的优化版本 (Li and Liang, 2021)

具体介绍:
在P-Tuning中,continuous prompt被插入到输入序列的embedding里,除了语言模型的第一层之外,其他层的prompt embddding都来自于上一层。这样的设计存在两个问题:
1. 约束了要优化的参数量。由于模型的input text的长度是一定的,一般是512,那么prompt的长度就不能过于长。
2. 当模型层数很深时,tuning时模型的稳定性难以保证;模型层数越深,在第一层输入的prompt对后面的影响是难以预估的,这会影响模型的稳定性。
P-Tuning v2的改进在于,将只在第一层插入continuous prompt修改为在许多层都插入continuous prompt,层与层之间的continuous prompt是相互独立的。这样一来,在模型tuning时,可训练的参数就增多了,从0.01%增加到了0.1%-3%。
学新通
除了这个在模型结构上的重大修改之外,还有一些优化手段。
1. Reparameterization:之前的方法(例如P-Tuning/prefix-tuning)为了增强模型鲁棒性,提升训练速度和模型表现,针对continuous prompt设计了LSTM/MLP等Reparameterization的方法。但是在实践中,作者发现这些设计并不一定有效。
2. Prompt length:在不同的任务上的表现和prompt的长度有关系。
3. Multi-task learning:多任务学习能够很大的提升模型表现。
实验对比:
学新通
这个实验显示,在复杂任务(例如RTE, BoolQ,CB)上,可以看到PT的效果相比于FT要差的多。而P-Tuning v2的差别则没那么大,甚至更好。表格的后两行是在超大模型上的表现的对比,可以看到PT和FT的效果逐步接近了。这个实验证明了该论文在一开始提出的观点。
学新通
这个实验在对比了在一些偏难的任务上的模型效果。
消融实验:
学新通

这个实验将Prompt depth作为变量进行了实验,在左图上发现,在模型的5-24层添加prompt能够达到和所有层都添加prompt一致的效果。另外,在深层添加prompt的效果总是好于在浅层添加。
学新通
这个实验是关于Embedding v.s. MLP reparameterization,以及Prompt Length的消融实验。对于简单的NLU任务,较短的提示足以获得最佳性能;对于较难的序列任务,通常,超过 100 的提示会有所帮助。

p-tuning代码实现的理解:https://zhuanlan.zhihu.com/p/459305102

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfehajh
系列文章
更多 icon
同类精品
更多 icon
继续加载