NLP任务四大范式的进阶历程:从传统TF-IDF到Prompt-Tuning(提示词微调)

news2024/12/27 7:52:13

引言:从TF-IDF到Prompt-Tuning(提示词微调),NLP的四次变革

自然语言处理(NLP)技术从最早的手工特征设计到如今的Prompt-Tuning,经历了四个重要阶段。随着技术的不断发展,我们的目标从“更高精度”逐渐转向“更少监督”甚至“无监督”。本篇文章将带你全面解析NLP任务的四大范式,并剖析Fine-Tuning和Prompt-Tuning的核心原理。


1. NLP四种范式的进阶历程

1.1 第一范式:传统机器学习模型的起点

核心特征:

• 基于手工设计特征(如TF-IDF、n-gram),并结合朴素贝叶斯、支持向量机等经典算法完成任务。

案例:

假设要解决文本分类任务(如垃圾邮件识别),可以用TF-IDF提取邮件关键词特征,结合朴素贝叶斯判断一封邮件是否为垃圾邮件。

优点:

• 简单高效,适合小规模数据集。

• 计算成本低,模型易解释。

缺点:

• 特征工程依赖人工设计,难以扩展到复杂任务。

• 无法捕获上下文语义信息,模型精度有限。


1.2 第二范式:深度学习模型的崛起

核心特征:

• 使用分布式词表示(如word2vec、GloVe)将单词编码为语义向量。

• 借助LSTM、GRU等深度学习模型,捕获上下文依赖关系。

案例:

在情感分析任务中,用word2vec将“我今天很开心”转化为向量后,使用LSTM网络提取句子特征,再预测句子情感。

优点:

• 自动学习特征,无需复杂的手工设计。

• 能捕获一定的上下文语义关系。

缺点:

• 依赖大规模标注数据集,成本高昂。

• 模型复杂度提升,对硬件资源要求高。


1.3 第三范式:预训练模型与微调的黄金时代

Fine-Tuning(微调)属于一种迁移学习方式,在自然语言处理(NLP)中,Fine-Tuning(微调)是用于将预训练的语言模型适应于特定任务或领域。Fine-Tuning(微调)的基本思想是采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它.

经典的Fine-Tuning(微调)方法包括将预训练模型与少量特定任务数据一起继续训练。在这个过程中,预训练模型的权重被更新,以更好地适应任务。所需的Fine-Tuning(微调)量取决于预训练语料库和任务特定语料库之间的相似性。如果两者相似,可能只需要少量的Fine-Tuning(微调),如果两者不相似,则可能需要更多的Fine-Tuning(微调).

但是,在大多数下游任务微调时,下游任务的目标和预训练的目标差距过大导致提升效果不明显(过拟合),微调过程中需要依赖大量的监督语料等等。至此,以GPT3、PET等为首的模型提出一种基于预训练语言模型的新的微调范式--Prompt-Tuning.该方法的目的是通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果。

核心特征:

• 使用大规模预训练模型(如BERT、GPT)学习通用语言表示,通过Fine-Tuning(微调)完成特定任务。

案例:

在命名实体识别任务中,加载预训练好的BERT模型,微调后即可高效完成“识别句子中的地名、人名”等任务。

优点:

• 小数据集即可实现高精度。

• 模型捕获了丰富的语言知识,表现优于传统方法。

缺点:

• 模型体积庞大,对计算资源要求高。

• 不同任务需要单独微调,效率较低。


1.4 第四范式:Prompt-Tuning的崭新未来

在大多数下游任务微调时,下游任务的目标和预训练的目标差距过大导致提升效果不明显(过拟合),微调过程中需要依赖大量的监督语料等等。至此,以GPT3、PET等为首的模型提出一种基于预训练语言模型的新的微调范式--Prompt-Tuning(提示微调).该方法的目的是通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果。

Prompt-Tuning(提示微调)主要解决传统Fine-Tuning方式的两个痛点:

  • 降低语义偏差:预训练任务主要以MLM为主,而下游任务则重新引入新的训练参数,因此两个阶段目标差异较大。因此需要解决Pre-Training(预训练)Fine-Tuning(微调)之间的Gap(gap就是差距的意思)。
  • 避免过拟合:由于Fine-Tuning阶段需要引入新的参数适配相应任务,因此在样本数量有限的情况下容易发生过拟合,降低模型泛化能力。因此需要解决预训练模型的过拟合能力。

