2

训练中文垂类大模型:Lawyer LLaMA

 1 year ago
source link: https://finisky.github.io/lawyer-llama-summary/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

训练中文垂类大模型:Lawyer LLaMA

2023-06-192023-06-20Machine Learning

开源的通用能力大模型越来越多,但真正有用和落地的是在某个领域专精的垂类模型。初看上去,似乎大模型仅需要少量prompt工作就可以很好地在垂类工作,可事实并非如此。不进行领域微调的通用模型可以很快地构建80分的应用,可是大部分的实用场景,需要95甚至98分的模型效果。这也是为什么在各个领域(如金融、车载、虚拟人)大家都在训练或微调自己大模型的原因。

微调这件事看上去不难,但却有很多未解问题:

  • 如何基于英文大模型继续训练一个中文大模型?
  • 垂类数据应该在预训练阶段引入,还是指令微调时引入?
  • 通用指令数据与垂类任务数据的混合比例有什么讲究?

上面的每个问题都有很多种不同的方案,但限于时间和成本,逐一实验是不可行的,AB测试也会带来额外的成本。所以有趣的事情出现了,各个玩家对自己训练时的细节都讳莫如深,自己训练的时候也都遇到过各种各样奇怪的坑。更有意思的是,即使别人提供了一些细节参考,自己在训练时未必能够复现 :-( 。

代码库:# Lawyer LLaMA

Lawyer LLaMA技术报告:# Lawyer LLaMA Technical Report

先来看个Demo:

lawyerllamademo.png

BELLE是基于LLaMA使用通用中文语料训练的模型,从上面的对比可见通用中文模型缺少法律领域的知识,即使给定了参考法条,它也不能很好地利用它生成比较好的回复。

Training Process

上图说明了Lawyer LLaMA的训练过程,主要关注主线s0->s1->s4->s7->s9->s12:

  • s0->s1: 用多语言通用语料使模型可以理解中文
  • s1->s4: 用中文法律语料给模型补充法律知识
  • s4->s7: 用通用SFT训练数据使模型可以完成指令
  • s7->s9: 用法考数据与法律咨询数据继续训练,使模型提升推理能力
  • s9->s12: 增加检索模块,增强模型使用外部知识的回复能力

增强中文能力

s0->s1阶段,由于LLaMA是个英文模型,首先需要提升它的中文理解能力。

此阶段的问题之一,是否要扩展词表?LLaMA原始词表中只有700个中文字符,但作者之前的研究显示扩展词表在下游中文任务上的表现不好,因此本文保持了原始词表。

另一个问题在于,继续预训练是仅使用中文,还是中英语料混合训练?考虑到英文预训练能带来部分推理能力,最终选择多语言通用语料混合训练(均经过采样):

  • 中文:WuDaoCorpora, CLUECorpus2020, 中文Wikipedia
  • 英文:C4

注入法律领域知识

s1->s4继续预训练阶段,作者收集了一些法律领域的中文文本,包括法律文章和司法解释。同时也加入了一些通用文本避免模型在法律文本上过拟合。

学习推理能力

s4->s7,进入SFT阶段,作者使用国家法考数据JEC-QA,同时利用ChatGPT进一步构造数据,让它给出更详细的解释。JEC-QA包括26365个单选和多选问题,但不包括对这些答案的解释。因此,在训练阶段,论文以QA对为指令,让ChatGPT对它进行解释。此外,还收集了真实用户咨询律师的一些问题,并使用ChatGPT构造回复。然后用构造的数据训练模型,增加其在法律领域的推理能力。

用ChatGPT构造回复时,在prompt中有六个要求:

  • 恰当引用法条
  • 基于事实和法条给出可靠的分析
  • 给出详尽的分析,并给出潜在的可能性
  • 适当反问挖掘事实,帮助给出更好回答
  • 使用直白和普通的语言描述
  • 给出初步的法律观点和咨询结论

下面是ChatGPT生成的答案解析范例:

Human:

根据《物权法》,下列关于物权变动的特别规定,表述正确吗?
因继承或者受遗赠取得物权的,自继承或者受遗赠开始时发生效力
请给出详细的推理过程之后再给出答案。

Assistant:

这个表述是正确的。
根据《物权法》第X条规定:“因继承或者受遗赠取得物权的,自继承或者受遗赠开始时发生效力。”这意味着,当一个人通过继承或受遗赠获得物权时,这个物权的效力是从继承或受遗赠开始时就生效的,而不是从物权转移的时间开始生效。这是因为,继承或受遗赠是一种法定的方式来获得物权,因此,物权的效力应该从这个法定的时间点开始生效。

检索相关法条

论文发现即使在预训练阶段反复学习这些文章,模型在生成回复时依然不能很好地利用这些法条(幻想问题):模型很可能参考了一个无关文章或字面相近的法律条文。所以此处训练了一个检索模块,用类似knowlege grounded conversation的方式进行知识增强。

lawyerllamaretrieval.png

检索模块的数据构造使用法律咨询的真实问题,并对每个问题让法律从业人员标注了3篇相关法条。检索模块基于RoBERTa,可达0.85Recall@1和0.94Recall@5。

训练生成模型时发现它倾向于将所有检索出的内容都加入回复,即使它们不相关。因此作者在训练时加入了无关文章,让模型可以更好区分无用信息。此外,对于prompt模板也进行了修改,使用检索模块的数据范例:

Related Legal Articles:

《民法典》第一千零八十七条:离婚时,夫妻的共同财产由双方协议处理;协议不成的,由人民法院根据财产的具体情况,按照照顾子女、女方和无过错方权益的原则判决。对夫或者妻在家庭土地承包经营中享有的权益等,应当依法予以保护。
《民法典》第一千零六十三条:下列财产为夫妻一方的个人财产:(一)一方的婚前财产;(二)一方因受到人身损害获得的赔偿或者补偿;(三)遗嘱或者赠与合同中确定只归一方的财产;(四)一方专用的生活用品;(五)其他应当归一方的财产。
《民法典》第一千零六十二条:夫妻在婚姻关系存续期间所得的下列财产,为夫妻的共同财产,归夫妻共同所有:(一)工资、奖金、劳务报酬;(二)生产、经营、投资的收益;(三)知识产权的收益;(四)继承或者受赠的财产,但是本法第一千零六十三条第三项规定的除外;(五)其他应当归共同所有的财产。夫妻对共同财产,有平等的处理权。

Human:

你好,离婚后夫妻的财产是怎么分配的

Assistant:

您好,根据《民法典》的相关规定,离婚后夫妻的财产分配可以通过夫妻双方协商处理,如果没有协商一致,则需要由法院根据财产的具体情况,按照照顾子女、女方和无过错方权益的原则进行判决。对于夫妻在婚姻关系存续期间所得的共同财产,包括工资、奖金、劳务报酬、生产、经营、投资的收益、知识产权的收益、继承或者受赠的财产以及其他应当归共同所有的财产,应当平分。而夫妻在婚姻关系存续期间所获得的个人财产,包括婚前财产、因受到人身损害获得的赔偿或者补偿、遗嘱或者赠与合同中确定只归一方的财产、一方专用的生活用品,应当归该方所有。请问你们在婚姻关系存续期间所得的财产情况如何呢?
lawyerllamaresult.png

实验结果基于LLaMA-7B,一些主要结果:

  • s0->s1: C3中文QA数据集提升 5.3%,显示用多语言通用语料训练后,模型中文理解能力提升,英文理解能力无损失。但在CAM和CAP任务上指标显著下降,作者猜想是由于新加的中文数据集多是新闻和wiki,与原始LLaMA的预训练数据分布差异较大所致。
  • s0->s4: CAM数据集提升21.6%,显示用中文法律数据继续预训练后,模型学习到了婚姻法相关知识。
  • s0->s4->s7: 法考JE-C和JE-S上分别有3.9%和2.85%的提升,显示用中文法律数据和通用指令训练后,模型可以更好地处理法律相关的任务。但如果使用对话指令微调数据训练后(s8,s10,s11),在法考指标上有所下降。猜想是法考问题和实际法务咨询问题相差较大所致。
  • s12在大部分任务上都超过了s0,也是多轮法律咨询中表现最好的模型

从实验结果来看,很多地方还是靠经验和猜测得出结论,有没有效果还是得看炼丹的感觉。目前能找到的论文或报告,对数据和任务混合的一些细节还是涉及得较少。但个人认为这也不是壁垒,模型效果的可解释和可复现,才是真正值得深入挖掘的地方,是大模型持续发展的基石。

Lawyer LLaMA训练中文垂类模型的思路很符合直觉,在预训练和SFT阶段都加入了垂类数据,最后还使用检索模块增加回复的可靠性。从结果来看,验证了上述方案微调垂类模型的可行性。

不过有一个问题,对垂类数据的构造是使用ChatGPT完成的,是不是说明ChatGPT已经很好地完成了通用+垂类任务?当然,ChatGPT的规模更大,Lawyer LLaMA相当于它在中文法律领域蒸馏的一个垂类模型。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK