大模型当私人法律顾问?北大团队推出法律大模型,数据与模型全部开源!

news2024/11/12 22:07:10

作者 | 小戏、Python

要是我有一个学法的朋友就好了

法律作为我们社会生活的最高指引,其重要性毋庸多言。然而类似于医学,法律又是一个入行门槛非常高的专业领域,想想通过率不到 10% 的法考,显然遇到法律相关的专业问题不太支持我们抄起法条生啃,因此一个理想的场景便是我有一个自己的私人法律顾问,可以自信的说“在我律师来之前,我不会说一句话”

事实上,在大家畅想大模型广阔的应用天地时,肯定也想到过将大模型应用于专业的垂直领域,在这些领域大模型所擅长的“问答”必然能带来比纯粹的聊天机器人或是智能客服更多的想象力。但是问题似乎也显而易见,垂直领域的大模型缺少对领域特定知识的训练语料,同时,在医学、法律这样的需要高度“可信”的领域中,大模型的机器幻觉也会带来许许多多的问题。

大模型研究测试传送门

GPT-4传送门(免墙,可直接测试,遇浏览器警告点高级/继续访问即可):
Hello, GPT4!

而最近,北京大学王选计算机研究所的团队推出了一个中文的法律大模型 Lawyer LLaMA,通过在大规模法律语料中进行训练,系统学习中国的法律知识体系使得模型可以掌握中国的法律知识并应用于中国的法律实务。让我们上图片举个栗子:

