开源开放 | 熵简科技 AI Lab 开源金融领域中文预训练语言模型 FinBERT

1 背景及下载地址

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

对于深度学习时代的自然语言处理技术,我们一般认为存在两大里程碑式的工作。第一个里程碑是在2013年逐渐兴起,以 Word2Vec 为代表的的词向量技术;第二个里程碑则是在 2018 年以 BERT 为代表的深度预训练语言模型(Pre-trained Language Models)。一方面,以 BERT 为代表的深度预训练模型在包括文本分类、命名实体识别、问答等几乎所有的子领域达到了新的 state of the art;另一方面,作为通用的预训练模型,BERT 的出现也显著地减轻了NLP算法工程师在具体应用中的繁重工作,由以往的魔改网络转变为 Fine tune BERT,即可快速获得性能优秀的基线模型。因此,深度预训练模型已成为各个 AI 团队必备的基础技术。

但是,当前开源的各类中文领域的深度预训练模型,多是面向通用领域的应用需求,在包括金融在内的多个垂直领域均没有看到相关开源模型。熵简科技希望通过本次开源,推动 NLP技术在金融领域的应用发展,欢迎学术界和工业界各位同仁下载使用,我们也将在时机合适的时候推出性能更好的 FinBERT 2.0 & 3.0。

项目地址:

https://github.com/valuesimplex/FinBERT


2 模型及预训练方式

2.1 网络结构

熵简 FinBERT 在网络结构上采用与 Google 发布的原生BERT 相同的架构,包含了 FinBERT-Base 和 FinBERT-Large 两个版本,其中前者采用了 12 层 Transformer 结构,后者采用了 24 层 Transformer 结构。考虑到在实际使用中的便利性和普遍性,本次发布的模型是 FinBERT-Base 版本,本文后面部分统一以 FinBERT 代指 FinBERT-Base。

2.2 训练语料

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

  • 金融财经类新闻:从公开渠道采集的最近十年的金融财经类新闻资讯,约 100 万篇;

  • 研报/上市公司公告:从公开渠道收集的各类研报和公司公告,来自 500 多家境内外研究机构,涉及 9000 家上市公司,包含 150 多种不同类型的研报,共约 200 万篇;

  • 金融类百科词条:从 Wiki 等渠道收集的金融类中文百科词条,约 100 万条。

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

2.3 预训练方式

FinBERT 预训练框架图

如上图所示,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的方法应用在金融领域语料预训练中,即对组成的同一个词的汉字全部进行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 模型预训练基础上做了如下改进:

1、训练时间更长,训练过程更充分。为了取得更好的模型学习效果,我们延长模型第二阶段预训练时间至与第一阶段的tokens总量一致;

2、融合金融领域内知识。引入词组和语义级别任务,并提取领域内的专有名词或词组,采用全词 Mask的掩盖方式以及两类有监督任务进行预训练;

3、为了更充分的利用预训练语料,采用类似Roberta模型的动态掩盖mask机制,将dupe-factor参数设置为10;

2.4 预训练加速

当前,对于所提供的一整套软硬件深度学习炼丹系统,英伟达提供了丰富的技术支持和框架优化,其中很重要的一点就是如何在训练中进行加速。在 FinBERT 的训练中,我们主要采用了 Tensorflow XLA 和 Automatic Mixed Precision 这两类技术进行预训练加速。

Tensorflow XLA 进行训练加速

XLA 全称为加速线性运算,如果在 Tensorflow 中开启了 XLA,那么编译器会对 Tensorflow 计算图在执行阶段进行优化,通过生成特定的 GPU 内核序列来节省计算过程对于硬件资源的消耗。一般而言,XLA 可以提供 40% 的加速。

Automatic Mixed Precision

一般深度学习模型训练过程采用单精度(Float 32)和双精度(Double)数据类型,导致预训练模型对于机器显存具有很高的要求。为了进一步减少显存开销、加快FinBERT预训练和推理速度, 我们实验采用当前最新的Tesla V100GPU进行混合精度训练。混合精度训练是指FP32和FP16混合的训练方式,使用混合精度训练可以加速训练过程同时减少显存开销,兼顾FP32的稳定性和FP16的速度。在保证模型准确率不下降的情况下,降低模型的显存占用约一半,提高模型的训练速度约 3 倍。


3 下游任务实验结果

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

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

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

(1)实验任务