prompt顾名思义就是“提示”的意思,应该有人玩过你画我猜这个游戏吧,对方根据一个词语画一幅画,我们来猜他画的是什么,因为有太多灵魂画手了,画风清奇,或者你们没有心有灵犀,根本就不好猜啊!这时候屏幕上会出现一些提示词比如3个字,水果,那岂不是好猜一点了嘛,毕竟3个字的水果也不多呀。看到了吧,这就是prompt的魅力.

基于Fine-Tuning的方法是让预训练模型去迁就下游任务,而基于Prompt-Tuning(提示微调)的方法可以让下游任务去迁就预训练模型, 其目的是将Fine-tuning的下游任务目标转换为Pre-Training(预训练)的任务。那么具体如何工作呢?我们以一个二分类的情感分析为例子,进行简单理解:

  • eg: 定一个句子[CLS] I like the Disney films very much. [SEP]
  • 传统的Fine-tuning方法: 将其通过BERT的Transformer获得 [CLS]表征之后再喂入新增加的MLP分类器进行二分类,预测该句子是积极的(positive)还是消极的(negative),因此需要一定量的训练数据来训练。
  • Prompt-Tuning执行步骤:
    • 1.构建模板(Template Construction): 通过人工定义、自动搜索、文本生成等方法,生成与给定句子相关的一个含有[MASK]标记的模板。例如It was [MASK].,并拼接到原始的文本中,获得Prompt-Tuning的输入:[CLS] I like the Disney films very much. [SEP] It was [MASK]. [SEP]。将其喂入BERT模型中,并复用预训练好的MLM分类器(在huggingface中为BertForMaskedLM),即可直接得到[MASK]预测的各个token的概率分布。
    • 2.标签词映射(Label Word Verbalizer) :因为[MASK]部分我们只对部分词感兴趣,因此需要建立一个映射关系。例如如果[MASK]预测的词是“great”,则认为是positive类,如果是“terrible”,则认为是negative类。
    • 3.训练:根据Verbalizer,则可以获得指定label word的预测概率分布,并采用交叉信息熵进行训练。此时因为只对预训练好的MLM head进行微调,所以避免了过拟合问题。

注意思考:不同的句子应该有不同的template和label word,没错,因为每个句子可能期望预测出来的label word都不同,因此如何最大化的寻找当前任务更加合适的template和label word是Prompt-tuning非常重要的挑战。

其实我们可以理解,引入的模板和标签词本质上属于一种数据增强,通过添加提示的方式引入先验知识。

核心特征:

• 借助Prompt将任务转化为语言模型擅长的填空或问答问题。

案例:

对于情感分析任务,用“这句话的情感是[MASK]”形式提示模型,BERT通过填空即可直接预测“积极”或“消极”。

优点:

• 无需微调整个模型,仅需优化Prompt模板。

• 极大减少标注数据需求,适合少样本甚至零样本学习。

缺点:

• 设计高质量Prompt模板需要领域知识。

• 对复杂任务的适配能力有待提升。

1.5 Prompt-Tuning(提示微调)技术发展历程

Prompt-Tuning自GPT-3被提出以来,从传统的离散、连续的Prompt构建、走向面向超大规模模型的In-Context Learning、Instruction-tuning和Chain_of_Thought. 


2. Fine-Tuning模型微调的核心原理

2.1 什么是Fine-Tuning?

定义:

基于预训练模型,通过有监督微调适配特定任务。Fine-Tuning是第三范式的核心技术。

训练流程:

1. 预训练阶段: 在大规模通用语料库(如Wikipedia)上无监督训练,学习通用语言表示。

2. 微调阶段: 在下游任务数据上有监督微调,调整模型参数适配任务需求。

2.2 Fine-Tuning优缺点

优点:

• 小数据集即可达高精度,显著降低标注成本。

• 能适配多种任务,如文本分类、翻译、问答等。

缺点:

• 每个任务需要单独微调一个模型,适配效率低。

• 模型训练成本高,对硬件资源要求大。


3. Prompt-Tuning模型微调原理揭秘

3.1 什么是Prompt-Tuning?

