解读Lawyer LLaMA,延申专业领域大模型微调:数据集构建,模型训练

news2024/11/26 11:40:55

解读Lawyer LLaMA,延申自己领域大模型微调:数据集构建,模型训练

项目地址link

自己领域的大模型微调,实现思路大都和这篇文章是一样的,有的是基于LLaMA,或者有的是基于Chinese-LLaMA,或者是其他开源的大模型,本文基于自己训练过程和参考了老刘说NLP中的《也读Lawyer LLaMA法律领域微调大模型:从训练数据、模型训练到实验效果研读》,从模型要达到的结果出发,倒推介绍整个流程,供大家参考,

欢迎大家点赞关注,一起交流

一、模型重点关注的能力

在这里插入图片描述

专业领域的大模型应用需要具备三种能力,

1.生成回答精确,没有歧义,在任何一个专业领域,有些仅仅替换一个词就可以影响其中表达的含义,有可能会导致巨大的不同的结果,例如,定金和订金在中文只有一字之差,但它们在合同法中的含义和法律效力却完全不同,

2.理解和区分专业术语,很多概念只出现在对应的专业领域,例如台区,即使是广泛使用的词汇,其含义在不同的专业领域也是不同的,因此要在具体的句子情景中表达出不同的含义,

3.能够识别分析专业场景的实际事件,现实世界中情景总是复杂多样的,模型需要具备法律术语和应用专业领域数据来分析具体问答能力,

为了能够实现这些能力,可以使用LLaMa模型来具体实现这些功能,

1.注入专业领域的知识,收集大量的专业领域原始文本,来让模型进行无监督训练学习。

2.训练学习特定领域的技能,有监督微调模型,教模型如何用适当的知识来解决特定领域的任务。

3.用外部知识进行增强,为了使模型能够更准确和精准回答,另外引入一个信息检索模块,在生成每个回复前,首先利用用户的查询和上下文信息来检索相关的标准信息,然后在这些专业领域的文章基础上做出回答。

二、数据准备

1.预训练语料库

为提升模型在中文专业领域的回答表现,防止模型在学习专业领域数据后灾难性遗忘问题,该工作采用两种语料对LLaMA模型进行持续性训练,

首先在一个普通的多语言语料库上训练模型,以提升模型的中文能力,然后使用另一个专业领域的语料库来增强模型。

(1)多语言通用语料库

由于LLaMA主要是在英语和其他语言语料库进行训练,因此它在理解和生成中文语句方面并不完美,
为了解决这个问题,同时收集中文预训练英文语料库进行记忆重放,以避免灾难性遗忘,
具体的,为构建中文通用语料库,可以从WuDaoCorpora、CLUECorpus2020和维基百科的简体中文版本中抽取文章。
对于英文通用语料,从C4语料库中抽取文章,

(2)中文专业领域语料库

各种途径获取专业领域的数据,并按照专业和来源分类,然后解析专业数据,生成各种专业数据有没有什么比例,解析的格式是按照段落进行分段学习,问答和文本生成有没有什么区别的对待

2.专业领域指令微调数据

(1)通用能力问答公开数据集地址

https://github.com/chaoswork/sft_datasets/tree/master

(2)将专业领域数据进行数据分类构建微调数据集,再细分为多轮对话和单论对话,并使用使用ChatGPT生成回复

为了保证单轮和多轮能力,同时收集单轮和多轮对话能力,同时为了提高生成式的回答准确性,将检索文章添加到提示词中,帮助ChatGPT生成准确的回复,

1)单论问答数据的构造

让chatgpt扮演回答者,回应客户的问题,并在输入提示中,生成的回答应该满足以下要求。
1.正确引用制度条文;
2.正确理解问句含义和制度条文给出有根据的分析;
3.全面回答并分析潜在的可能性;
4.提出适当为问题来挖掘事实以帮助进一步的回答;
5.使用平实的语言;
6.给出初步意见和咨询结论。
输入ChatGPT格式例如:

{
    "instruction": "阅读以下文章:[],请回答:[]",
    "input": "",
    "output": "[答案]"
  }

