FinBert模型:金融领域的预训练模型

文章目录

  • 模型及预训练方式
    • 模型结构
    • 训练语料
    • 预训练方式
  • 下游任务实验结果
    • 实验一:金融短讯类型分类
      • 实验任务
      • 数据集
      • 实验结果
    • 实验二:金融短讯行业分类
      • 实验任务
      • 数据集
      • 实验结果
    • 实验三:金融情绪分类
      • 实验任务
      • 数据集
      • 实验结果
    • 实验四:金融领域的命名实体识别
      • 实验任务
      • 数据集
      • 结果展示
    • 总结

FinBERT是熵简科技 AI Lab 开源的基于 BERT 架构的金融领域预训练语言模型,相比于Google发布的原生中文BERT、哈工大讯飞实验室开源的BERT-wwm 以及 RoBERTa-wwm-ext该模型在多个金融领域的下游任务中获得了显著的性能提升,在不加任何额外调整的情况下,F1-score 直接提升至少 2~5.7 个百分点。

论文地址:FinBERT: A Pre-trained Financial Language Representation Model for Financial Text Mining
github地址:https://github.com/valuesimplex/FinBERT
FinBERT-Base模型下载地址:FinBERT_L-12_H-768_A-12_pytorch.zip

论文的主要贡献:

一,FinBERT (BERT for Financial Text Mining)是第一个通过在金融语料上使用多任务学习得到的特定领域的BERT,其可以把金融领域语料上的知识传递到下游金融文本相关的应用任务上;

二,FinBERT和标准BERT采用不同的训练目标函数。本文设计或采用了6中自监督预训练任务,可以通过多任务自监督学习方法来训练,从而更有效地捕捉大规模预训练语料中的语言知识和语义信息;

三,在几个金融领域的基准集上执行了若干实验。实验结果展示,FinBERT可以显著超越sota的效果:金融句子边界检测;金融情感分析;以及金融问答;

四,使用Horovod框架实现了FinBERT,以及使用了混合精度。(目前还没有)公开代码或者预训练的模型。FinBERT可以被用于其他很多下游的金融文本挖掘任务,提升整体性能。

FinBERT的优势
在这里插入图片描述

模型及预训练方式

模型结构

熵简 FinBERT 在网络结构上采用与 Google 发布的原生BERT 相同的架构,包含了 FinBERT-Base 和 FinBERT-Large 两个版本,其中前者采用了 12 层 Transformer 结构,后者采用了 24 层 Transformer 结构。考虑到在实际使用中的便利性和普遍性,本次发布的模型是 FinBERT-Base 版本。
在这里插入图片描述

训练语料

FinBERT 1.0 所采用的预训练语料主要包含三大类金融领域的语料,分别如下:

  • 金融财经类新闻: 从公开渠道采集的最近十年的金融财经类新闻资讯,约 100 万篇;
  • 研报/上市公司公告: 从公开渠道收集的各类研报和公司公告,来自 500 多家境内外研究机构,涉及 9000 家上市公司,包含 150 多种不同类型的研报,共约 200 万篇;
  • 金融类百科词条: 从 Wiki 等渠道收集的金融类中文百科词条,约 100 万条。

对于上述三类语料,在金融业务专家的指导下,我们对于各类语料的重要部分进行筛选、预处理之后得到最终用于模型训练的语料,共包含 30亿 Tokens,这一数量超过了原生中文BERT的训练规模。
在这里插入图片描述

预训练方式

在这里插入图片描述
如上图所示,FinBERT 采用了两大类预训练任务,分别是字词级别的预训练和任务级别的预训练。两类预训练任务的细节详述如下:

(1)字词级别的预训练

字词级别的预训练首先包含两类子任务,分别是 Finnacial Whole Word MASK(FWWM)、Next Sentence Prediction(NSP)。同时,在训练中,为了节省资源,我们采用了与 Google 类似的两阶段预训练方式,第一阶段预训练最大句子长度为128,第二阶段预训练最大句子长度为 512。两类任务具体形式如下:

Finnacial Whole Word MASK(FWWM)

