首页 > 其他分享 >迁移Prompt–解决Prompt Tuning三大问题!

迁移Prompt–解决Prompt Tuning三大问题!

时间:2023-05-02 10:32:28浏览次数:46  
标签:Prompt Tuning 训练 任务 prompts prompt 三大 tuning


迁移Prompt–解决Prompt Tuning三大问题!_python

文 | Harris

刘鹏飞博士将近代NLP的研究划归为四种范式 [1] 并把预训练语言模型加持下的Prompt Learning看作是近代自然语言处理技术发展的“第四范式”。当我们使用新范式的方法的时候,能够意识到它带来的优异性可能是以某种“人力”牺牲为代价的。而如何让这种人力代价降到最低,往往就是新范式里需要解决的核心问题 [2]。Prompt Learning刚兴起之时,prompts大多是人工设计的,为了减少人工,后来涌现出一系列用自动化方式获取prompts的研究工作。Soft prompts由于其易用性、易理解性和优异的性能在近一年来获得了广泛的关注。今年四月份,谷歌提出Prompt-tuning [3],其为每个任务分配一个可训练的soft prompt并保持预训练模型的参数不变,发现在使用较大的预训练模型时,Prompt-tuning可以媲美微调整个预训练模型(Model-tuning)的性能。虽然Prompt-tuning非常有效,其仍然面临如下三个问题:

  • 在使用较小的预训练模型时,Prompt-tuning的表现仍旧与Model-tuning的表现有明显的差距
  • Few-shot的场景下,Prompt-tuning的表现并不理想
  • 相比于Model-tuning,Prompt-tuning的收敛速度较慢,需要训练更多的步数

幸运的是,这些问题都可以通过更好地初始化soft prompts解决!一个直观的想法是可以通过预训练模型词汇表中的一些词来初始化,比如对于分类问题就可以用类别标签对应的词来初始化。但是类别标签词数目有限而且并没有很多任务相关的信息。

一个更好的方法是:用在源任务上训练的soft prompts来初始化目标任务的soft prompts!这个想法有点类似迁移学习的意思。迁移学习通俗来讲,就是运用已有的知识来学习新的知识。核心是找到已有知识和新知识之间的相似性。迁移prompts也类似,如果源任务与目标任务越相似,那么迁移的效果可能就越好。针对prompts的可迁移性问题,谷歌和清华的研究员们进行了初步的探索,笔者接下来为大家一一解读。想要快速浏览 takeaway 干货的读者,可以直接移步文末总结部分。

相关论文

  • PPT: Pre-trained Prompt Tuning for Few-shot Learning https://arxiv.org/abs/2109.04332
  • SPoT: Better Frozen Model Adaptation through Soft Prompt Transfer https://arxiv.org/abs/2110.07904
  • On Transferability of Prompt Tuning for Natural Language Understanding https://arxiv.org/abs/2111.06719

PPT: Pre-trained Prompt Tuning for Few-shot Learning

清华研究人员发现在Few-shot的场景下,即便使用非常大的预训练模型,相比于Model-tuning,Prompt-tuning的表现仍要差得多。受预训练模型的启发,他们想对prompts也进行预训练!他们关注的是分类任务,并把分类任务分成了三类:单句分类任务、句对分类任务和多项选择分类任务。之后,他们针对每一类都设计了一个自监督预训练任务,然后用预训练任务的prompts去初始化下游任务的prompts。此外,他们还提供了一个unified的版本,将所有的分类任务都看作是多项选择分类任务。

迁移Prompt–解决Prompt Tuning三大问题!_python_02

从上图可以看到,在Few-shot的场景下,PPT比Prompt-tuning (图中Vanilla PT) 的表现明显要好。相比于Model-tuning (图中FT),PPT在所有中文任务上都取得了更好的表现,并在英文任务上取得了类似的性能。上述结果充分显示出预训练prompts在Few-shot场景下的有效性。但是当训练数据增多时,其优势就会越来越小,见下图

迁移Prompt–解决Prompt Tuning三大问题!_机器学习_03

SPoT: Better Frozen Model Adaptation through Soft Prompt Transfer

不同于PPT需要人工设计预训练任务,SPOT用一个或多个源任务训练的prompts来初始化目标任务的prompts。SPOT在预训练模型比较小时,仍可以达到与Model-tuning相近的性能,显著超越Prompt-tuning, 见下图

迁移Prompt–解决Prompt Tuning三大问题!_算法_04