生成格式如下:
在这里插入图片描述

2)多轮问答数据的构造

生成多轮对话,需要设计两个不同的提示词,让ChatGPT分别扮演两个对话着角色,交替使用两个提示,连同对话历史作为ChatGPT的输入
下面是github具体开放的数据例子:
在这里插入图片描述
最后收集大约16000个单论和5000个2或3轮对话。

3.外部知识进行检索增强

对于单轮问答,使用文本检索工具选择前3篇相关文章输入到提示词中,
对于多轮问答,假设对话的主题不变,继续使用相同的3篇相关文章
在这里插入图片描述
或者不用训练模型,直接使用现成的文本检索框架,请参考我的另一篇博文
文本检索系统
或者使用LangChain地址

三、模型训练

微调开源模型LLaMA的步骤,如下图从S1逐步到S12
在这里插入图片描述

可以看到,训练是逐步进行的,并做了系列对比实验
在这里插入图片描述

表中显示了模型再不同阶段对NLP任务的表现,其中每个阶段的细节,可以参考上图,(1)~(6)代表不同阶段用于训练LLaMAd的预训练语料或监督微调数据集,(1)为多语言通用语料库,(2)为中文法律语料库,(3)为通用SFT数据集,(4)为司法考试和法律咨询,(5)为多轮法律对话,(6)为多轮法律对话中增加了检索的法律文章。勾号意味着相应的语料库/数据集已在前一阶段使用,而花号意味着该语料库/数据集在当前阶段被用于训练。

1、提高LLaMA的中文表达能力,S0-S1

为提升LLaMA的中文理解和生成能力,在中文通用语料库对LLaMA进行持续的预训练,Chinese-LLaMA采用的是使用汉字扩充词表的方式,
使用英文和中文的混合语料,模型很多复杂的推理能力可能来自于英文的训练,希望模型在持续的预训练中保持这些能力。

2、加入专业领域的知识S4

加入专业领域文本进行预训练,学习专业领域的能力

3、学习推理能力S7

收集专业领域真实场景的问答对,并要求ChatGPT为提供详细的解释,在训练过程中,QA对被视为指令,模型要求给出解释。

4、学习真实回复能力S9

让模型学习到单轮问答和多轮问答数据的能力,为用户的特定查询生成合适的回复。

5、提高模型回复可靠性S12

引入法律条文检索模块,使得模型能够产生可信的回复
这里初步的实验结果表明,即使模型在持续的训练阶段反复学习这些文章,它也不能在生成时正确的使用他们,它也可能引用不相关的法律条文,或者使用语句相似的词来代替一个术语,而这个词在法律领域中的含义是截然不同的意思

这时候,我们需要一个可靠的模型来召回和用户搜索词相关的三条文档,具体的,训练一个检索模型,数据集构成方面,收集一些用户的咨询问题,并要求专业人士为每个问题标注最多3篇必要文章回复,然后训练一个基于RoBERTa或者双塔模型的文本检索模型,该模型在被保留的测试集上可以达到0.85的召recall@1和0.94的recall@5。

并且,该工作还发现,直接将检索的文章和用户的问题串联起来作为新的输入,该模型会倾向于在其响应中引用所提供的文章,而不区分它们是否与当前情景正在相关

四、实验效果

收集不同领域的英文和中文通用任务,包括自然语言推理,情感分析,常识推理,对话问题回答等,测试模型在不同阶段推理表现
在这里插入图片描述

首先,比较s0和s1的结果,可以发现LLaMA在C3上获得了+5.3%的准确率;英语常识推理方面,s1在SciQ和PIQA的时的表现也不比s0差。这表明对多语种语料库的预训练可以增强模型对中文的表达能力,而不会牺牲其对英文的表达能力。

其次,比较s2和s3,s7和s9/s8/s6的CMNLI的结果,可以发现s3/s9/s8/s6的模型,经过司法考试的例子和法律咨询的微调,可以更好地处理中文NLI任务,准确率提高到+9.3%。