Whole Word Masking (wwm),一般翻译为全词 Mask 或整词 Mask,出是 Google 在2019年5月发布的一项升级版的BERT中,主要更改了原预训练阶段的训练样本生成策略。简单来说,原有基于WordPiece的分词方式会把一个完整的词切分成若干个子词,在生成训练样本时,这些被分开的子词会随机被mask。 在全词Mask中,如果一个完整的词的部分WordPiece子词被 Mask,则同属该词的其他部分也会被 Mask,即全词Mask。
谷歌原生的中文 BERT :输入是以字为粒度进行切分,没有考虑到领域内共现单词或词组之间的关系,从而无法学习到领域内隐含的先验知识,降低了模型的学习效果。

例如单词:“投资”,字由“投”“资”构成,按照全词Mask的方式,不会仅掩盖“投‘或”资“,会掩盖整个单词“投资”。考虑中文的字和词之间关系,相比于恢复单个字,恢复整个单词对模型更具有挑战性。

在谷歌原生的中文 BERT 中,输入是以字为粒度进行切分,没有考虑到领域内共现单词或词组之间的关系,从而无法学习到领域内隐含的先验知识,降低了模型的学习效果。我们将全词Mask的方法应用在金融领域语料预训练中,即对组成的同一个词的汉字全部进行Mask。首先我们从金融词典、金融类学术文章中,通过自动挖掘结合人工核验的方式,构建出金融领域内的词典,约有10万词。然后抽取预语料和金融词典中共现的单词或词组进行全词 Mask预训练,从而使模型学习到领域内的先验知识,如金融学概念、金融概念之间的相关性等,从而增强模型的学习效果。

Next Sentence Prediction(NSP)

为了训练一个理解句子间关系的模型,引入一个下一句预测任务。具体方式可参考BERT原始文献,Google的论文结果表明,这个简单的任务对问答和自然语言推理任务十分有益,我们在预训练过程中也发现去掉NSP任务之后对模型效果略有降低,因此我们保留了NSP的预训练任务,学习率采用Google 官方推荐的2e-5,warmup-steps为 10000 steps。

(2)任务级别的预训练

为了让模型更好地学习到语义层的金融领域知识,更全面地学习到金融领域词句的特征分布,我们同时引入了两类有监督学习任务,分别是研报行业分类和财经新闻的金融实体识别任务,具体如下:

研报行业分类

对于公司点评、行业点评类的研报,天然具有很好的行业属性,因此我们利用这类研报自动生成了大量带有行业标签的语料。并据此构建了行业分类的文档级有监督任务,各行业类别语料在 5k~20k 之间,共计约40万条文档级语料。

财经新闻的金融实体识别

与研报行业分类任务类似,我们利用已有的企业工商信息库以及公开可查的上市公司董监高信息,基于金融财经新闻构建了命名实体识别类的任务语料,共包含有 50 万条的有监督语料。

整体而言,为使 FinBERT 1.0 模型可以更充分学习到金融领域内的语义知识,我们在原生 BERT 模型预训练基础上做了如下改进:

  • 训练时间更长,训练过程更充分。 为了取得更好的模型学习效果,我们延长模型第二阶段预训练时间至与第一阶段的tokens总量一致;
  • 融合金融领域内知识。引入词组和语义级别任务,并提取领域内的专有名词或词组,采用全词 Mask的掩盖方式以及两类有监督任务进行预训练;
  • 为了更充分的利用预训练语料,采用类似Roberta模型的动态掩盖mask机制,将dupe-factor参数设置为10。
    dupe-factor参数:训练过程中会对文档多次重复随机产生训练集,这个参数是指重复的次数。

6种自监督预训练任务:

预训练任务名称Encoder输入预测输出类型
1. 范围替换一个句子,局部phrase/n-gram被遮掩预测被遮掩的n-gramword-aware/phrase-ware
2. 大写单词预测一个句子,全小写预测哪些词是大写的,二分类word-aware
3.单词-段落预测一个单词,一个段落片段/segment单词是否出现在该段落中,二分类word-aware
4. 句子位置复原若干乱序后的句子他们的原始的序号structure-aware
5. 句子距离两个句子三分类,00, 01, 11structure-aware
6. 对话关系多轮对话Query-Response,其中若干词被遮掩被遮掩的词的预测semantic-aware (QA)

