当前位置:网站首页>NLP四范式:范式一:非神经网络时代的完全监督学习(特征工程);范式二:基于神经网络的完全监督学习(架构工程);范式三:预训练,精调范式(目标工程);范式四:预训练,提示,预测范式(Prompt工程)
NLP四范式:范式一:非神经网络时代的完全监督学习(特征工程);范式二:基于神经网络的完全监督学习(架构工程);范式三:预训练,精调范式(目标工程);范式四:预训练,提示,预测范式(Prompt工程)
2022-07-03 16:31:00 【u013250861】
自然语言处理(Natural Language Processing,NLP)是计算机科学,人工智能,语言学关于计算机和人类自然语言之间的相互作用的领域,是计算机科学领域与人工智能领域中的一个重要方向。
自然语言处理历史悠久,早在1949年的时候,美国人威弗就提出了机器翻译设计方案,可以视为自然语言处理领域的开端,此后自然语言处理在不断的发展,在上世纪该领域的方法主要是基于规则的方法和基于统计学的方法,这类方法效率较低,耗费人力,且无法处理大规模的数据集,因此自然语言处理领域一直不温不火。
2008年以来,随着深度学习在语音识别和图像处理领域取得成功,研究者们开始使用深度学习方法处理自然语言处理问题,从最初的词向量,到2013年的word2vec,再到2018年的bert,最后到如今的prompt,自然语言处理技术在最近的十年里面快速发展。
CMU的刘鹏飞博士总结了自然语言处理技术发展过程中的四种范式,每种范式代表了一种类型的自然语言处理方法,本文结合一些简单的示例,总结一下NLP中的四个范式。
一、第一范式:非神经网络时代的完全监督学习(特征工程)
第一范式指的是引入神经网络之前NLP领域的处理方法,提取出自然语言语料库中的一些特征,利用特定的规则或数学、统计学的模型来对特征进行匹配和利用,进而完成特定的NLP任务。常见的方法比如以下方法来进行序列分类、序列标注等任务:
- 贝叶斯
- veterbi算法
- 隐马尔可夫模型
二、第二范式:基于神经网络的完全监督学习(架构工程)
第二范式指的是 神经网络引进之后,预训练模型出现之前 NLP领域的研究方法。
这类方法不用手动设置特征和规则,节省了大量的人力资源,但仍然需要人工设计合适的神经网路架构来对数据集进行训练。常见的方法比如CNN、RNN、机器翻译中的Seq2Seq模型等等。
三、第三范式:预训练,精调范式(目标工程)
第三范式指的是先在大的无监督数据集上进行预训练,学习到一些通用的语法和语义特征,然后利用预训练好的模型在下游任务的特定数据集上进行fine-tuning,使模型更适应下游任务。
GPT、Bert、XLNet等模型都属于第三范式,其特点是不需要大量的有监督下游任务数据,模型主要在大型无监督数据上训练,只需要少量下游任务数据来微调少量网络层即可。
四、第四范式:预训练,提示,预测范式(Prompt工程)
第四范式指的是 将下游任务的建模方式重新定义: 通过合适的prompt(提示符、提示词)来实现直接在预训练模型上解决下游任务,这种模式需要极少量(甚至不需要)下游任务数据,使得小样本、零样本学习成为可能。
前文提到第三范式的fine-tuning过程是调整预训练模型,使其更加匹配下游任务,那么第四范式就正好相反,prompt过程则是调整下游任务,使其更加匹配预训练模型。也就是第三范式是预训练模型迁就下游任务,而第四范式是下游任务迁就预训练模型。
那么如何改造下游任务能更好的迁就预训练模型呢?以Bert为例,Bert有两个预训练任务,Masked LM完型填空任务和Next Sentence Prediction下个句子预测任务,对于这两种不同的与训练任务,prompt的类型也可以分为两类:
- 完形填空prompt
- 完型填空prompt:比如情感分类任务,输入是【这个玩具不错】,可以将prompt改成:这个玩具不错,太【Z】,Z的输出是“棒”。
- 分类、匹配、选择相关的任务往往使用完形填空prompt(自编码)
- 前缀提示prompt
- 前缀提示prompt:比如机器翻译任务,输入是【好好学习】,可以将prompt改成:好好学习,翻译成英语:【Z】,Z的输出是"good good english"。
- 生成相关的任务往往使用前缀提示prompt(自回归)。
1、二分类任务prompt示例
假设有一个情感分类任务,输入句子X,输出其情感标签Y{正向,负向}。
比如对于"这个餐厅的服务真不错。"这个句子进行情感分类,
- 首先构造prompt:_____满意,这个餐厅的服务真不错,将输入句子变化为这样的prompt,
- 然后将标签Y映射为{很,不}(很满意代表正向,不满意代表负向)。
由于正常的Bert的MLM预训练任务是预测整个词表,而上文的prompt预测的只有两个单词{很,不},因此需要调整词表,然后使用交叉熵损失函数进行模型。
因此,整个第四范式的处理过程为:
- 先将输入构造成prompt,
- 然后构造对应prompt的标签,
- 然后对输入句子映射、对下游任务原标签映射,
- 使用映射后的prompt输入和新标签精调模型。
2、匹配任务prompt示例
比如判断"我去了北京"和"我去了上海"这两句话之间的联系,可以使用完型填空的方式构造prompt:
- 我去了北京?_____,我去了上海。
将两个输入句子映射为prompt,然后将标签从{匹配,不匹配}映射为{是的,不是},借助MLM模型进行训练。
3、第四范式研究领域主要有三个问题
第四范式研究领域主要有三个问题:
- 针对输入端:如何构造prompt,更好的对下游任务建模,使其能够 激发预训练模型的潜能;
- 针对输出端:如何 将原标签映射为prompt对应的新标签;
- 针对模型:如何对预训练模型进行精调;
3.1 构造prompt
首先,对于prompt,主要指的是"将原输入附加一段补充描述语句,通过这段补充描述语句实现任务转换和对任务求解,这段描述语句与原始输入一起形成一段语义合理的语句作为 prompt 的输入"。
也就是说,对于输入的文本x,可以通过两步生成prompt:
- 第一步:使用一个模板(自然语言片段),模板包含两个空位置,用于填输入 x 和生成答案文本z
- 第二步将输入填入到x的位置上
参考资料:
NLP的四个范式
边栏推荐
- Cocos Creator 2. X automatic packaging (build + compile)
- Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..
- Unity项目优化案例一
- NSQ源码安装运行过程
- 8 tips for effective performance evaluation
- Characteristic polynomial and constant coefficient homogeneous linear recurrence
- 利用MySQL中的乐观锁和悲观锁实现分布式锁
- Alibaba P8 painstakingly sorted it out. Summary of APP UI automated testing ideas. Check it out
- How to initialize views when loading through storyboards- How is view initialized when loaded via a storyboard?
- 【剑指 Offer 】64. 求1+2+…+n
猜你喜欢
Initial test of scikit learn Library
Visual SLAM algorithms: a survey from 2010 to 2016
Getting started with Message Oriented Middleware
关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
Record a jar package conflict resolution process
arduino-esp32:LVGL项目(一)整体框架
There are several APIs of airtest and poco that are easy to use wrong in "super". See if you have encountered them
Google Earth engine (GEE) - daymet v4: daily surface weather data set (1000m resolution) including data acquisition methods for each day
NFT new opportunity, multimedia NFT aggregation platform okaleido will be launched soon
[proteus simulation] 8 × 8LED dot matrix screen imitates elevator digital scrolling display
随机推荐
《天天数学》连载56:二月二十五日
A survey of state of the art on visual slam
ThreeJS 第二篇:顶点概念、几何体结构
Aike AI frontier promotion (7.3)
2022爱分析· 国央企数字化厂商全景报告
Nine ways to define methods in scala- Nine ways to define a method in Scala?
Unreal_ Datatable implements ID self increment and sets rowname
Extraction of the same pointcut
Pointcut expression
Custom plug-in construction and use of QT plug-in
Mixlab编辑团队招募队友啦~~
QT serial port UI design and solution to display Chinese garbled code
斑马识别成狗,AI犯错的原因被斯坦福找到了
Caching mechanism of Hibernate / session level caching mechanism
【剑指 Offer 】64. 求1+2+…+n
Learn from me about the enterprise flutter project: simplified framework demo reference
How can technology managers quickly improve leadership?
To resist 7-Zip, list "three sins"? Netizen: "is the third key?"
[statement] about searching sogk1997 and finding many web crawler results
为抵制 7-Zip,列出 “三宗罪” ?网友:“第3个才是重点吧?”