此外,SPOT关注的是full-data场景,研究人员发现即便当目标任务的数据充足时,选择合适的源任务训练的prompts仍能够对目标任务带来显著的增益。下图是用不同源任务的实验结果,多个任务是采用数据混合的方式进行训练,然后得到一个prompt。在GLUE的八个任务上训练的prompt在GLUE和SuperGLUE的多个下游任务上得到了最好的表现。值得关注的是使用单个任务如MNLI和SQUAD训练的prompt也带来了明显的提升。

迁移Prompt–解决Prompt Tuning三大问题!_算法_05

为了探究源任务到目标任务的prompt可迁移性受什么因素影响,作者用16个源任务和10个目标任务构造了160个任务对。对于每一对任务,用源任务训练得到的prompt去初始化目标任务的prompt。他们发现任务之间的相似度是一个重要的影响因素。作者假设不同任务prompts之间的相似度可以反映任务之间的相似度。这样的话,给定一个目标任务就可以去检索相似的源任务,用这些源任务来帮助模型执行目标任务。有如下几种方式

  • Best of top-k: 依次使用top-k源任务的prompts去初始化目标任务的prompt,然后选择表现最好的那个
  • Top-k weighted average: 用top-k源任务的prompts的线性加权去初始化目标任务的prompt,权重就是各个任务与目标任务的prompts的相似度
  • Top-k multi-task mixture: 混合top-k源任务的数据进行训练得到一个prompt去初始化目标任务的prompt

几种不同策略的实验结果见下图

迁移Prompt–解决Prompt Tuning三大问题!_算法_06

可以看到使用不同的策略相比于baseline即随机初始化都能够得到显著的提升。

On Transferability of Prompt Tuning for Natural Language Understanding

相比于之前的两篇工作,这个工作定义了更多的衡量prompts之间的相似度的指标。作者还探究了prompts的zero-shot transfer的能力,即在源任务上训练的prompts直接用到目标任务上而不用目标任务的数据finetune,选择合适的源任务可以比使用随机prompts得到明显更好的表现,见下图

迁移Prompt–解决Prompt Tuning三大问题!_人工智能_07

此外,使用合适的源任务,目标任务Propmt-tuning的收敛速度明显加快,见下图

迁移Prompt–解决Prompt Tuning三大问题!_人工智能_08

总结与展望

基于之前三篇研究工作,我们可以得到如下结论:

  • 好的初始化对Prompt-tuning十分重要,可以解决Prompt-tuning的三大问题。Prompt transfer是初始化目标任务prompts的一种非常有效的方式
  • 源任务与目标任务之间的相似度是迁移有效性的一个重要因素。可以利用任务的prompts之间的相似度来估计任务的相似度。值得注意的是,这些实验结果都只是显示了一种趋势,更高的相似度并不能保证更好的迁移
  • 通过为多个源任务训练prompts可以得到一个prompts库,对于某个目标任务就可以检索一个或者是多个源任务的prompts去初始化目标任务的prompt。目标任务的prompt可以通过训练一定步数得到(不一定要等到收敛),检索可以通过prompts的相似度去进行排序,也可以通过源任务的prompts在目标任务上zero-shot transfer的表现去排序。如果使用多个源任务的prompts,有多种方式,例如逐个使用选最好或者是加权平均。更复杂的方式可能获得更好的性能。
  • PPT在目标任务训练数据较多时提升有限,而SPOT仍能有显著的提升。这可能是因为预训练任务与下游任务之间仍旧有显著的差距,更合适的源任务可能是更好的选择。

基于此,我们有如下展望:

  • 如果可以将一个任务分解成多个子任务,那么是否可以训练多个子任务的prompts然后用这些子任务的prompts去得到原任务的prompt?比如任务型对话系统有多个模块,并不是每个数据集都有所有模块的标注,通过这种方式就可以利用几乎所有现存的数据集,每个prompt只需要编码对应子任务的信息,然后将多个子任务的prompt组合起来就可以为原任务提供很好的初始化。
  • 更进一步,是否可以设计任务相关的prompts,综合考虑原任务与子任务的特点与联系,使得子任务上训练的prompt直接在原任务上复用
  • 是否可以结合Prompt-tuning和Model-tuning在目标任务上得到更好的表现?结合第二点展望,能否将此推广到多任务学习,多个任务之间设计相关的prompts然后一起训练