1、span replace prediction pre-training task - 范围替换预测(预训练任务)

思想来自于spanBERT和T5,随机把输入的文本中的15%给扔掉,然后使用一个[mask]来替换掉一个连续的phrase。这点和原本的bert中,每个词都被替换成一个[mask]不同。

2、capitalization prediction pre-training task 大写单词预测(预训练任务)

一个单词是否是大小写,具有一定的意义,特别是大写word,或者连续多个大写的phrase,在句子中往往有重要的语义含义。

3、token-passage prediction pre-training task 单词-段落预测(预训练任务)

识别片段中出现的关键词是否也在原始段落的其他片段中。

4、sentence deshuffling pre-training task 句子位置复原(预训练任务)

这个来自ERNIE2和T5。

一个段落里面有n个片段segments,随机打乱其顺序,一共有n!种排列。任务就是从被打乱顺序的序列中,恢复原来的正确顺序的序列。

5、sentence distance pre-training task 句子距离(预训练任务)

两个句子的“距离”的多分类任务:

三类,00, 01, 11,其中00表示的是两个句子在同一个段落中而且相邻;01表示两个句子在一个段落中,但是不相邻;11表示他们不在一个段落中。

这个也和ERNIE2.0中的有一定的相近性。ERNIE2.0中,也有sentence distance task,而且也是3类的:0表示两个句子在文档中是相邻的;1表示他们在一个文档中,但是不相邻;2表示他们来自两个不同的文档。

6、dialogue relation pre-training task 对话关系(预训练任务)
对一些单轮或多轮对话数据 mask 掉输入的一些 token, 然后让模型去预测这些被 mask 掉的 token。

下游任务实验结果

为了对比基线效果,从熵简科技实际业务中抽象出了四类典型的金融领域典型数据集,包括句子级和篇章级任务。在此基础上,将 FinBERT 与 Google 原生中文 BERT、哈工大讯飞实验室开源的 BERT-wwm 和 RoBERTa-wwm-ext 这三类在中文领域应用广泛的模型进行了下游任务的对比测试。在实验中,为了保持测试的公平性,没有进一步优化最佳学习率,对于四个模型均直接使用了 BERT-wwm 的最佳学习率:2e-5。

所有实验结果均为五次实验测试结果的平均值,括号内为五次测试结果的最大值,评价指标为 F1-score。

实验一:金融短讯类型分类

实验任务

此任务来自于熵简科技信息流相关的产品,其核心任务是对金融类短文本按照文本内容进行类型分类,打上标签,从而方便用户更及时、更精准地触达感兴趣的内容。

我们对原任务进行了简化,从原始的 15个类别中抽离出难度最大的 6个类别进行实验。

数据集

该任务的数据集共包含 3000 条样本,其中训练集数据约 1100 条,测试集数据约 1900条,各类别分布情况如下:
在这里插入图片描述

实验结果

TASK\MODELBERTBERT-wwmRoBERTa-wwm-extFinBERT
金融短讯类型分类0.867(0.874)0.867(0.877)0.877(0.885)0.895(0.897)

实验二:金融短讯行业分类

实验任务

此任务核心任务是对金融类短文本按照文本内容进行行业分类,以中信一级行业分类作为分类基准,包括餐饮旅游、商贸零售、纺织服装、农林牧渔、建筑、石油石化、通信、计算机等 29 个行业类别,可以用在金融舆情监控、研报/公告智能搜索等多个下游应用中。

数据集

该任务的数据集共包含 1200 条样本,其中训练集数据约 400 条,测试集数据约 800条。训练集中的各类别数目在 5~15 条之间,属于典型的小样本任务。 各类别分布情况如下:
在这里插入图片描述

实验结果

TASK\MODELBERTBERT-wwmRoBERTa-wwm-extFinBERT
金融短讯行业分类0.939(0.942)0.932(0.942)0.938(0.942)0.951(0.952)

实验三:金融情绪分类

实验任务

此任务来自于熵简科技金融质控类相关产品,其核心任务是针对金融事件或标的的评述性文本按照文本内容进行金融情感分类,并用在后续的市场情绪观察和个股相关性分析中。

