大模型微调发展-学习调研总结

news2024/12/21 10:04:44

模型微调前言

https://blog.csdn.net/weixin_39663060/article/details/130724730

针对于小公司,如何能够利用开源的大模型,在自己的数据上继续训练,从而应用于自己的业务场景?或低成本的方法微调大模型。
目前主流的方法包括2019年Houlsby N等人提出的Adapter Tuning, 2021年微软提出的LORA,斯坦福提出的Prefix-Tuning,谷歌提出的Prompt Tuning, 2022年清华提出的P-tuning V2.

方法各自都有自己的特点,从个人使用情况来说,LORA的效果会好与其他几种方法。其他方法都有各自的一些问题:

  • Adapter Tuning 增加了模型层数,引入了额外的推理延迟 zhuanlan.zhihu.com/p/574191259
  • Prefix-Tuning 难于训练,且预留给Prompt的序列挤占了校友任务的输入序列空间,影响模型性能
  • P-tuning V2很容易导致旧知识遗忘,微调之后的模型,在之前的问题上表现明显变差。

lora微调

www.zhihu.com/zvideo/1641972168081883136

Fine-tuning微调

利用已知的网络结构和已知的网络参数,修改output层为我们自己的层,微调最后一层前的若干层参数,这样就有效李永乐深度神经网络强大的泛华能力,也免去了复杂模型的计算。fine-tuning是当数据量不足时一个比较合适的选择。

其意义为:1. 基于训练过的模型。2. 若导出特征向量的方法进行迁移学习,后期的训练成本非常低,用CPU也可以。3. 适用于小数据集,不用从头开始重新训练。如果想用上大型神经网络的超强特征提取能力,需要靠迁移学习。

P-tuning

经典的应用场景是:基于p-tuning,可以提高少样本学习能力。如何提供,可以参考华为的盘古模型,其做了两方面努力:一是迁移学习、二是将P-tuning、priming等最新技术融入到盘古的微调框架中,进一步提升微调效果。

提示微调(Instruction Tuning)

一种提升语言模型的Zero-shot能力的方式就是指令微调。

工作大体都符合以下四种NLP范式

范式第1、2种范式:完全监督学习;非神经网络和神经网络第3种范式:预训练-微调第四种范式:预训练-提示学习
训练数据目标任务数据集大规模生成语料,目标任务数据集大规模生成语料;目标任务数据集
输入我是谁?我是谁【CLS】我是谁【SEP】主题是【MASK】【MASK】【SEP】
输出,[0,0,1][0,0,1]【CLS】哲学【SEP】
输出层一个线性变换一个线性变换无新增结构
特点依赖目标任务数据集来获得文本表示良好文本表示;目标任务获得下游任务数据基于庞大的新预料来获得良好的文本表示。基于语言模型的文本生成能力,和下游任务特点,设计训练和推理策略

指令也可成为指示,即提示。对于已经掌握了基础语言能力的大模型来说,它通过向数据中注入任务描述,来提升模型的效果。向训练数据中加入任务描述的方式,便是提示学习的雏形。

针对任务主要做法

总结说有以下两种方式:

  1. 为输入文本增加(拼接)任务提示语言。

  2. 将分类标签(或预测目标)替换为与类别有一定语义对应关系的词句。
    依据输入:[CLS]待分类文本[SEP]本文的主题是[MASK][MASK][SEP]
    得到输出:[CLS]教育[SEP][CLS]哲学[SEP]

LLaMA-关系提取任务

  • 论文:Language Model as Knowledge Bases?

文中,提出通过将关系抽取任务(三元组补全)修改为填空题,在不修改与训练语言模型的情况下,得到了比知识库更好的关系抽取效果。具体如下:
如:(Dante, born in, ?)三元组补全任务=》》 “dante was born in _” 任务。

预测结果中显示:模型可能在预训练阶段学到了关于事实的知识,而学到的知识对三元组补全任务启动了作用

AutoPrompt-文本分类及蕴涵判断任务【重点研读】

论文阅读:AutoPrompt - 知乎 (zhihu.com) zhuanlan.zhihu.com/p/432575444
详解AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts - 知乎 (zhihu.com) zhuanlan.zhihu.com/p/612143138

  • 论文: Autoprompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts

论文中使用提示学习的方式做文本分类、文本蕴涵判断任务【蕴涵指的是两个文本之间的推理关系,一个文本为前提,一个为假设。若根据前提P能推理出假设H,则记做P蕴涵H,即P->H】。设计了一种自动得到优质提示模版方式:不改动语言模型,使用基于梯度搜索得到优质提示模版。

