来自:老刘说NLP
进NLP群—>加入NLP交流群
本文继续介绍金融领域大模型FinBERT、金融领域大模型BloombergGPT以及法律领域微调模型LawGPT_zh三个垂域模型。
一、金融领域大模型FinBERT
熵简FinBERT在网络结构上采用与 Google 发布的原生BERT 相同的架构,包含了 FinBERT-Base 和 FinBERT-Large 两个版本,其中前者采用了 12 层 Transformer 结构,后者采用了 24 层 Transformer 结构。
FinBERT 采用了两大类预训练任务,分别是字词级别的预训练和任务级别的预训练。
其中,在任务级别的预训练上,
为了让模型更好地学习到语义层的金融领域知识,更全面地学习到金融领域词句的特征分布,我们同时引入了两类有监督学习任务,分别是研报行业分类和财经新闻的金融实体识别任务,具体如下:
1)研报行业分类
对于公司点评、行业点评类的研报,天然具有很好的行业属性,因此我们利用这类研报自动生成了大量带有行业标签的语料。并据此构建了行业分类的文档级有监督任务,各行业类别语料在 5k~20k 之间,共计约40万条文档级语料。
2)财经新闻的金融实体识别
与研报行业分类任务类似,我们利用已有的企业工商信息库以及公开可查的上市公司董监高信息,基于金融财经新闻构建了命名实体识别类的任务语料,共包含有 50 万条的有监督语料。
整体而言,为使 FinBERT 1.0 模型可以更充分学习到金融领域内的语义知识,我们在原生 BERT 模型预训练基础上做了如下改进:
其一,训练时间更长,训练过程更充分。为了取得更好的模型学习效果,我们延长模型第二阶段预训练时间至与第一阶段的tokens总量一致;
其二,融合金融领域内知识。引入词组和语义级别任务,并提取领域内的专有名词或词组,采用全词 Mask的掩盖方式以及两类有监督任务进行预训练;
其三,为了更充分的利用预训练语料,采用类似Roberta模型的动态掩盖mask机制,将dupe-factor参数设置为10。
地址:https://github.com/valuesimplex/FinBERT
1、训练数据
FinBERT 1.0 所采用的预训练语料主要包含三大类金融领域的语料,分别如下:
金融财经类新闻:从公开渠道采集的最近十年的金融财经类新闻资讯,约 100 万篇;
研报/上市公司公告:从公开渠道收集的各类研报和公司公告,来自 500 多家境内外研究机构,涉及 9000 家上市公司,包含 150 多种不同类型的研报,共约 200 万篇;
金融类百科词条:从 Wiki 等渠道收集的金融类中文百科词条,约 100 万条。
对于上述三类语料,在金融业务专家的指导下,对于各类语料的重要部分进行筛选、预处理之后得到最终用于模型训练的语料,共包含 30亿 Tokens,这一数量超过了原生中文BERT的训练规模。
2、模型效果
以金融场景中所遇到四类实际业务问题和数据入手进行对比实验,包括金融类短讯类型分类任务、金融文本行业分类、金融情绪分析任务以及金融类实体识别任务。对比 FinBERT 和 Google 原生中文BERT、 BERT-wwm、RoBERTa-wwm-ext 这三种通用领域的预训练模型
可知,FinBERT 效果提升显著,在 F1-score 上平均可以提升 2~5.7 个百分点。
其中:
1)金融短讯类型分类效果:其核心任务是对金融类短文本按照文本内容进行类型分类,从原始的 15个类别中抽离出难度最大的 6个类别进行实验。
2)金融短讯行业分类:以中信一级行业分类作为分类基准,包括餐饮旅游、商贸零售、纺织服装、农林牧渔、建筑、石油石化、通信、计算机等 29 个行业类别。
3)金融情绪分类:核心任务是针对金融事件或标的的评述性文本按照文本内容进行金融情感分类,共有4个类别,对应不同的情绪极性和强度。
4)金融领域的命名实体识别:核心任务是对金融类文本中出现的实体(公司或人名)进行实体识别和提取
二、金融领域大模型BloombergGPT
一个500亿参数的语言模型,采用GPT架构,在广泛的金融数据上进行训练。根据彭博社广泛的数据来源构建了一个3630亿个token的数据集,这也许是迄今为止最大的特定领域的数据集,并从通用数据集中增加了3450亿token。
在模型训练上,基于BLOOM模型的自回归结构,具体包含了70层transformer decoder,并在前馈层(FFN)中的非线性函数采用GELU。位置编码采用ALiBi编码,最后模型在第一层多了一个layer normalization。该工作认为,BloombergGPT之所以好,得益于精心清洗的内部数据集、tokenizer的选择以及流行的模型结构三个因素。
论文地址:https://arxiv.org/abs/2303.17564
文章《https://zhuanlan.zhihu.com/p/619444812》对该工作做了仔细分析,下面对其文章进行介绍。
1、训练数据
训练数据包括金融领域数据集以及通用数据集两个组成部分
1)金融领域数据集
金融领域数据集共包含了3630亿个token,占总数据集token量的54.2%,具体由以下几个部分构成:
金融领域相关网页,2980亿token,占比42.01%;
金融领域知名新闻源,380亿token,占比5.31%;
公司财报,140亿token,占比2.04%;
金融相关公司的出版物,90亿token,占比1.21%;
bloomberg,50亿token,占比0.7%;
因为包含一部分收费和私有数据,所以这份数据集不会被公开,但是文章中公开了模型训练方法。
2)通用数据集
通用数据集共包含了3450亿个token,占总数据集token量的48.73%,具体分为如下几个部分:
The Pile数据集,1840亿token,占比25.9%;
C4数据集,1380亿token,占比19.48%;
Wikipedia数据集,240亿token,占比3.35%;
数据集使用Unigram tokenizer对原始文本进行tokenize,不过该工作在pretokenization这一步,将数字视为单个token,并且允许词组的存在,以提高信息密度减少句子长度,使用分治的思想优化Unigram tokenizer在大数据集上的实现,并对最终词表大小控制在13万这个数量级上。
2、模型效果
文章中对BloombergGPT的评估分成金融领域任务与通用任务两个部分,旨在验证在特定领域预训练后的模型能够在特定领域表现好,同时在通用领域的表现也不会差太多这一观点。
如上图所示:
BloombergGPT在金融语料上的bits per byte均好于其他模型,并且在财报(Filings)这个类别上表现尤其突出。其中,bits per byte指标是评估语言模型的一种常见指标,类似于perplexity,取值越小,模型越好。
此外,在垂直任务:
ConvFinQA,标普500收益报告问答推理;FiQA SA,金融新闻和微博客标题基于方面的情感三分类(正负中);FPB,金融新闻句子级别情感三分类(正负中);Headline,新闻标题在预定义标签下的二分类以及NER,信用风险评估数据的命名实体识别上,也表现出了较好的性能。
其中,BloombergGPT在上述5个任务中的4个都取得了最好效果,在另外一个取得了第二名;并且在模型两两结果对比的胜率最高,同时在ConvFinQA这个任务上遥遥领先。
三、法律领域微调模型LawGPT_zh
中文法律大模型(獬豸),中文法律对话语言模型。该项目开源的中文法律通用模型由ChatGLM-6B LoRA 16-bit指令微调得到。数据集包括现有的法律问答数据集和基于法条和真实案例指导的self-Instruct构建的高质量法律文本问答。
1、训练数据
训练数据主要分为两个部分:1.律师和用户之间的情景对话 2.对特定法律知识的问答
其中,律师和用户之间的情景对话来自于刘焕勇的开源项目:https://github.com/liuhuanyong/CrimeKgAssitant
question:朋友欠钱不还咋办
answers: ['欠款金额是多少 ', '多少钱呢', '律师费诉讼费都非常少都很合理,一定要起诉。', '大概金额多少?', '需要看标的额和案情复杂程度,建议细致面谈']
*******************************************************
question:昨天把人家车刮了,要赔多少
answers: ['您好,建议协商处理,如果对方告了你们,就只能积极应诉了。', '您好,建议尽量协商处理,协商不成可起诉']
*******************************************************
question:最近丈夫经常家暴,我受不了了
answers: ['报警要求追究刑事责任。', '您好,建议起诉离婚并请求补偿。', '你好!可以起诉离婚,并主张精神损害赔偿。']
*******************************************************
question:毕业生拿了户口就跑路可以吗
answers: 您好,对于此类问题,您可以咨询公安部门
*******************************************************
question:孩子离家出走,怎么找回来
answers: ['孩子父母没有结婚,孩子母亲把孩子带走了?这样的话可以起诉要求抚养权的。毕竟母亲也是孩子的合法监护人,报警警察一般不受理。']
知识问答数据集包括针对Self-Instruct的可靠性和安全性漏洞,使用了基于特定知识的Reliable-Self-Instruction:通过提供具体的法律知识文本,先让ChatGPT生成与该段法律知识内容与逻辑关系相关的若干问题,再通过“文本段-问题”对的方式让ChatGPT回答问题,从而使ChatGPT能够生成含有法律信息的回答,保证回答的准确性。
2、模型效果
{"问题": "遭遇强制拆迁 如何用法律保护自己?","ChatGLM": "遇到强制拆迁,可以通过以下方式来保护权益:\n\n1.了解法律法规:在面临强制拆迁时,应该尽快阅读相关法规和政策文件,了解自己的权利和义务。同时,要了解当地的实际情况,以便制定合理的应对措施。\n\n2.保留证据:在遇到强制拆迁之前,可以尽可能地收集相关的证据,例如现场照片、录音、录像等,以备日后维权使用。如果可能的话,最好与相关部门保持沟通,及时了解进展情况。\n\n3.寻求法律援助:如果遇到强制拆迁,可以考虑聘请律师代表自己,向法院提起诉讼,维护自己的权益。律师可以根据案件的具体情况提供合法的建议和代理服务。\n\n4.协商解决:如果发现强制拆迁存在违法行为,可以尝试通过协商解决问题。可以向当地政府或相关部门提出异议,要求其停止违法行动,并协助自己寻找更好的解决方案。\n\n5.关注媒体报道:媒体的报道可能会引起公众的关注和重视,如果遇到强拆事件被公开报道,可以联系媒体并积极参与炒作,以提高知名度和影响力,从而获得更多的利益。\n\n遇到强制拆迁时,需要冷静应对,尽可能收集证据,及时咨询法律专业人士的意见,并与当地的政府部门保持良好的沟通。","LawGPT_zh": "在遭遇强制拆迁时,可以通过以下方式来保护权益:\n1.了解法律法规。了解自己所在地的《土地管理法》、《城市房屋管理规定》等相关法律法规可以帮助自己更好地理解当地的政策;\n2.找到合法维权途径。如果认为当地有关部门的行为违法,可以向上级政府部门或法院提起诉讼或者申请仲裁以维护合法权益;3.寻求法律援助。如果自己的合法权益受到了侵犯,可以聘请律师帮助自己处理此事,通过律协、法律服务所、法律援助中心等部门寻求帮助;4.保持冷静。尽管被强制拆迁会给人很大的压力和不安,但是一定要保持冷静不要冲动,避免产生不必要的矛盾和冲突,以免事情变得更加复杂。"},{"问题": "债务纠纷中物保与人保的责任顺序?","ChatGLM": "在涉及的债务纠纷中,物保和人保通常会在保护财产和维护公共安全方面承担不同的角色和责任。\n\n如果因债务问题导致物品或财物受损,通常情况下物的保险会赔偿损失。这是因为根据保险合同,保险公司在出险时有权向被保险人支付相应的保险金来补偿其遭受的损失。因此,当物品受损时,物的保险将会为被保险人提供经济支持。\n\n另一方面,如果是由于犯罪行为或其他违法行为导致的人身伤害或财产损失,则人保可能会承担责任。这是因为人保通常会与雇主、企业和其他机构合作,为客户提供必要的安全保障措施,包括员工福利保障和交通事故责任强制保险等。在这种情况下,人保将负责为受害者提供必要的保护和救助,并承担相应的法律责任。\n\n在一般情况下,物保和人保的主要职责是确保财产和人身安全得到保护。如果遇到复杂的债务纠纷和财产保赔问题,建议咨询专业人士的意见,以确定具体的保险方案和承担责任的顺序。","LawGPT_zh": "在财产保险和人身保险领域中,责任顺序通常按照以下几种方式确定:\n\n1. 如果因一方的行为导致另一方的财产或人身受到损害的,由受损方向有责任方索赔;如果受益方可要求第三方赔偿损失或者需要对损害进行修复、修理等后续服务时,该方向保险公司提出索赔。\n2. 如果因共同行为导致的损害,如共有关系中的侵权行为造成财产损失或人身伤害,则由所有共有人一起向侵权人索赔,并向对应的财产/身体受伤者提供意外伤害险保障;如果受害人不能独立获得赔偿,则可以考虑通过团体意外保险或其他形式的组合保险来得到补偿。\n3. 如果在发生灾害事故等情况下造成的损害,例如火灾、地震、洪水等等,一般是由当地的政府部门作为主体进行调查并作出结论,然后向相应的责任人追偿;如果当地没有这样的机构,那么可以直接向保险公司申请理赔。"},
项目地址:github.com/LiuHC0428/LAW-GPT
总结
本文主要介绍了金融领域大模型FinBERT、金融领域大模型BloombergGPT以及法律领域微调模型LawGPT_zh三个垂域模型。
大模型动向每日速递
最后,对今日更新的几个大模型动向进行汇总,供大家参考:
1、Lorax: JAX实现的LoRA,用于用于实现大型语言模型的参数高效微调: github.com/davisyoshida/lorax
2、huggingface-vscode:在VSCode中测试开源代码补全模型的项目,使用Hugging Face推理API进行推理,安装方式类似于其他VSCode扩展: github.com/huggingface/huggingface-vscode
3、Panda: 海外中文开源大语言模型,基于 Llama-7B, -13B, -33B, -65B 进行中文领域上的持续预训练,使用了接近15M条数据,并针对推理能力在中文benchmark上进行了评测:github.com/dandelionsllm/pandallm
4、LLM Zoo:收集了各种开源和闭源语言模型的信息,包括发行时间、模型大小、支持的语言、领域、训练数据以及相关资源链接。旨在为自然语言处理(NLP)领域的研究人员提供参考,以帮助其选择适合其需求的模型: github.com/DAMO-NLP-SG/LLM-Zoo
5、Chrome-GPT: 一个强大的AutoGPT智能体程序,利用Langchain和Selenium实现对整个Chrome会话的控制。AutoGPT代理可以交互式地滚动、点击和输入文本,以浏览和操作Web内容。支持Google搜索、长期和短期记忆管理、Chrome动作(描述网页、滚动到元素、单击按钮/链接、输入表单、切换选项卡)等多种特性,并支持多种智能体类型,如Zero-shot、BabyAGI和Auto-GPT: github.com/richardyc/Chrome-GPT
参考文献
1、https://arxiv.org/abs/2303.17564
2、https://zhuanlan.zhihu.com/p/619444812
3、https://github.com/valuesimplex/FinBERT
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
进NLP群—>加入NLP交流群
NLP、CV、推荐等方向需要有偿解决问题的快到这边来~