最后,该模型不能处理英语NLI和情感分析任务。在所有阶段,该模型只能对所有的MRPC实例输出Yes,而当不断地训练LLaMA时,它对SST-2也不能获得明显的改善,猜测这是因为没有足够的英语NLI和情感分析的SFT例子。那么该模型就不能理解这种任务的提示中的指令。

五、总结

大模型微调思路和数据集构建方式大致是如此,实操中发现项目最难的一点在于怎么构建自己的数据,无监督数据量太大,解析起来很费功夫,有监督的数据怎么完美构建等,因此需要数据梳理之处将数据有效分类很重要,
提高模型识别其最核心的结论在于,通过加入检索模块,可以提升问答的可靠性,并且通过引入垂直领域的预巡数据和微调数据,都可以提升其领域性能。但在具体实践中,还需要考虑到领域数据和通用数据的组成情况,以及与下游任务之间的对齐情况。

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

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

相关文章

对话网心科技李浩| 携“边缘云+AI”之势,深入拓展算力业务场景落地

// 以ChatGPT为代表的人工智能的应用正加快改变人们的生活和工作方式,各种AI的应用引发了新一轮的音视频内容的生产力革命。而伴随着海量的音视频内容的生成,大量的内容会在边侧创建和存储,并在边端完成计算和分发。网心科技持续专注边缘云…

【论文阅读】2020ECCV-DFDNet

Blind Face Restoration via Deep Multi-scale Component Dictionaries 中文:基于深度多尺度分量字典的盲人脸复原 paper: code:https://github.com/csxmli2016/DFDNet 摘要: 近年来,基于参考的人脸恢复方法因其在真…

windows系统修改mysql8配置文件,关闭ssl验证

如何寻找配置文件 我的电脑,右键,管理,服务 找到MySQL8 右键,属性 找到配置文件位置 通常情况下的默认路径是: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 如何关闭SSL验证 打开 my.ini 配置内容如下&#x…

JAVA基础-集合的工具类Collections

目录 引言 一,Collections工具类的操作方法方法 1,排序操作 2,替换 和 查找操作 二,Collections工具类的使用 2.1,排序操作 2.1.1,集合的逆序 2.1.2,集合的随机排序 2.1.3,集…

第一百一十三天学习记录:C++提高:类模板(黑马教学视频)

类模板 类模板语法 类模板作用&#xff1a; 建立一个通用类&#xff0c;类中的成员 数据类型可以不具体定制&#xff0c;用一个虚拟的类型来代表。 语法&#xff1a; template<typename T> 类解释&#xff1a; template … 声明创建模板 typename … 表面其后面的符号…

SpringCloud nacos 集成 gateway ,实现动态路由

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

LeetCode刷题笔记 - 859. 亲密字符串