笔者认为Prompt-tuning是一个十分有前景的技术,如何使其更加有效、适用更多场景还需要进一步探索。这就仰仗各位研究者(包括正在读文章的你)的努力啦~~


迁移Prompt–解决Prompt Tuning三大问题!_人工智能_09

 

迁移Prompt–解决Prompt Tuning三大问题!_编程语言_10

[1] Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing. https://arxiv.org/abs/2107.13586

[2] https://mp.weixin.qq.com/s/2U6sk-LzYx4GtRitwEQnBw

[3] The Power of Scale for Parameter-Efficient Prompt Tuning. https://arxiv.org/abs/2104.08691

标签:Prompt,Tuning,训练,任务,prompts,prompt,三大,tuning
From: https://blog.51cto.com/xixiaoyao/6239738

相关文章

  • 吴恩达Prompt课 - 02 构建原则
    吴恩达和OpenAI一起制作了节一个半小时的,面向开发者的关于《ChatGPTPromptEngineering》的课,对自己Prompt提高非常有帮助。英文课程地址:https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/我反复学习后,针对每小节的例子和关键部分按......
  • 吴恩达Prompt课 - 01 介绍
    吴恩达和OpenAI一起制作了节一个半小时的,面向开发者的关于《ChatGPTPromptEngineering》的课,对自己Prompt提高非常有帮助。英文课程地址:https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/我反复学习后,针对每小节的例子和关键部分按......
  • Langchain框架 prompt injection注入
    Langchain框架promptinjection注入PromptInjection是一种攻击技术,黑客或恶意攻击者操纵AI模型的输入值,以诱导模型返回非预期的结果Langchain框架LangChain是一个基于大语言模型进行应用开发的框架。所谓大语言模型(LargeLanguageModels,LLMs),是指基于海量语料训练、......
  • 珍酒李渡(6979)三大增长引擎驱动收入增长,竞争优势持续增强
    三大增长引擎驱动收入增长,酒品类型覆盖广泛。公司实控人吴向东于2003年至2009年先后收购湘窖及开口笑、江西李渡和贵州珍酒,至2022年,珍酒/李渡/湘窖/开口笑分别实现营收38.2/8.9/7.1/3.4亿元,尽管22年酱酒有所降温,但公司依然实现了双位数增长,近三年营收复合增速达到56%。盈利能力方面......
  • 7个AI绘画工具Prompt站
    ChatGPT的流行使得AI成为2023最大的科技风口,同时驱动了各种类型的AI发展。这些AI正在改变甚至颠覆很多行业的业务模式。ChatGPT推动了生成式AI革命的到来,这正在彻底颠覆内容的生产方式。自PGC、UGC之后,内容生成终于迎来下一个发展阶段——AIGC。AI工具种类也......
  • 数据库三大范式(转)
    原文:https://blog.csdn.net/famousdt/article/details/6921622范式:英文名称是NormalForm,它是英国人E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹......
  • drf之三大组件(认证组件、权限组件、频率组件)
    目录环境准备创建相关的表,models.py创建登录样例配置路由认证组件BaseAuthentication创建认证组件创建测试样例总结1.创建认证组件2.局部使用(只在一个视图类中使用,使用后会影响当前视图类中管理的所有接口)3.全局使用(对所有接口都生效)4.局部禁用权限组件BasePermission环境......
  • web前端三大主流框架对比
    关注我了解更多web前端技术知识,带你一路“狂飙”到底!上岸大厂不是梦!web前端开发框架是在前端工程师中经常会用到的内容,可以大大减少项目中的bug,节约开发成本,加快项目周期。在使用web前端开发框架之前,需要先了解web前端三三大主流框架有哪些。目前web前端三大框架Angular、R......
  • web前端三大主流框架对比分析
    web前端开发框架是在前端工程师中经常会用到的内容,可以大大减少项目中的bug,节约开发成本,加快项目周期。在使用web前端开发框架之前,需要先了解web前端三三大主流框架有哪些。目前web前端三大框架Angular、React、Vue,这三种框架各有优势,下面将对web前端三大主流框架对比、分析......
  • 三大类算法:递归、排序、二分查找
    一、递归”递“+”归“。这两个意思,正是递归思想的精华所在,去的过程叫做递,回来的过程叫做归,在编程语言中对递归可以简单理解为:方法自己调用自己,只不过每次调用时参数不同而已。满足递归的条件:1、递归表达是(规律)如果一个问题的解能够拆分成多个子问题的解,拆分之后,子问题和该问题在求......