文中将关系收取任务改造为:
如:“Dante was born in [T][T][T][T] [MASK]”中被[MASK]遮蔽的部分。
这个模版中【T】是用来引导模型的触发词【提示信息】。论文证明了这些提示词可以提升语言模型的分类能力。

详解:
【T】:预训练语言模型中知识或模式是既定的,不一定会按照我们预想的方式预测词语-需要给些“提示”,引导模型去做下游任务。LLAMA把若干触发词添加到文本和【MASK】.

PET-使用擅长低资源模型标注去标签数据、扩大训练集

  • 论文:Exploting Cloze Questions for Few shot Text Classification and Natural Language inference.
  1. 提示学习方法

将文本分类任务的输入修改为一个填空题,来让语言模型认识任务,而推理修改为一个文本生成任务,来充分利用语言模型的文本生成能力。比如情感类分类任务,原本输入:我喜欢这本电影,输出:正面,改成提示:“我喜欢这本电影,整体来看,这是一个_的电影”

提示函数方法

  1. 定义提示函数x’ = Fprompt(x),x为输入文本,x’为变换后的函数
  2. 设计一种模版,其应该包括一个输入模版f(X),一个答案模版f(Z),而f(Z)后续会被映射给最终的输出y。例如句子:“中国国土很大,确实,这是历经五千年积累的国家”,就可以设计成“f(x),确实,这是f(z)”的填空式
  3. 输入文本x填充f(x)

根据提示任务的分类

请添加图片描述

提示工程

引用

李鹏宇-zhuanlan.zhihu.com/p/406291495
大师兄-zhuanlan.zhihu.com/p/644369467
zhuanlan.zhihu.com/p/644369467
鹏飞大神的Pre-train-zhuanlan.zhihu.com/p/396098543
P-tuning:用“连续提示微调”来增强“超大规模语言模型”的下游能力
LLM大模型低资源微调p tuning v2和lora区别
Prompt范式第二阶段|Prefix-tuning、P-tuning、Prompt-tuning - 知乎 (zhihu.com)

五万字综述!Prompt-Tuning:深度解读一种新的微调范式 - 知乎 (zhihu.com)zhuanlan.zhihu.com/p/618871247
Prompt范式第二阶段|Prefix-tuning、P-tuning、Prompt-tuning - 知乎 (zhihu.com) zhuanlan.zhihu.com/p/400790006请添加图片描述

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

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

相关文章

小程序之微信登录授权(6)

⭐⭐ 小程序专栏:小程序开发专栏 ⭐⭐ 个人主页:个人主页 目录 一.了解微信授权登录 小程序登录授权基本原理: 二.微信授权登录演示 三.微信授权与后端的交互 3.1后台代码: 3.2 前端代码: 四.微信退出 五.微信表情包…

DELM深度极限学习机回归预测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

自然语言处理---Self Attention自注意力机制

Self-attention介绍 Self-attention是一种特殊的attention,是应用在transformer中最重要的结构之一。attention机制,它能够帮助找到子序列和全局的attention的关系,也就是找到权重值wi。Self-attention相对于attention的变化,其实…

项目总结-商品购买流程

(1)添加购物车 Controller: CartService: 实现类: CartDetail detaildao.queryByCdid(cid,gds.getId()); CartDao: //获取详情对象Select("select * from t_cartdetail where cid#{cid} and gid#{gid…

buu第五页 wp

[RootersCTF2019]babyWeb 预期解 一眼就是sql注入,发现过滤了 UNION SLEEP " OR - BENCHMARK盲注没法用了,因为union被过滤,堆叠注入也不考虑,发现报错有回显,尝试报错注入。 尝试: 1||(updatex…

ubuntu20.04下安装nc

前言 nc在网络渗透测试中非常好用,这里的主要记一下Ubuntu20.04中nc的安装 编译安装 第一种方式是自己编译安装,先下载安装包 nc.zip wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download -O netcat-0.7.…

anyproxy 的安装和抓包使用

简介 AnyProxy是阿里开发的开源的代理服务器,主要特性包括: 基于Node.js,开放二次开发能力,允许自定义请求处理逻辑支持Https的解析提供GUI界面,用以观察请求 安装运行Anyproxy 首先需要电脑由安装 node&#xff0…

H3C SecParh堡垒机 data_provider.php 远程命令执行漏洞

构造poc执行远程命令: /audit/data_provider.php?ds_y2019&ds_m04&ds_d02&ds_hour09&ds_min40&server_cond&service$(id)&identity_cond&query_typeall&formatjson&browsetrue漏洞证明: 文笔生疏&#xff0c…