此任务来自于熵简科技信息流相关的产品,其核心任务是对金融类短文本按照文本内容进行类型分类,打上标签,从而方便用户更及时、更精准地触达感兴趣的内容。我们对原任务进行了简化,从原始的 15 个类别中抽离出难度最大的 6 个类别进行实验。

(2)数据集

该任务的数据集共包含 3000 条样本,其中训练集数据约 1100 条,测试集数据约 1900条,各类别分布情况如下:

(3)实验结果

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

(1)实验任务

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

(2)数据集

该任务的数据集共包含 1200 条样本,其中训练集数据约 400 条,测试集数据约 800条。训练集中的各类别数目在 5~15 条之间,属于典型的小样本任务。

各类别分布情况如下:

(3)实验结果

 

3.3 实验三:金融情绪分类

(1)实验任务

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

(2)数据集

该任务的数据集共包含 2000 条样本,其中训练集数据约 1300 条,测试集数据约 700条,各类别分布情况如下:

(3)实验结果

 

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

(1)实验任务

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

(2)数据集

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

(3)结果展示

 

3.5 总结

在本次基线测试中,我们以金融场景中所遇到的四类实际业务问题和数据入手进行对比实验,包括金融类短讯类型分类任务、金融文本行业分类、金融情绪分析任务以及金融类实体识别任务。对比 FinBERT 和 Google 原生中文BERT、 BERT-wwm、RoBERTa-wwm-ext 这三种通用领域的预训练模型可知,FinBERT 效果提升显著,在 F1-score 上平均可以提升 2~5.7 个百分点。


4 结语

本文详细介绍了 FinBERT 的开源背景、训练细节和四类对比实验结果,欢迎其他从相关领域的团队提供更多、更丰富的对比实验和应用案例,让我们共同推进自然语言处理技术在金融领域的应用和发展。接下来,熵简 AI 团队会从预料规模、训练时间、预训练方式上进行更多的创新和探索,以期发展出更懂金融领域的预训练模型,并在合适时机发布 FinBERT 2.0、FinBERT 3.0,敬请期待。

任何问题,欢迎与团队负责人联系,邮箱:liyu@entropyreduce.com


参考文献

[1] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2018. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. (2018). https://doi.org/arXiv:1811.03600v2 arXiv:1810.04805

[2] Jinhyuk Lee, Wonjin Yoon, Sungdong Kim, Donghyeon Kim, Sunkyu Kim, Chan Ho So, and Jaewoo Kang. 2019. BioBERT: a pre-trained biomedical language representation model for biomedical text mining. Bioinformatics

[3] Kexin Huang, Jaan Altosaar, and Rajesh Ranganath. 2019. Clinicalbert: Modeling clinical notes and predicting hospital readmission. arXiv:1904.05342.

[4] Iz Beltagy, Kyle Lo, and Arman Cohan. 2019. Scibert: Pretrained language model for scientific text. In Proceedings ofEMNLP.

[5] Yiming Cui, Wanxiang Che, Ting Liu, Bing Qin, Ziqing Yang, Shijin Wang, and Guoping Hu. Pre-training with whole word masking for chinese bert. arXiv preprint arXiv:1906.08101, 2019.

[6] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. RoBERTa: A robustly optimized BERT pre-training approach. arXiv preprint arXiv:1907.11692, 2019.

[7] Micikevicius, Paulius, et al. “Mixed precision training.” arXiv preprint arXiv:1710.03740 (2017).

[8] https://github.com/ymcui/Chinese-BERT-wwm/

[9] https://github.com/huggingface/transformers

 

 


 

OpenKG

开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

点击阅读原文,进入 OpenKG 网站。

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

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

相关文章

前端如何做极致的首屏渲染速度优化

这里说的极致是技术上可以达到最优的性能。 这里不讨论常见的优化手段,比如:Script标签放到底部、DNS预解析、HTTP2.0、CDN、资源压缩、懒加载等。 这里讨论的是如何使First Contentful Paint的时间降到最低,这个指标决定了白屏的时间有多长…

LeetCode 209. 长度最小的子数组(滑动窗口)