对比上图左侧的BELLE(Be Everyone's Large Language model Engine)模型,如果提问“中国的法定结婚年龄”,可以看到 Lawyer LLaMA 给出了一个正确的,并且更像是 Lawyer 的回答。并且,即使是提供了必要的法律条文,如上图问题B,BELLE 也无法给出一个正确的回答,而 Lawyer LLaMA 则有理有据的颇具专业性的很好的回答了这个问题。

其实从 BELLE 的回答中也可以看出,直接将这样一个大模型套在专业的垂直领域下往往会出现许多问题,作者团队认为,要使得大模型可以很好的适应法律领域的特殊要求,必须要满足以下三个条件,分别是:

  1. 精确的表意,避免歧义:在法律领域中常常会有仅仅更换一个字词,就会导致法律关系构建出截然相反的结果,譬如中文中定金与订金仅相差一个字,但是其含义与法律效力在合同法中却完全不同;

  2. 理解与区分法律术语:在法律中,有许多特有的特定词汇,许多术语仅仅出现在法律领域中,如法人这个概念,而还有更多术语可能在法律领域与日常生活领域拥有着不尽相同的含义,也需要模型加以区分;

  3. 能够理解实际情况:除了对法律术语与法律分析要有基本的了解与系统的掌握以外,模型还应当具有精确理解现实生活问题的能力,即模型需要拥有一个应用法律理论来解决特定问题的核心能力。

基于上述理论,作者团队便基于开源的 LLaMA 模型期望通过以下几步解决法律领域大模型的适用问题:

  1. 法律相关知识注入:通过收集大量法律领域的原始文本,如法律条文、司法解释与国家法律文件,对原始模型使用新数据进行继续训练;

  2. 特定领域技能习得:一个良好的法律大模型应该能够解决法律领域的常见问题,如概念解释、案例分析与法律咨询,因此作者收集了一组实际的任务案例,使用 ChatGPT 生成相应答案从而进行监督微调,以使得模型具有解决法律领域特定任务的能力;

  3. 信息检索减轻幻觉:为了减轻大模型的机器幻觉问题,作者同时引入了一个信息检索模块,在生成每个回复之前,都首先利用用户的查询与上下文检索相关法律条文,基于这些法律条文再去生成相应回复。

通过以上三步,作者团队便成功的完成了 Lawyer LLaMA 的构建,Lawyer LLaMA 的整体运作流程如下图所示:

先跳开训练的细节,让我们定性的看一波 Lawyer LLaMA 的回复表现,首先在一个法律概念解释的任务里,当要求模型解释“什么是夫妻共同财产”时,BELLE 与 ChatGLM 都给出了错误的回答,从这两个大模型所犯的错误中可以看到,法律领域的概念解释并不是一个简单的问题,如 BELLE 虽然理解了夫妻共同财产的概念,但是却错误的使用了“任何财产”这样的表达,而 ChatGLM 则错误的将共同债务视为共同的财产类型,甚至对财产分割开始胡言乱语,而只有 Lawyer LLaMA 简明准确的回答了这样一个概念

更进一步的,作者同样要求 BELLE 与 ChatGLM 以及 Lawyer LLaMA 区分两个相似的法律概念,即离婚与无效婚姻,可以看到 BELLE 和 ChatGLM 都误解了离婚的概念,并且使用了口语化的容易导致歧义的表达,如 BELLE “从未存在过” 这样非常不专业的回答,也只有 Lawyer LLaMA 给出了一个看起来更加专业可信度更高的回复

除了上述名词解释性的题目外,Lawyer LLaMA 在“应用题”法律实务咨询上也表现良好,如下图所示,关于一个离婚问题,BELLE 与 ChatGLM 的回复都存有一些逻辑问题甚至胡言乱语,这样的回复显然不能作为法律实务咨询的回复,而 Lawyer LLaMA 则非常清晰明了的回答了上述的咨询问题:

同时,在作者的实验中还发现, BELLE 与 ChatGLM 这两个模型事实上并不能理解法律条文的含义,如下面的案例中,BELLE 引用了一个完全无关的条文,而 ChatGLM 则混淆了无效婚姻与可撤销婚姻的概念,都导致的回答错误。

Lawyer LLaMA 的构建

为了成功构建一个法律领域的大模型,遵循前文介绍的三步,作者为了解决使用的开源大模型 LLaMA 的中文理解问题,作者团队首先先使用中文通用语料库对 LLaMA 进行训练,这些中文语言抽样自 WuDaoCorpora、CLUECorpus2020 以及维基百科的简体中文版。在完成中文能力增强之后,作者开始着手构建中文法律语料库,这样一个法律语料库主要来源于中国各级法院网站的文章、判决文书、法律条文、司法解释、法庭新闻以及各种法律科普文章等等

同时,作者使用了“天下第一考”法考的考试题来让大模型进行刷题训练,作者采用了 JEC-QA(A Legal-Domain Question Answering Dataset) 数据集的 26365 个单选与多选问答对来对模型进行训练,并且为了增强模型对“解题过程”的理解,作者又使用了 ChatGPT 为模型生成问题解释,生成的解释示例如下所示:

而对于法律咨询问题,作者主要使用一个开源的法律咨询数据集对问题进行抽样,同样,使用 ChatGPT 生成问题回答,区别于上文直接的采用 ChatGPT 生成问题解释,在面对法律咨询这种更加复杂的问题时,作者综合使用单轮与多轮对话、赋予 ChatGPT 律师角色、设计 Prompt 等等以提升回复的准确性,并且为了保证“有法可依”,作者团队还设计了一个法律条款的检索器,要求 ChatGPT 正确引用法律条款以生成回复

在收集了大约 16000 个单轮回答与 5000 个具有 2-3 轮对话回复之后,模型整体训练流程可以被表示为以下这张图片:

如上图所示,整体训练流程经过了增强汉语能力(s1),法律知识注入(s4),下游任务训练(s7)以及法律条文检索(s12)四大步,逐步增强模型解决法律问题的能力,值得注意的是其中最后一步法律条文检索,在作者的实验中发现,现有大模型即使学习到了相关的法律条文条款,但是仍然学不会在生成回复时正确的引用它们,经常会出现参考不相关的条文,错误替换含义不同的法律概念等等问题,因此作者引入了法律条款检索模型,针对法律咨询的用户问题,要求专业律师标注最多 3 个必要的法律条文,再使用 RoBERTa 训练了一个在相关检索测试集上正确率 85% 的法律条文检索模型。但是当检索到的法律条文与用户输入相连时,作者发现模型也会倾向于引用所提供的所有法律条文,而不去区分它们是否真正与当前问题场景相关,因此,论文又加入了许多不相关的文章到模型的上下文中,以迫使模型忽略那些“不重要的信息”,并且添加了“参考文献中可能有不相关的内容,请避免在回复时引用那些不相关的文章”的 Prompt

最终实验基于 LLaMA-7B 训练完成 Lawyer LLaMA 的构建,基于模型训练的s1-s12个阶段,以及(1)-(6)种训练语料,作者评估了模型在训练各个阶段在中文通用任务、英文通用任务以及中文法律任务中的模型得分,可以发现模型在中文语料训练后在中文问答数据集 C3 中获得了 5.3% 的正确率提升,并且其英文能力没有出现下降。同时,比较好玩的一点是,在学习完法考之后,模型的中文 NLI 能力(CMNLI)也得到了提升,提升了 9.3%,尽管法考的试题数据中没有 NLI 的问题,因此模型似乎是通过对法考题目以及推理判断过程的学习增强了中文的理解与推理能力(不愧是法考)

而在法律领域,**通过区分法考数据(JE)中的概念辨析(JE-C)与情景规划(JE-S)问题以及婚姻判决问题(CAM)与财产判决问题(CAP)构建评估数据集,可以发现,s12 的模型在大多数任务中都优于 s0,准确率在 CAM 与 CAP 中提升幅度都超过 10%**,但是比较 s0、s4、s7 下的 JE-C 与 JE-S 的结果,可以发现从 s0 到 s7,JE-C 提升 3.9%,JE-S 提升 2.85%,但是当引入问题咨询的数据后,JE-C 与 JE-S 的准确率都出现了下降,作者认为主要原因可能来自考试问题与咨询问题之间的不相似性。

总结与讨论

这篇文章提出了法律这样一种垂直专业领域下的大模型训练方法论,其实不仅仅是法律,许多专业细分领域的大模型训练都可以从这篇论文中找到借鉴,总结来说,就是“有监督微调”让模型学习必要的专业知识,“检索模块”提供必要的外部证据以解决模型的可信性问题。这篇论文的代码也开源在了 Github 中,并且计划进行 Lawyer LLaMA 13B 的内测体验,感兴趣的小伙伴可以关注下方论文与代码链接~

论文题目:
Lawyer LLaMA Technical Report
论文链接:
https://arxiv.org/pdf/2305.15062.pdf
代码链接:
https://github.com/AndrewZhe/lawyer-llama

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

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

相关文章

mysql中SQL语句查询字段相加的和,以及更改小数精确位。和查询SQL语句结果相减的SQL查询

最近在工作中碰到了SQL进行查询,用户缴费以及退费信息的工作,以及查询完后需要修改SQL结果后小数位的需求,整理结果如下: 首先,看内容: 如图,operate_type代表缴费与退费,分别用0和1区别。 #…

快速教你如何使用postman工具进行接口测试?(配置全局token、JWT可用)

现在很多人都在使用前后端分离进行项目开发,那在后端开发过程中使用postman测试工具可快速便捷完成接口测试。但是在测试过程中,很多人发现因为JWT的鉴权,导致半个小时就需要更新一下token,让我们的测试变得复杂。 若是将token作…

【JUC中的 “8锁现象” 】 —— 每天一点小知识

💧 J U C 中的“ 8 锁现象” \color{#FF1493}{JUC中的 “8锁现象” } JUC中的“8锁现象”💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》…

python基础学习3【NumPy矩阵与通用函数【矩阵相乘+平方+广播机制+转置】+ save、load、sort、repeat、unique、鸢尾花1】

NumPy矩阵与通用函数 a np.mat([[1,2],[3,4]])#生成矩阵b np.matrix([[1,7],[6,4]])np.bmat("a b") 矩阵的运算 矩阵特有属性: 属性 说明 T自身转置H共轭转置I逆矩阵A自身数据的二维数据视图 例如: np.matrix(a).T 矩阵相乘:…

【Map集合的基本功能】

Map集合的基本功能 V put(K key,V value):添加元素 V remove(K key,V value):根据键删除键值对元素 package com.gather.map; //Map集合常用的基本功能 import java.util.HashMap; import java.util.Map; public class MapDemo02 {public static void m…

Flutter:路由、拦截返回事件、自定义独立路由

路由堆栈 Flutter 路由管理中有两个非常重要的概念: Route:路由是应用程序页面的抽象,对应 Android 中 Activity 和 iOS 中的 ViewController,由 Navigator 管理。Navigator:Navigator 是一个组件,管理和…

哈希表--想彻底了解哈希表,看这一篇文章就可以了

为了一次存储便能得到所查记录,在记录的存储位置和它的关键字之间建立一个确定的对应关系H,已H(key)作为关键字为key的记录在表中的位置,这个对应关系H为哈希(Hash)函数, 按这个思路建立的表为哈…

【Leetcode】 1071. 字符串的最大公因子

For two strings s and t, we say “t divides s” if and only if s t ... t (i.e., t is concatenated with itself one or more times). Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2. Example 1: Input: s…

开发改了接口,经常忘通知测试的解决方案!

目录 前言: Apifox解决方案 Apifox对此给出的解决方案是: 用Apifox怎么处理接口变更 接口代码实现逻辑修改 接口参数修改 前言: 在开发过程中,接口变动十分频繁,测试人员没有及时获得相关通知的情况也很普遍。这…

这一次AI应该是真正的已经到来

渐渐感觉这一次AI的变革能真正的突破迷雾,迎来真正的人工智能时代的到来。所以写篇博文学习一下。经过半年的发酵与发展,不得不说AI已经成为了不可逆转的趋势。之所以说这一次AI应该是真正的已经到来,是因为人工智能的发展其实已经经历了几十…

【Python】一文带你了解 正则表达式 + 简单操作

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

通过第三方软件修改 MacOS 的键盘映射

通过第三方软件修改 MacOS 的键盘映射 由于文本编辑时大量使用word level的左移、右移,其中: OSX的单词级左右移为option Left/Right Arrow,整行级左右移为command Left/Right Arrow 单词级移动与进行编辑常用的command不同键位&#xff0c…

Chat2DB:阿里巴巴开源的聊天数据管理工具--实践

Chat2DB:阿里巴巴开源的聊天数据管理工具–实践 简介 ​ Chat2DB 是一款有开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了…

Jetpack Compose ——Row

当我们构建界面时,经常需要在Compose中使用Row布局来水平排列多个组件。Row提供了一种方便的方式来管理和定位子组件,使它们按照我们期望的方式呈现。 在Compose中,Row可以接受多个子组件作为参数,并根据指定的布局规则进行排列。…

桥梁监测方案-智慧桥梁监测管理系统

桥梁作为现代交通基础设施的重要组成部分,承载着大量的车辆和行人交通。然而,随着时间的推移,桥梁结构可能会受到自然环境、交通负荷和物质疲劳等因素的影响,从而导致潜在的风险和结构损坏。桥梁监测能够通过实时监测桥梁的结构状…

git一定要学会,加油

gitgit文档http://file:///F:/%E8%B5%84%E6%96%99%E5%A4%8D%E4%B9%A0/Git%E4%BC%98%E7%A7%80%E5%BC%80%E6%BA%90%E4%B9%A6%E7%B1%8D/Git%E5%BC%80%E6%BA%90%E4%B9%A6%E7%B1%8D/Pro%20Git%E4%B8%AD%E6%96%87PDF%E7%89%88.pdf init 初始化仓库 这个命令在当前目录下初始化一个 G…

安装Django 3.2的过程记录~

首先看下Django 3.2目前更新到哪些版本,用下面这条命令: pip install Django100.0.5与3.2有关的版本号有: 3.2a1, 3.2b1, 3.2rc1, 3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.9, 3.2.10, 3.2.11, 3.2.12, 3.2.13, …

MAC系统使用

查看端口占用情况 //如查看8080端口的占用情况 sudo lsof -i tcp:9901//比如我们想要释放Java占用的9901端口 PID 是 12420 kill -9 12420

C语言:写一个函数,实现一个整型有序数组的二分查找

题目: 写一个函数,实现一个整型有序数组的二分查找,找出要找的数字在数组中对应的下标。 思路: 总体思路: (一)自定义函数部分: (1). 参数: int…

融云《社交泛娱乐出海作战地图》,手把手教你拿下出海“最后一公里”难题

社交泛娱乐出海,已然是当下互联网出海的主力。关注【融云全球互联网通信云】了解更多 不少国内互联网巨头都将社交泛娱乐作为海外市场重点布局赛道。从较为传统的音视频、短视频社交出海,到逐渐直播出海、元宇宙社交出海,社交泛娱乐出海版图…