定义:

Prompt-Tuning通过设计提示词将下游任务转化为语言模型擅长的生成任务。例如,“这句话的情感是[MASK]”将情感分析转化为填空任务。

3.2 Prompt-Tuning的实现流程

1. 任务转化:

• 将任务转化为填空、问答等语言生成问题。

• 示例:“今天的天气如何?它是[MASK]”。

2. 模板优化:

• 优化Prompt模板提升任务适配性,可以手动设计或自动优化。

3. 轻量训练:

• 仅优化少量Prompt相关参数,而非整个模型。

3.3 优缺点

优点:

• 训练效率高,适合少样本甚至零样本任务。

• 极大降低对计算资源的需求。

缺点:

• 设计Prompt模板需要领域知识,复杂任务适配性不足。


4. 未来展望:从少监督到无监督,NLP的未来趋势

更少监督,更多迁移:

Prompt-Tuning极大减少了对标注数据和计算资源的需求,将引领未来NLP的发展。

从少样本到零样本:

NLP模型的泛化能力将持续提升,通过高效Prompt设计,模型在无标注数据情况下即可完成任务。

跨领域应用扩展:

未来的预训练模型将结合更多领域数据,适配更广泛的任务场景。


总结

• NLP的四大范式从传统机器学习到Prompt-Tuning,展现了技术从高监督到少监督甚至无监督的进化路径。

• Fine-Tuning是第三范式的核心技术,为小数据集带来高精度,但效率较低。

• Prompt-Tuning作为第四范式的代表,通过减少训练需求,实现了轻量化适配,展现了NLP的未来趋势。 


当前大模型阶段,提示词工程已经很主流了,下一篇文章我们将会详细的讲解 Prompt-Tuning,敬请关注!

你是否尝试过Prompt-Tuning?它在你的任务中表现如何?欢迎在评论区留言分享你的看法!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十四(AJAX)、AJAX、axios、常用请求方法(GET POST...)、HTTP协议、接口文档、form-serialize

1. AJAX介绍及axios基本使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content&q…

Javaweb梳理21——Servlet

Javaweb梳理21——Servlet 21 Servlet21.1 简介21.3 执行流程21.4 生命周期4.5 方法介绍21.6 体系结构21.7 urlPattern配置21.8 XML配置 21 Servlet 21.1 简介 Servlet是JavaWeb最为核心的内容&#xff0c;它是Java提供的一门动态web资源开发技术。使用Servlet就可以实现&…

如何在MySQL中计算两个日期的间隔天数

目录 1. DATEDIFF函数2. TIMESTAMPDIFF函数3. PERIOD_DIFF函数4. 函数对比 在MySQL 5.7中&#xff0c;计算两个日期之间的间隔天数是一项常见的任务。 1. DATEDIFF函数 DATEDIFF函数可以直接计算两个日期之间的天数差异。 -- 计算2024年1月1日和2024年1月10日之间的天数差异 …

React Native学习笔记(一)

一、创建ReactNative项目 1.1、指令创建 React Native 有一个内置的命令行界面&#xff0c;你可以用它来生成一个新项目。您可以使用 Node.js 附带的 访问它&#xff0c;而无需全局安装任何内容。让我们创建一个名为“AwesomeProject”的新 React Native 项目 npx react-nati…

VSCode中“Run Code”运行程序时,终端出现中文乱码解决方法

问题描述 在VSCode中“Run Code”运行程序时&#xff0c;终端输出结果出现中文乱码现象&#xff1a; 解决方法 1. 检查系统cmd的默认编码 查看Windows终端当前编码方式的命令&#xff1a; chcp输出结果是一段数字代码&#xff0c;如936&#xff0c;这说明当前的cmd编码方式…

Hive学习基本概念

基本概念 hive是什么&#xff1f; Facebook 开源&#xff0c;用于解决海量结构化日志的数据统计。 基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能 本质是将HQL转化为MapReduce程序。 Hive处理的数据存储在H…

css选择当前元素前面的一个元素

选择text-danger前面的ant-divider: .ant-divider:has( .text-danger) {display: none; }

嵌入式硬件面试题【经验】总结----会不断添加更新

