对NLP Prompt范式的浅显理解

2023-10-29 15:20
文章标签 理解 范式 prompt nlp 浅显

本文主要是介绍对NLP Prompt范式的浅显理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从预训练-微调(Pre-train Fine-tune)范式说起

预训练-微调范式就是预训练好一个初始模型,后续根据具体的下游任务来对初始模型进行微调。

预训练-微调范式存在的问题是:
①预训练模型有可能会过拟合;

②如果微调数据不足,微调的效果就不好;

③微调后的模型有可能连用来预训练任务都无法执行。

预训练-微调范式预训练出来的模型需要去迎合下游任务,i.e. 要根据具体的下游任务微调模型参数,如②所说,如果微调数据不足,那微调就达不到理想的效果。

Prompt范式就登场了,与预训练-微调范式相反,在Prompt范式中,是要让下游任务去迎合预训练模型。

那么什么是Prompt范式?Prompt范式是如何做到让下游任务迎合预训练模型的?

一、什么是Prompt范式?

prompt英文原意为 提示

prompt直观理解:

在NLP领域中:

给输入的文本加上一些额外的文字,从而更好地让预训练模型发挥作用。

那么这些额外的文字是怎么加的?作用又是什么呢?

通过Prompt的工作流程来理解,走完一遍这个工作流程基本上就能理解Prompt了。

以一个情感分析任务为例

这个任务的输入是一个句子x,输出对这个句子的判断是positive标签还是negative标签

取x = I love this movie.

第一步,Prompt Construction(prompt构建)

定义一个有两个槽(输入槽[x]和输出槽[z])的模板,模板是一段文字。

提醒一下,Prompt中模板的定义又是另外一个不小的工作了,这里我们假定已经定义好了一个模板

这个模板是:[x]Overall, it was a [z] movie.

将x代入到模板中得到x'

x' = I love this movie. Overall, it was a [z] movie.

第二步,Answer Construction(答案构建)

构建答案和类别标签的对应关系

这里也要提醒一下,Prompt中答案-标签对应关系的构建也是另外一个不小的工作,所以这里我们也假定已经定义好了一组答案-标签对应关系

positive - great

negative – boring

到这里先暂停说一下,为了区分,将第一步和第二步的模板和答案称为prompt,区别于大写的Prompt,大写的Prompt指Prompt范式

第三步,Answer Prediction(答案预测)

根据具体的下游任务人工来选择一个预训练好的语言模型,e.g. BERT

使用这个语言模型来预测答案[z],假设预测得到的答案[z]是great,那么

x' = I love this movie. Overall, it was a great movie.

第四步,Anser-Label Mapping(答案-标签映射)

将答案great映射到标签positive

然后输出positive.

结束

二、Prompt范式是如何做到让下游任务迎合预训练模型的?

我认为就是靠prompt来做到的,也就是模板和答案

所以Prompt范式的关键就是模板和答案的设计,而这两个都不是什么简单的工作,各自都分别是另外一项工作

模板的设计叫做Template Engineering,如何根据特定的下游任务来设计这个模板

 

答案的设计叫做Answer Engineering,如何根据特定的下游任务来设计答案和标签的对应

下图展示了一些例子,不同的下游任务可能的模板和可能的答案

求各位大佬轻喷,我只是个还未入门的初学者,这篇文章的定位也只是作为我的个人学习笔记

References

[1] 大模型Prompt Tuning技术分享_哔哩哔哩_bilibili

[2] Making Pre-trained Language Models Better Few-shot Learners.https://arxiv.org/pdf/2012.15723.pdf

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

[4] Formal Description of Prompting: Systematic Survey of Prompting Methods in NLP (P.1).https://www.youtube.com/watch?v=K3MasIU25Zw

这篇关于对NLP Prompt范式的浅显理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301545

相关文章

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念