【大模型应用开发教程】02_LangChain介绍

LangChain介绍 什么是 LangChain1. 模型输入/输出2. 数据连接3. 链(Chain)4. 记忆(Meomory)5. 代理(Agents)6.回调(Callback)在哪里传入回调 ?你想在什么时候使用这些东西呢&#x…

1024常玩到的漏洞(第十六课)

1024常玩到的两个漏洞(第十六课) 漏洞扫描工具 1024渗透OpenVas扫描工具使用(第十四课)-CSDN博客 流程 一 ms12-020漏洞分析 MS12-020漏洞是一种远程桌面协议(RDP)漏洞。在攻击者利用该漏洞之前,它需要将攻击者的计算机连接到受害者的计算机上。攻击者可以通过向受害者计算…

跟着NatureMetabolism学作图:R语言ggplot2转录组差异表达火山图

论文 Independent phenotypic plasticity axes define distinct obesity sub-types https://www.nature.com/articles/s42255-022-00629-2#Sec15 s42255-022-00629-2.pdf 论文中没有公开代码,但是所有作图数据都公开了,我们可以试着用论文中提供的数据…

Linux进程与线程的内核实现

进程描述符task_struct 进程描述符(struct task_struct)pid与tgid进程id编号分配规则内存管理mm_struct进程与文件,文件系统 进程,线程创建的本质 clone函数原型线程创建的实现进程创建的实现 总结 进程描述符task_struct 进程描述符(st…

自动驾驶的商业应用和市场前景

自动驾驶技术已经成为了交通运输领域的一项重要创新。它不仅在改善交通安全性和效率方面具有巨大潜力,还为各种商业应用提供了新的机会。本文将探讨自动驾驶在交通运输中的潜力,自动驾驶汽车的制造商和技术公司,以及自动驾驶的商业模式和市场…

Git GUI工具:SourceTree代码管理

Git GUI工具:SourceTree SourceTreeSourceTree的安装SourceTree的使用 总结 SourceTree 当我们对Git的提交、分支已经非常熟悉,可以熟练使用命令操作Git后,再使用GUI工具,就可以更高效。 Git有很多图形界面工具,这里…

JAVA高级教程Java 泛型(10)

目录 三、泛型的使用泛型类泛型接口泛型方法 四、泛型在集合中的使用1、使用泛型来创建set2、使用泛型来创建HashSet3、使用equals,hashCode的使用Person 类HashSet的使用泛型TreeSet的使用泛型comparator实现定制比较(比较器) 三、泛型的使用 泛型类语法 类名T表示…

散列表:如何打造一个工业级水平的散列表?

文章来源于极客时间前google工程师−王争专栏。 散列表的查询效率并不能笼统地说成是O(1)。它跟散列函数、装载因子、散列冲突等都有关系。如果散列函数设计得不好,或者装载因子过高,都可能导致散列冲突发生的概率升高,查询效率下降。 极端情…

在ESP32上使用Arduino(Arduino as an ESP-IDF component)

目录 前言 原理说明 操作步骤 下载esp-arduino 安装esp-arduino 工程里配置arduino 1、勾选该选项,工程将作为一个标准的arduino程序工作 2、不勾选该选型,工程将作为一个传统的嵌入式项目开发, 前言 Arduino拥有丰富的各类库&#…

一款WPF开发的网易云音乐客户端 - DMSkin-CloudMusic

前言 今天推荐一款基于DMSkin框架开发的网易云音乐播放器:DMSkin-CloudMusic。 DMSkin 框架介绍 DMSkin是一个开源的WPF样式UI框架,可以帮助开发者快速创建漂亮的用户界面。 下载体验 下载地址:https://github.com/944095635/DMSkin-Clou…

如何使用vim粘贴鼠标复制的内容

文章目录 一、使用步骤1.找到要编辑的配置文件2.找到目标文件3.再回到vim编辑器 一、使用步骤 1.找到要编辑的配置文件 用sudo vim /etc/apt/sources.list编辑软件源配置文件 sudo vim /etc/apt/sources.listvim 在默认的情况下当鼠标选中的时候进入的 Visual 模式&#xff…

加法器:如何像搭乐高一样搭电路(上)?

目录 背景 异或门和半加器 全加器 小结 补充阅读 背景 上一讲,我们看到了如何通过电路,在计算机硬件层面设计最基本的单元,门电路。我给你看的门电路非常简单,只能做简单的 “与(AND)”“或&#xff…