开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2023.06.06中国台湾
实际上,领域微调模型,尤其是基于llama的领域微调模型中存在着诸如增量预训和垂直语料预训、微调SFT的数据准备和训练问题,关于不同阶段数据对模型的影响到底如何,这些很有趣。
因此,本工作对其进行介绍,供大家一起参考,该工作可以仔细品一下。
一、工作背景概述
先看对比效果,图1显示了在BELLE上预先训练的LLaMA和LawyerLLaMA的回答。
对于问题A,正确的答案是LawyerLLaMA提供的,即男性的法定结婚年龄是22岁,女性是20岁。显然,BELLE缺乏这种特定领域的知识,只能回答18岁,也就是具有完全民事行为能力的年龄。
BELLE的糟糕表现表明在一般领域预先训练的LLM不能直接应用于解决法律问题。
1.传达准确/精确的意思,没有歧义。在法律领域,仅仅替换一个词就可以影响法律关系和义务的建立,有可能导致巨大的不同后果。例如,定金和订金在中文中只有一个字的差别,但它们在合同法中的含义和法律效力却完全不同。
2.理解和区分法律术语。有许多概念只出现在法律领域,如法人(juridicalperson)。即使是广泛使用的词汇,其含义在法律领域也可能略有不同。例如,妻子这个词在日常生活中不一定意味着法律上承认和保护的婚姻关系,但在特定的法律领域,当提到妻子时,它肯定意味着合法的婚姻关系。
3.能够分析实际案例。现实世界的情景总是复杂多样的。模型需要具备识别法律术语和应用法律理论来分析具体问题的能力。
为了建立一个能够正确应用法律知识、解决法律领域实际问题的模型,该工作根据LLaMA模型,采取了以下四个步骤:
1、注入法律知识:收集大量的法律领域的原始文本,如法律条文、司法解释和中国人民法院的司法文件。然后,应用继续训练来帮助模型学习法律知识。
二、先看数据情况
1、预训练语料库
为了提高模型在中文法律咨询中的表现,该工作采用了两种语料对LLaMA模型进行持续预训练。
首先在一个普通的多语言语料库上训练模型,以提高其代表中文的能力。然后,使用一个中文法律语料库,用法律知识来增强模型。其中:
1)多语言通用语料库MultilingualGeneralCorpus
由于LLaMA主要是在英语和其他使用拉丁字母或西里尔字母的语言语料库上进行预训练的,因此它在理解和生成中文句子方面的表现可能并不完美。
为了解决这个问题,同时收集中文预训练语料和也收集英文语料库进行记忆重放,以避免灾难性的遗忘。
2)中文法律语料库ChineseLegalCorpus
2、国家司法考试
国家司法考试是一种闭卷考试,申请人必须通过考试才能获得律师或法官资格,是对对法律从业人员的法律知识和专业技能的全面评估,因此,模型可以通过对这类考试的问题进行练习来学习法律技能。
具体的,该工作使用JEC-QA,JEC-QA包括26,365道选择题和多选题,但不包含任何对答题者的解释。
为了提供更详细的证据和如何解决这些问题的推理程序,该工作要求ChatGPT为每个答案提供解释。
Response:根据《中华人民共和国刑法》规定,醉酒后驾驶机动车辆,发生重大交通事故,构成交通肇事罪。丁酒后驾驶发生交通事故,已经构成交通肇事罪。但是,丁继续驾车到处冲撞,造成五死九伤,已经超出了交通肇事罪的范畴,应当认定为危害公共安全罪。因此,丁应当被定罪为危害公共安全罪,而不是交通肇事罪。
3、法律咨询技能微调数据
该工作从法律咨询的开源数据集中抽取种子问题(Chen,2018),并使用ChatGPT来生成回复,由此构造SFT数据集。
1)单轮问答数据的构造
为了生成对法律咨询问题的回应,要求ChatGPT扮演律师并回应客户。并在输入提示中,注入生成的回答应该满足的六个要求:
(1)正确引用法律条文;
(2)根据案件事实和法律条文给出有根据的分析;
(3)全面回答并分析潜在的可能性;
(4)提出适当的问题来挖掘事实以帮助进一步回答;
(5)使用平实的语言;
(6)给出初步法律意见和咨询结论。
举例如下:ChatGPT对一个关于法定结婚年龄的问题产生了一个回答,引用了《中华人民共和国婚姻法》中的一篇法律条文,并指出了几种特殊情况。Question:我和我对象想结婚,我想问一下,结婚的法定婚龄是几岁啊
Response:根据《中华人民共和国婚姻法》规定,男女结婚的法定婚龄为男满22周岁,女满20周岁。未达到法定婚龄的人不得结婚。但有特殊情况的可以提前结婚,需要得到父母或者监护人的书面同意,并经当地婚姻登记机关审查批准。
2)多轮对话数据的构造
为了生成法律咨询问题的多轮对话,该工作设计了两个不同的提示,要求ChatGPT分别扮演客户和律师的角色,并交替使用这两个提示,连同对话历史,作为ChatGPT的输入。
如下所示,客户在律师的第一次回答后提出了一个关于婚姻程序的后续问题。Client:我和我对象想结婚,我想问一下,结婚的法定婚龄是几岁啊
Lawyer:根据中华人民共和国婚姻法,男女都要满22周岁才可以结婚,不足22周岁的男女不得自行结婚。但是,如果特殊情况需要提前结婚,可以向婚姻登记机关提出申请审核。如果您有其他方面的疑问,也可以告诉我,我可以帮助您进行解答。如果您有其他方面的疑问,也可以告诉我,我可以帮助您进行解答。
Client:我知道,听别人说婚姻需要提前办理一些手续,那我需要准备哪些证件和资料呢是否需要提前办理健康检查和体检
Lawyer:是的,婚姻登记需要您准备一些证件和资料,包括:...
3)加入外部知识进行检索增强
Client:我和我对象想结婚,我想问一下,结婚的法定婚龄是几岁啊
Laywer:根据《民法典》第一千零四十七条规定,结婚的法定婚龄为男不得早于22周岁,女不得早于20周岁。如果未到法定结婚年龄而坚持结婚,将被认定为无效婚姻。请问您和您的对象的年龄是否已达到法定婚龄如果未达到,建议您等待至法定婚龄再考虑结婚的问题。
Client:我们都满足法定结婚年龄了,但是我们的家长反对,他们说我们还太年轻,不应该急于结婚,你怎么看
最后,总共收集了大约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、学习推理技能S7
解决实际问题需要模型具有法律领域的推理能力,通过案例分析等下游任务教模型使用这些知识来解决实际问题,从下游任务中选择有监督的数据,并按照指令-调整的方法训练我们的模型。
在这一步,使用从JEC-QA中收集关于区分术语和案例分析的问题-答案对,并要求ChatGPT为它们提供详细的解释。在训练过程中,QA对被视为指令,我们的模型被要求给出解释。
4、学习真实回复技能S9
收集一组真实世界用户与律师协商的数据,并通过ChatGPT获得相应的回复。然后,使用收集到的监督数据来训练模型为特定查询生成合适的回复。
5、提高模型反应的可靠性S12
如图3-S12所示,为了进一步提高模型反应的可靠性,引入了一个法律条文检索模块,使模型能够产生可信回复。
这里有个比较有趣的结论:
四、再看实验效果及结论
改工作评估lawyer-LLaMA在不同的训练阶段的zeroshot表现,收集了不同领域的英文和中文通用任务,包括自然语言推理、情感分析、常识推理、对话问题回答等。
1、对一般任务的评估
先看在不同的语料库或不同的监督-微调数据集上持续训练LLaMA时,它解决一般NLP任务的能力如何变化。
例如,我们可以研究在不断对中文语料进行预训练之后,英语推理任务的模型性能是否会恶化。
首先,比较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、对中国法律任务的评估
具体的,创建了基于中国司法考试(JE)客观题的多项选择任务。对于司法考试的每一个问题,都有四个由人写的选项,其中一至四个选项可以是正确答案。
进一步的,这些问题可以分为两部分: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数据上进行训练时,它似乎无法解决司法考试,这可能是由于考试问题和咨询问题之间的不相似性,这似乎表明了下游任务数据和原数据需要尽可能保持一致,才能有实际效果。
总结
本文主要介绍了《LawyerLLaMATechnicalReport》这一工作,其最核心的结论在于,通过加入检索模块,可以提升问答的可靠性,并且通过引入垂直领域的预巡数据和微调数据,都可以提升其领域性能。但在具体实践中,还需要考虑到领域数据和通用数据的组成情况,以及与下游任务之间的对齐情况。