目录 引言 一、电阻 1、电阻选型时一般从那几个方面考虑 2、上拉电阻的作用 3、PTC热敏电阻作为电源电路保险丝的工作原理 4、如果阻抗不匹配&#xff0c;有哪些后果 二、电容 1、电容选型一般从哪些方面进行考虑? 2、1uf的电容通常来滤除什么频率的信号 三、三极管…

阿里云人工智能平台(PAI)免费使用教程

文章目录 注册新建实例交互式建模(DSW)注册 注册阿里云账号进行支付宝验证 新建实例 选择资源信息和环境信息,填写实例名称 资源类型需要选择公共资源,才能使用资源包进行抵扣。目前每月送250计算时。1 * NVIDIA A10 8 vCPU 30 GiB 1 * 24 GiB1 * NVIDIA V100 8 vCPU 32 Gi…

泷羽sec-burp功能介绍(1) 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

不同云计算网络安全等级

导读云计算的本质是服务&#xff0c;如果不能将计算资源规模化/大范围的进行共享&#xff0c;如果不能真正以服务的形式提供&#xff0c;就根本算不上云计算。 等级保护定级流程 定级是开展网络安全等级保护工作的 “基本出发点”&#xff0c;虚拟化技术使得传统的网络边界变…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的&#xff0c;electron 29版本追加了很多新功能&#xff0c;但是这些新功能对开发者不友好&#xff0c;对electron构建出来的软件&#xff0c;使用者更安全&#xff0c;所以&#xff0c;我暂时不想研究electron 29版…

【工具变量】上市公司企业金融错配程度数据(1999-2022年)

一、测算方式&#xff1a;参考C刊《科研管理》赵晓鸽&#xff08;2021&#xff09;老师的研究&#xff0c;对于金融错配的测算&#xff0c;采用企业资本成本偏离行业平均资本成本的程度来作为企业金融错配的代理变量。其中使用财务费用中的利息支出与扣除了应付账款后的负债总额…

Qt入门6——Qt窗口

目录 1. QMenuBar 菜单栏 2. QToolBar 工具栏 3. QStatusBar 状态栏 4. QDockWidget 浮动窗口 5. QDialog 对话框 5.1 Qt内置对话框 1. QMessageBox 消息对话框 2. QColorDialog 颜色对话框 3. QFileDialog 文件对话框 4. QFontDialog 字体对话框 5. QInputDialo…

A058-基于Spring Boot的餐饮管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

【VUE3】npm : 无法加载文件 D:\Program\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 D:\Program\nodejs\npm.ps1。未对文件 D:\Program\nodejs\npm.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_ Execution_Policies。…

《JavaScript高级程序设计》读书笔记 17

感谢点赞、关注和收藏&#xff01; 这一篇讲内存相关&#xff0c;主要是垃圾回收机制。 垃圾回收 JavaScript 是使用垃圾回收的语言&#xff0c;也就是说执行环境负责在代码执行时管理内存。在 C 和 C等语言中&#xff0c;内存如何管理是开发者来决定的。JavaScript通过自动内…

c语言——数组名该如何理解呢?

一般情况下&#xff0c;数组名表示首元素地址&#xff0c;以下2种除外&#xff1a; ①、sizeof(数组名) 表示整个数组 ※只有数组名的情况 sizeof&#xff08;数组名i&#xff09; 就不能表示整个数组 ②、&数组名 表示整个数组&#xff0c;取的是整个数…

IDL学习笔记(一)数据类型、基础运算、控制语句

近期&#xff0c;需要用到modis数据批量预处理&#xff0c;于是重新学习idl,感谢郭师兄推荐&#xff0c;以及张洋老师的详细教导。特以此为学习笔记&#xff0c;望学有所成。 IDL学习笔记&#xff08;一&#xff09; 数据类型数据类型创建数组类型转换函数代码输出print往文件…

数据结构——排序第三幕(深究快排(非递归实现)、快排的优化、内省排序,排序总结)超详细!!!!

文章目录 前言一、非递归实现快排二、快排的优化版本三、内省排序四、排序算法复杂度以及稳定性的分析总结 前言 继上一篇博客基于递归的方式学习了快速排序和归并排序 今天我们来深究快速排序&#xff0c;使用栈的数据结构非递归实现快排&#xff0c;优化快排&#xff08;三路…