1. 题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。 如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s 7, nums [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连…

京东 | NLP人才联合培养计划

01 京东AI项目实战课程安排覆盖了从经典的机器学习、文本处理技术、序列模型、深度学习、预训练模型、知识图谱、图神经网络所有必要的技术。项目一、京东健康智能分诊项目第一周:文本处理与特征工程| Bag of Words模型| 从tf-idf到Word2Vec| SkipGram与CBOW| Hiera…

论文小综 | Pre-training on Graphs

本文转载自公众号:浙大KG。作者:方尹、杨海宏,浙江大学在读博士,主要研究方向为图表示学习。在过去几年中,图表示学习和图神经网络(Graph Neural Network, GNN)已成为分析图结构数据的热门研究领域。图表示学习旨在将具…

初探下一代网络隔离与访问控制

概述 安全域隔离是企业安全里最常见而且最基础的话题之一,目前主要的实现方式是网络隔离(特别重要的也会在物理上实现隔离)。对于很小的公司而言,云上开个VPC就实现了办公网和生产网的基础隔离,但对于有自建的IDC、网络…

LeetCode 189. 旋转数组(环形替换)

1. 题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1:输入: [1,2,3,4,5,6,7] 和 k 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4]要求…

吴恩达:机器学习应以数据为中心

源 | 新智元今天是吴恩达45岁生日。他是国际最权威的ML学者之一,学生遍布世界各地。在最近的一期线上课程中,吴恩达提出了以模型为中心向以数据为中心的AI。吴恩达发推称,「大家为自己送上最好的礼物就是,观看这个视频观看并提出自…

如何开发小程序开发者工具?

最近集团内部在自研小程序,我负责小程序开发者工具的调试部分。经过一段时间的探索,摸索出不少经过实际检验的可行手段。接下来将会用几篇文章总结一下思路。 文章的内容主要会分为以下几部分: 如何建立逻辑层运行时容器(两种方…

美团点评基于Storm的实时数据处理实践

背景 目前美团点评已累计了丰富的线上交易与用户行为数据,为商家赋能需要我们有更强大的专业化数据加工能力,来帮助商家做出正确的决策从而提高用户体验。目前商家端产品在数据应用上主要基于离线数据加工,数据生产调度以“T1”为主&#xff…

会议交流 | 大规模知识图谱的构建及应用分享

本文转载自公众号:DataFunTalk。论坛出品:张伟 阿里巴巴 资深算法专家分享时间:12月19日,9:00-12:00导读:12月19日,9:00-12:00。在DataFunTalk年终大会上,由阿里巴巴资深…

机器翻译小记

神经网络翻译面临的挑战

赛尔原创 | N-LTP:基于预训练模型的中文自然语言处理平台

论文名称:N-LTP: A Open-source Neural Chinese Language Technology Platform with Pretrained Models论文作者:车万翔,冯云龙,覃立波,刘挺原创作者:冯云龙论文链接:https://arxiv.org/abs/200…

LeetCode 49. 字母异位词分组(哈希)

1. 题目 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [["ate",…

论文浅尝 - SWJ | 基于知识图谱和注意力图卷积神经网络的可解释零样本学习

论文题目:Explainable Zero-shot Learning via Attentive Graph Convolutional Network and Knowledge Graphs本文作者:耿玉霞,浙江大学在读博士,研究方向为知识图谱、零样本学习、可解释性发表期刊:Semantic Web Jour…

LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)

1. 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重…

安装kenlm出现问题的解决方案gcc g++

安装kenlm出现问题的解决方案 apt-get install gcc apt-get install g参考文章:gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory

论文浅尝 - TACL2020 | 改进低资源跨语言实体链接的候选生成问题

论文笔记整理:谭亦鸣,东南大学博士。来源:TACL 2020链接:https://arxiv.org/ftp/arxiv/papers/2003/2003.01343.pdf1.背景介绍跨语言实体链接(Cross-lingual Entity Linking, XEL)旨在利用源语言文本中实体描述(提及),…

卫星系统——酒店后端全链路日志收集工具介绍

背景 随着酒店业务的高速发展,我们为用户、商家提供的服务越来越精细,系统服务化程度、复杂度也逐渐上升。微服务化虽然能够很好地解决问题,但也有副作用,比如,问题定位。 每次问题定位都需要从源头开始找同事帮我人肉…

拖拽式Vue组件代码生成平台(LCG)新版详细介绍

拖拽式Vue组件代码生成平台是一款小猴自研的Vue代码生成工具,英文全称:Low Code Generator,简称LCG。它也是一种LowCode解决方案。通过它可以快速完成Vue组件的代码骨架搭建,通过减少不必要的重复工作从而带来开发效率的提升。 体…

ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

apt-get update apt-get install libglib2.0-dev系统:ubuntu16.04