也读Lawyer LLaMA法律领域微调大模型:从训练数据、模型训练到实验效果研读
在前面的文章《LaWGPT:面向法律领域的两大微调模型介绍及今日前沿大模型动向速递》中,我们从原始数据、模型训练以及模型效果三个方面对两个法律领域的微调模型:pengxiao-song/LaWGPT以及LiuHC0428/LAW-GPT,进行了介绍,但这两个项目相对简单,也并未做许多深入的对比实验。
实际上,领域微调模型,尤其是基于llama的领域微调模型中存在着诸如增量预训和垂直语料预训、微调SFT的数据准备和训练问题,关于不同阶段数据对模型的影响到底如何,这些很有趣。
最近一篇工作《Lawyer LLaMA Technical Report》,文章地址:https://arxiv.org/abs/2305.15062,以一个比较具有结论性的工作被放出来,读了一下,觉得很不错。
该工作针对大模型部署到特定的领域,如法律或医学时所面临着特定领域知识不足的挑战,以及利用这些知识来解决领域相关问题的能力不足的问题,重点放在法律领域,探讨了如何在持续训练阶段注入领域知识,以及如何设计适当的监督微调任务来帮助模型解决实际问题,做了一些对比实验,会有一些启发。
因此,本工作对其进行介绍,供大家一起参考,该工作可以仔细品一下。
项目地址:https://github.com/AndrewZhe/lawyer-llama
一、工作背景概述
先看对比效果,图1显示了在BELLE上预先训练的LLaMA和Lawyer LLaMA的回答。
对于问题A,正确的答案是Lawyer LLaMA提供的,即男性的法定结婚年龄是22岁,女性是20岁。显然,BELLE缺乏这种特定领域的知识,只能回答18岁,也就是具有完全民事行为能力的年龄。
另外,在问题B中,即使提供了必要的法律条文,BELLE也不能算出用户查询中最重要/最相关的部分,即妻子在不到一年前生下孩子,因此丈夫不允许在这个时候提出离婚。
BELLE的糟糕表现表明在一般领域预先训练的LLM不能直接应用于解决法律问题。
要将大型模型应用于法律领域,它们需要具备以下三种能力,这个可以重点关注:
1. 传达准确/精确的意思,没有歧义。在法律领域,仅仅替换一个词就可以影响法律关系和义务的建立,有可能导致巨大的不同后果。例如,定金和订金在中文中只有一个字的差别,但它们在合同法中的含义和法律效力却完全不同。
2.理解和区分法律术语。有许多概念只出现在法律领域,如法人(juridical person)。即使是广泛使用的词汇,其含义在法律领域也可能略有不同。例如,妻子这个词在日常生活中不一定意味着法律上承认和保护的婚姻关系,但在特定的法律领域,当提到妻子时,它肯定意味着合法的婚姻关系。
3. 能够分析实际案例。现实世界的情景总是复杂多样的。模型需要具备识别法律术语和应用法律理论来分析具体问题的能力。
为了建立一个能够正确应用法律知识、解决法律领域实际问题的模型,该工作根据LLaMA模型,采取了以下四个步骤:
1、注入法律知识: 收集大量的法律领域的原始文本,如法律条文、司法解释和中国人民法院的司法文件。然后,应用继续训练来帮助模型学习法律知识。
2、训练学习特定领域的技能: 使用领域知识的能力可以在解决实际任务时学习,如概念解释、案例分析和法律咨询。因此,收集了一组这些任务的真实查询,并使用ChatGPT1生成相关的答案。然后利用这些数据进行监督下的微调,教模型如何用适当的知识来解决特定领域的任务。
3、用外部知识进行增强: 为了缓解大型语言模型的幻觉问题,并使模型能够产生更准确和忠实的回答,另外引入了一个信息检索模块。在生成每个回复之前,首先利用用户的查询和上下文信息来检索可以作为查询证据的相关法律文章,然后在这些法律文章的基础上进行回复。
二、先看数据情况
1、预训练语料库
为了提高模型在中文法律咨询中的表现,该工作采用了两种语料对LLaMA模型进行持续预训练。
首先在一个普通的多语言语料库上训练模型,以提高其代表中文的能力。然后,使用一个中文法律语料库,用法律知识来增强模型。其中:
1)多语言通用语料库Multilingual General Corpus
由于LLaMA主要是在英语和其他使用拉丁字母或西里尔字母的语言语料库上进行预训练的,因此它在理解和生成中文句子方面的表现可能并不完美。
为了解决这个问题,同时收集中文预训练语料和也收集英文语料库进行记忆重放,以避免灾难性的遗忘。
具体的,为了构建中文通用语料库,该工作从WuDaoCorpora、CLUECorpus2020和维基百科的简体中文版本中抽取文章。
对于英语通用语料库,从C4语料库中抽取文章。
2)中文法律语料库Chinese Legal Corpus
为了用中国的法律知识来增强模型,该工作从中国法院的网站上收集文章,包括判决书、法律文章、司法解释、法院新闻和各种法律普及文章。
2、国家司法考试
国家司法考试是一种闭卷考试,申请人必须通过考试才能获得律师或法官资格,是对对法律从业人员的法律知识和专业技能的全面评估,因此,模型可以通过对这类考试的问题进行练习来学习法律技能。
具体的,该工作使用JEC-QA,JEC-QA包括26,365道选择题和多选题,但不包含任何对答题者的解释。
为了提供更详细的证据和如何解决这些问题的推理程序,该工作要求ChatGPT为每个答案提供解释。
数据地址:https://jecqa.thunlp.org/,样例如下:
Question: 关于交通肇事罪与其他犯罪关系的论 述,下列选项是正确的吗?丁酒后驾驶交通肇事 后,继续驾车到处冲撞,造成五死九伤,应定交 通肇事罪。
Response: 根据《中华人民共和国刑法》规定,醉 酒后驾驶机动车辆,发生重大交通事故,构成交 通肇事罪。丁酒后驾驶发生交通事故,已经构成 交通肇事罪。但是,丁继续驾车到处冲撞,造成 五死九伤,已经超出了交通肇事罪的范畴,应当 认定为危害公共安全罪。因此,丁应当被定罪为 危害公共安全罪,而不是交通肇事罪。
3、法律咨询技能微调数据
该工作从法律咨询的开源数据集中抽取种子问题(Chen,2018),并使用ChatGPT来生成回复,由此构造SFT数据集。
为了保证单轮和多轮能力,该工作同时收集了单轮和多轮对话,同时为了提高生成的回答的忠实度,为给定的问题搜索相关法律文章,并将检索到的法律文章被添加到输入提示中,帮助ChatGPT生成更忠实的回答。
数据地址:https://opendata.pku.edu.cn/dataset.xhtml?persistentId=doi:10.18170/DVN/OLO4G8
1)单轮问答数据的构造
为了生成对法律咨询问题的回应,要求ChatGPT扮演律师并回应客户。并在输入提示中,注入生成的回答应该满足的六个要求:
(1)正确引用法律条文;
(2)根据案件事实和法律条文给出有根据的分析;
(3)全面回答并分析潜在的可能性;
(4)提出适当的问题来挖掘事实以帮助进一步回答;
(5)使用平实的语言;
(6)给出初步法律意见和咨询结论。
举例如下:ChatGPT对一个关于法定结婚年龄的问题产生了一个回答,引用了《中华人民共和国婚姻法》中的一篇法律条文,并指出了几种特殊情况。
Question: 我和我对象想结婚,我想问一下,结婚 的法定婚龄是几岁啊
Response: 根据《中华人民共和国婚姻法》规定, 男女结婚的法定婚龄为男满22周岁,女满20周岁。未达到法定婚龄的人不得结婚。但有特殊情况的可以提前结婚,需要得到父母或者监护人的书面同意,并经当地婚姻登记机关审查批准。
2)多轮对话数据的构造
为了生成法律咨询问题的多轮对话,该工作设计了两个不同的提示,要求ChatGPT分别扮演客户和律师的角色,并交替使用这两个提示,连同对话历史,作为ChatGPT的输入。
如下所示,客户在律师的第一次回答后提出了一个关于婚姻程序的后续问题。
Client: 我和我对象想结婚,我想问一下,结婚的 法定婚龄是几岁啊
Lawyer: 根据中华人民共和国婚姻法,男女都要 满22周岁才可以结婚,不足22周岁的男女不得自 行结婚。但是,如果特殊情况需要提前结婚, 可以向婚姻登记机关提出申请审核。如果您有其 他方面的疑问,也可以告诉我,我可以帮助您进 行解答。如果您有其他方面的疑问,也可以告诉 我,我可以帮助您进行解答。
Client: 我知道,听别人说婚姻需要提前办理一些 手续,那我需要准备哪些证件和资料呢?是否需 要提前办理健康检查和体检?
Lawyer: 是的,婚姻登记需要您准备一些证件和资料,包括:...
3)加入外部知识进行检索增强
对于单轮问答时,将由法律文章检索模型选择的前3篇相关法律文章附加到输入提示中。
对于多轮对话,假设对话的主题不会改变,并在对话中使用相同的3篇法律文章。
例如,在下面的例子中,检索了3篇法律文章作上下文进行输入,可以看到,结果也很有趣。
RelatedArticles: 《民法典》第一千零四十七条: 结婚年龄,男不得早于二十二周岁,女不得早于 二十周岁。 《民法典》第一千零四十六条:结婚应当男女双 方完全自愿,禁止任何一方对另一方加以强迫, 禁止任何组织或者个人加以干涉。 民法典》第三百零四条:共有人可以协商确定分 割方式。达不成协议...
Client: 我和我对象想结婚,我想问一下,结婚的 法定婚龄是几岁啊
Laywer: 根据《民法典》第一千零四十七条规定, 结婚的法定婚龄为男不得早于22周岁,女不得早 于20周岁。如果未到法定结婚年龄而坚持结婚, 将被认定为无效婚姻。 请问您和您的对象的年龄是否已达到法定婚龄? 如果未达到,建议您等待至法定婚龄再考虑结婚 的问题。
Client: 我们都满足法定结婚年龄了,但是我们的 家长反对,他们说我们还太年轻,不应该急于结 婚,你怎么看?
Lawyer: 根据《民法典》第一千零四十六条规 定,结婚应当男女双方完全自愿,禁止任何一方 对另一方加以强迫,禁止任何组织或者个人加以 干涉。因此,如果您和您的对象完全自愿并且已 达到法定结婚年龄,您们可以合法结婚,即使家 长反对。当然,作为尊重家长、保持良好亲情关 系的一种方式,可以尝试与家长沟通,了解其反 对的原因,并考虑如何解决其关注的问题。如果 家长反对并不合理,您和您的对象有权利自主决 定。
最后,总共收集了大约16,000个单轮数据和5,000个有2或3轮的对话。
下面是github具体开放的数据例子:
三、再看模型训练过程
下图3说明了微调开源模型LLaMA的步骤,比较有意思,从S1逐步走到S12。
可以看到,训练是逐步进行的,改工作做了系列对比实验
1、提高LLaMA的中文能力s0->S1
由于LLaMA在训练过程中使用的中文文本很少,最初的任务是提高LLaMA对中文的理解能力(图3-s1)。
为了提高LLaMA的中文理解和生成能力,在中文通用语料库上对LLaMA进行了持续的预训练。
里面的论述很有趣,遇到2个问题:
问题1:许多汉字没有被包含在LLaMA的词汇表中。实际上,只有700个汉字被包括在内,而且LLaMA使用字节来对UTF-8编码中的其他汉字进行解构。为了提高中文句子的解码效率,Cui等人通过增加常见的汉字来扩大词汇量,并对这些新增加的单词嵌入和模型参数进行重新训练。
然而之前的研究表明,扩大词汇量似乎并没有为下游的中文NLU任务带来进一步的改善。
因此,我们选择在训练期间保持LLaMA的词汇量不变。
问题2:是否应该只在中文语料库上继续进行预训练,还是也应该加入英文文本。
该工作决定使用英文和中文的混合语料,因为该工作相信许多复杂的推理能力可能来自于英文的预训练,并希望模型在持续的预训练中保持这些能力。
2、注入法律知识S4
如图3-s4,为模型补充它所缺乏的中文法律知识。为了弥补原LLaMA模型中法律知识的不足,收集各种法律领域的纯中文文本,包括法律文章和司法解释,以进一步持续训练,并增加一些通用的文本,以防止模型对法律语料库的过拟合。
3、学习推理技能S7
解决实际问题需要模型具有法律领域的推理能力,通过案例分析等下游任务教模型使用这些知识来解决实际问题,从下游任务中选择有监督的数据,并按照指令-调整的方法训练我们的模型。
在这一步,使用从JEC-QA中收集关于区分术语和案例分析的问题-答案对,并要求ChatGPT为它们提供详细的解释。在训练过程中,QA对被视为指令,我们的模型被要求给出解释。
4、学习真实回复技能S9
收集一组真实世界用户与律师协商的数据 ,并通过ChatGPT获得相应的回复。然后,使用收集到的监督数据来训练模型为特定查询生成合适的回复。
5、提高模型反应的可靠性S12
如图3-S12所示,为了进一步提高模型反应的可靠性,引入了一个法律条文检索模块,使模型能够产生可信回复。
这里有个比较有趣的结论:
初步实验表明,即使模型在持续的训练阶段反复学习这些文章,它也不能在生成响应时正确使用它们。它可能会引用不相关的法律条文,或者用一个语义相似的词来代替一个术语,而这个词在法律领域中的含义是截然不同的。
为了使该模型产生更可靠的反应,将其与法律文章检索模块相结合,具体的,为了训练检索模块,首先收集了一些用户的法律咨询问题,并要求法律专业人士为每个问题标注最多3篇必要的法律文章来回答。然后训练一个基于RoBERTa的法律文章检索模型,该模型在被保留的测试集上可以达到0.85的召recall@1和0.94的recall@5。
并且,改工作还发现,直接将检索到的法律条文和用户的问题串联起来作为新的输入时,该模型倾向于在其响应中引用所有提供的法律条文,而不区分它们是否与当前的情景真正相关。
四、再看实验效果及结论
改工作评估lawyer-LLaMA在不同的训练阶段的zeroshot表现,收集了不同领域的英文和中文通用任务,包括自然语言推理、情感分析、常识推理、对话问题回答等。
1、对一般任务的评估
先看在不同的语料库或不同的监督-微调数据集上持续训练LLaMA时,它解决一般NLP任务的能力如何变化。
例如,我们可以研究在不断对中文语料进行预训练之后,英语推理任务的模型性能是否会恶化。
如表1所示:
首先,比较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例子。那么该模型就不能理解这种任务的提示中的指令。
2、对中国法律任务的评估
除了处理一般的NLP任务外,也关注律师LLaMA是否能够学习法律知识并解决特定领域的任务。因此,构建了几个中文法律任务来评估模型在特定领域的表现。
具体的,创建了基于中国司法考试(JE)客观题的多项选择任务。对于司法考试的每一个问题,都有四个由人写的选项,其中一至四个选项可以是正确答案。
这里划重点,对于问答题,常规的做法都是构造prompt直接进行预测,然后通过解析答案获得最终答案,这里采用的是困惑度排序取最优的方式,该模型只能选择一个困惑度最低的答案。因此,只评估有一个正确选项的法律任务的问题。
进一步的,这些问题可以分为两部分: JE-C(概念辨析)和JE-S(情景规划),分别记为JE-C和JE-S。
由于中国法律语料库和法律咨询数据集主要集中在婚姻法上,所以也考察了LLaMA律师在每个训练阶段解决有关婚姻法任务的能力。在这项工作中,从中国法院的网站上收集判决书,并设计了分类任务:预测婚姻的原因。
在数据集构造上,为了减少噪音,只选择民事一审的判决书,总共收集了4,875份关于婚姻的判决书来构建一个4类任务(CAM),以及10K份关于财产的判决书来构建一个10类任务(CAP)。
从表1中关于每个中文法律任务的结果来看,可以看到:
首先,与s0相比,在中国法律语料库上持续的预训练可以为s4的模型带来超过+21.6%的CAM准确率,这表明该模型可以从中文法律语料库中学习有关婚姻的知识。
其次,与s0相比,在s1阶段,在对多语种通用语料库进行训练后,模型在CAM和CAP上的表现明显恶化。
尽管C3的结果表明,模型在s1时比s0时能更好地表示中文文本,但它仍然失去了理解判断文档的能力(这里指的是分类能力)。这里猜测LLaMA的预训练语料库可能包含一部分法律文本,然后原始的LLaMA可以处理如CAM和CAP的简单法律分类任务,但是多语言通用语料库中的文本主要是新闻和维基百科的网页,与法律文本属于不同的领域,这就是个典型的遗忘问题。
最后,比较JE-C和JE-S在s0/s4/s7的结果,发现用中文法律文本和一般的SFT例子训练LLaMA可以给JE-C带来超过+3.9%的准确性,给JE-S带来+2.85%的准确性。这表明该模型在注入法律知识后可以更好地处理司法考试等法律任务。不过,当该模型以对话的形式在SFT数据上进行训练时,它似乎无法解决司法考试,这可能是由于考试问题和咨询问题之间的不相似性,这似乎表明了下游任务数据和原数据需要尽可能保持一致,才能有实际效果。
总结
本文主要介绍了《Lawyer LLaMA Technical Report》这一工作,其最核心的结论在于,通过加入检索模块,可以提升问答的可靠性,并且通过引入垂直领域的预巡数据和微调数据,都可以提升其领域性能。但在具体实践中,还需要考虑到领域数据和通用数据的组成情况,以及与下游任务之间的对齐情况。
当然,这类实验总是有趣的,之前belle的工作也得到了微调的结论,大家可以看之前的介绍文章。
参考文献
1、https://github.com/AndrewZhe/lawyer-llama
2、https://arxiv.org/abs/2305.15062
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。