该任务共有 4个类别,对应不同的情绪极性和强度。

数据集

该任务的数据集共包含 2000 条样本,其中训练集数据约 1300 条,测试集数据约 700条,各类别分布情况如下:
在这里插入图片描述

实验结果

TASK\MODELBERTBERT-wwmRoBERTa-wwm-extFinBERT
金融情绪分类0.862(0.866)0.850(0.860)0.867(0.867)0.895(0.896)

实验四:金融领域的命名实体识别

实验任务

此任务来自于熵简科技知识图谱相关的产品,其核心任务是对金融类文本中出现的实体(公司或人名)进行实体识别和提取,主要用在知识图谱的实体提取和实体链接环节。

数据集

数据集共包含 24000 条样本,其中训练集数据共3000条,测试集数据共21000条。

结果展示

TASK\MODELBERTBERT-wwmRoBERTa-wwm-extFinBERT
公司名称实体识别0.8650.8790.8940.922
人物名称实体识别0.8870.8870.8910.917

总结

在本次基线测试中,我们以金融场景中所遇到四类实际业务问题和数据入手进行对比实验,包括金融类短讯类型分类任务、金融文本行业分类、金融情绪分析任务以及金融类实体识别任务。对比 FinBERT 和 Google 原生中文BERT、 BERT-wwm、RoBERTa-wwm-ext 这三种通用领域的预训练模型

可知,FinBERT 效果提升显著,在 F1-score 上平均可以提升 2~5.7 个百分点。

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

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

相关文章

瑞_数据结构与算法_二叉搜索树

文章目录 1 什么是二叉搜索树1.1 二叉搜索树的特征1.2 前驱后继 2 二叉搜索树的Java实现2.1 定义二叉搜索树节点类BSTNode泛型key改进 2.2 实现查找方法get(int key)递归实现非递归实现 ★非递归实现 泛型key版本 2.3 实现查找最小方法min()递归实现非递归实现 ★ 2.4 实现查找…

Django从入门到精通(三)

目录 七、ORM操作 7.1、表结构 常见字段 参数 示例 7.2、表关系 一对多 多对多 第一种方式 第二种方式 7.3、连接MYSQL 7.4、数据库连接池 7.5、多数据库 读写分离 分库(多个app ->多数据库) 分库(单app) 注意…

狗东云搭建幻兽帕鲁(奶妈级别)

使用狗东云搭建幻兽帕鲁 同配置狗东云比腾讯云便宜,2核2G服务器仅50元1年,4核8G服务器458元1年,点击链接直达. 进入页面会跳转到注册,先注册账户,注册好后页面跳转,没有跳转点这里,选择页面左侧…

[AIGC 大数据基础] 浅谈hdfs

HDFS介绍 什么是HDFS? HDFS(Hadoop Distributed File System)是Apache Hadoop生态系统的一部分,是一个分布式文件系统。它被设计用于存储和处理大规模数据集,并且能够容错、高可靠和高性能地处理文件。 HDFS是为了支…

2024转行程序员的请注意:均月薪在40-70k

前言 2023年,对大多数行业来说都是不太好过的一年。 对程序员来说也是如此,很多粉丝朋友都在说android工作特别难找,一个岗位都是几千份简历........大家心里都是特别的焦虑,本以为2024年就业情况会有好转,但实际上并…

PHP - Yii2 异步队列

1. 前言使用场景 在 PHP Yii2 中,队列是一种特殊的数据结构,用于处理和管理后台任务。队列允许我们将耗时的任务(如发送电子邮件、push通知等)放入队列中,然后在后台异步执行。这样可以避免在处理大量请求时阻塞主应用…

[GXYCTF2019]BabySQli1

单引号闭合,列数为三列,但是没有期待的1 2 3回显,而是显示wrong pass。 尝试报错注入时发现过滤了圆括号,网上搜索似乎也没找到能绕过使用圆括号的方法,那么按以往爆库爆表爆字段的方法似乎无法使用了 在响应报文找到一…