LeetCode刷题笔记 - 859. 亲密字符串 运行结果 题目注意点 bool buddyStrings(char* s, char* goal) {char d 0;char gd 0;int pair 0;int epair 0;char map[256] {0};if (strlen(s) ! strlen(goal)) {return false;}while (*s ! \0) {if (*s ! *goal) {if (d 0) {d *s;…

《Kali渗透基础》09. 漏洞利用、后渗透

kali渗透 1&#xff1a;漏洞基本介绍1.1&#xff1a;漏洞从哪里来1.2&#xff1a;缓冲区溢出1.3&#xff1a;如何发现漏洞 2&#xff1a;漏洞利用2.1&#xff1a;EXP 选择与修改2.2&#xff1a;避免有害的 EXP 3&#xff1a;后渗透阶段3.1&#xff1a;Linux 上传文件3.2&#x…

前后端分离windows本地nginx解决跨域

下载 http://nginx.org/en/download.html 命令 启动Nginx&#xff1a; nginx.exe start 快速停止或关闭Nginx&#xff1a; nginx.exe -s stop 正常停止或关闭Nginx&#xff1a; nginx.exe -s quit 配置文件修改重装载命令&#xff1a; nginx.exe -s reload 强制停用…

六边形架构

六边形架构 微服务系统架构微服务定义微服务系统设计 传统分层架构六边形架构参考资料 微服务系统架构 需求描述做什么的问题&#xff0c;架构描述怎么做的问题(描述组成系统的各部件及其之间的关系) 微服务定义 下面的定义来自周志明老师的 凤凰架构 微服务是一种通过多个小型…

2023牛客暑期多校第一场部分题解

索引 BCDHJKLM B 官方题解说是乱搞题&#xff0c;而我队友实际上也确实乱搞过去了&#xff08; 就是先随便取两个点&#xff0c;有了两个点之后第三个点肯定选离这两个点构成的直线最远的那个&#xff0c;要不然没法包含整个凸多边形。这个过程可以用个三分。 但是确定了第三…

前端(八)——深入探索前端框架中的Diff算法:优化视图更新与性能提升

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;深入探索前端框架中的Diff算法&#xff1a;优化视图更新与性能提升 文章目录 前端框架中的Diff算法概述vue和react框架的diff算法React的diff算法&#xff1a;Vue的diff算法&#xff1a; Diff算法在…

实训笔记7.20

实训笔记7.20 7.20一、座右铭二、HDFS宕机之后的副本数的问题三、MapReduce的工作流程&#xff08;简单版本&#xff09;四、Hadoop的序列化问题五、MR程序运行中InputFormat类的作用5.1 作用主要有两个5.2 有一个核心实现类--抽象类FileInputFormat 当输入的数据是文件的时候5…

【图像分类】基于LIME的CNN 图像分类研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 基于LIME&#xff08;Local Interpretable Model-Agnostic Explanations&#xff09;的CNN图像分类研究是一种用于解释CNN模型的方法。LIME是一…

实用的设计模式08——适配器模式

适配器的单词是Adapter&#xff0c;我们在开发时经常碰到叫做XxxAdapter的类&#xff0c;此时一般就是使用了适配器模式&#xff0c;适配器模式是非常常用&#xff0c;本文就对适配器模式做一个简单的介绍 文章目录 1、真实开发场景的问题引入2、适配器模式讲解2.1 核心类及类图…

2021年全国大学生电子设计竞赛H题——用电器分析识别装置

用电器分析识别装置 一、题目要求二、系统方案三、硬件设计3.1、ATT7022电参数采集模块 一、题目要求 任务 设计并制作一个根据电源线电流的电参量信息分析在用电器类别的装置。该装置具有学习和分析识别两种工作模式。在学习模式下&#xff0c;测试并存储用于识别各单件电器的…

百亿规模京东实时浏览记录系统的设计与实现 | 京东云技术团队

1. 系统介绍 浏览记录系统主要用来记录京东用户的实时浏览记录&#xff0c;并提供实时查询浏览数据的功能。在线用户访问一次商品详情页&#xff0c;浏览记录系统就会记录用户的一条浏览数据&#xff0c;并针对该浏览数据进行商品维度去重等一系列处理并存储。然后用户可以通过…

mybatis事物是如何和spring事物整合的

目录 1、mybatis事物管理器 2、SpringManagedTransactionFactory如何处理事物 3、spring事物如何设置connection连接到threadLocal 1、mybatis事物管理器 mybatis事物抽象接口类&#xff1a;Transaction。该接口定义了事物基本方法和获取数据库连接方法 该类有三个实现类Jd…

【本地开发快速添加localstoreage和cookie】

在本地开发时&#xff0c;通常会需要线上开发或测试环境的缓存&#xff0c;然而&#xff0c;如果缓存过多时&#xff0c;一个一个的复制key&#xff0c;value太过麻烦&#xff0c;于是本文介绍了一种快速设置缓存的方法。 cookie 需要用到插件&#xff0c;使用JSON格式导出&am…

PPT逻辑设计与完美呈现

PPT逻辑设计与完美呈现 https://haoxinyunxueyuan.zhixueyun.com/#/study/course/detail/detailInfoCD00——朱宁川 logo设计神器: https://www.zitijia.com/logodiy/index 一 PPT设计 第一章、PPT的灵魂设计-5W PPT灵魂设计(5W) 以终为始&#xff0c;从目标出发 why 目…