ORM-07-querydsl 入门介绍

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.(手写简易版 mybatis) 1. 介绍 1.1 背景 Querydsl的诞生源于以类型安全的方式维护HQL查询的需求。逐步构建HQL查询需要进行字符串连接,导致代码难以…

32个Java面试必考点-06常用工具集

本课时主要介绍常用的工具,将会讲解三个知识点: & JVM 相关工具的作用和适用场景; & Git 常用命令和工作流; & Linux 系统中常用分析工具。 常用工具汇总 常用工具汇总如下图所示。 说明:这里列出的都…

k8s的图形化工具--rancher

什么是rancher? rancher是一个开源的企业级多集群的k8s管理平台 rancher和k8s的区别 都是为了容器的调度和编排系统,但是rancher不仅能够调度,还能管理k8s集群,自带监控(普罗米修斯) 实验部署 实验架构…

电容主要特点和作用,不同类型的电容区别

电容 两个相互靠近的金属板中间夹一层绝缘介质组成的器件,当两端存在电势差时,由于介质阻碍了电荷移动而累积在金属板上,衡量金属板上储存电荷的能力称之为电容,相应的器件称为电容器。 电容(Capacitance&#xff09…

移动端 h5-table react版本支持虚拟列表

介绍 适用于 react ts 的 h5 移动端项目 table 组件 github 链接 :https://github.com/duKD/react-h5-table 有帮助的话 给个小星星 有两种表格组件 常规的: 支持 左侧固定 滑动 每行点击回调 支持 指定列排序 支持滚动加载更多 效果和之前写的vue…

【开源】基于JAVA的实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…

四、Kotlin 表达式

1. 常量 & 变量 1.1 可读写变量(var) var x initValue // x 称为可读写变量注意:当 var 声明的变量做成员属性时,默认提供 setter/getter 方法。 1.2 只读变量(val) val x initValue // x 称为只…

FPGA:我的零基础学习路线(2022秋招已上岸)持续更新中~

可内推简历,丝我即可 前言 初次接触FPGA是在2022年3月左右,正处在研二下学期,面临着暑假找工作,周围的同学大多选择了互联网,出于对互联网的裁员形势下,我选择了FPGA,对于硬件基础知识我几乎是…

Vue+OpenLayers7入门到实战:鹰眼控件简单介绍,并使用OpenLayers7在地图上添加鹰眼控件

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章介绍OpenLayers7添加鹰眼控件到地图上的功能。 在OpenLayers中,想要实现鹰眼控件,必须要新建一个数据源,且不能跟其他图层混用,相当于鹰眼是一个单独图层。 补充知识,鹰眼控件是什么? 鹰眼控件是一种在地…

大数据平台红蓝对抗 - 磨利刃,淬精兵!

背景 目前大促备战常见备战工作:专项压测(全链路压测、内部压测)、灾备演练、降级演练、限流、巡检(监控、应用健康度)、混沌演练(红蓝对抗),如下图所示。随着平台业务越来越复杂&a…

OpenCV功能特性和依赖关系

有许多可选的依赖项和功能可以打开或关闭。 CMake 具有特殊选项,允许打印所有可用的配置参数: cmake -LH ../opencv 选项命名约定 有三种选项用于控制库的依赖项,它们具有不同的前缀: 以启用或禁用依赖项开头的选项WITH_ 从启…

输入框限制输入两位小数 输入金额限制 双向绑定输入框能继续输入但是变量的数据不变解决方案 input 保留两位小数

移动端项目 需求是 输入框只能输入1000以内的数字保留两位小数 开发中发现 用vue开发双向绑定 不管是用value还是v-model 在输入时用input监听输入框变化 校验是否匹配 当不匹配是修改绑定的变量 inputValue时 打印inputValue符合预期 但是input输入框中还是原来输入的值 没有…

RocketMQ源码阅读-八-定时消息和消息重试

RocketMQ源码阅读-八-定时消息和消息重试 定时消息概念逻辑流程图延迟级别Producer发送定时消息Broker存储定时消息Broker发送定时消息Broker 持久化定时发送进度 消息重试总结 定时消息 概念 官网给出的概念:https://rocketmq.apache.org/zh/docs/featureBehavior…