文档智能理解:通用文档预训练模型与数据集

机器学习AI算法工程 2020-11-25 20:21











向AI转型的程序员都关注了这个号👇👇👇

机器学习AI算法工程   公众号:datayx


预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战?


预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮。这和小孩子读书一样,一开始语文、数学、化学都学,读书、网上游戏等,在脑子里积攒了很多。当他学习计算机时,实际上把他以前学到的所有知识都带进去了。如果他以前没上过中学,没上过小学,突然学计算机就不懂这里有什么道理。这和我们预训练模型一样,预训练模型就意味着把人类的语言知识,先学了一个东西,然后再代入到某个具体任务,就顺手了,就是这么一个简单的道理


为什么要做预训练模型

自然语言处理(NLP),目的是使得计算机具备人类的听、说、读、写、译、问、答、搜索、摘要、对话和聊天等能力,并可利用知识和常识进行推理和决策,并支持客服、诊断、法律、教学等场景。自然语言理解,被认为是 AI 皇冠上的明珠。一旦有突破,则会大幅度推动 AI 在很多重要场景落地。

过去这五年,对自然语言是一个难忘的五年,它的一个标志就是神经网络全面引入到了自然语言理解。从大规模的语言数据到强有力的算力,加上深度学习,把整个自然语言带到一个新的阶段。


预训练模型,则是使自然语言处理由原来的手工调参、依靠 ML 专家的阶段,进入到可以大规模、可复制的大工业施展的阶段。而且预训练模型从单语言、扩展到多语言、多模态任务。一路锐气正盛,所向披靡。


预训练通过自监督学习从大规模数据中获得与具体任务无关的预训练模型。体现某一个词在一个特定上下文中的语义表征。第二个步骤是微调,针对具体的任务修正网络。训练数据可以是文本、文本-图像对、文本-视频对。预训练模型的训练方法可使用自监督学习技术(如自回归的语言模型和自编码技术)。可训练单语言、多语言和多模态的模型。此类模型可经过微调之后,用于支持分类、序列标记、结构预测和序列生成等各项技术,并构建文摘、机器翻译、图片检索、视频注释等应用。


为什么我们要做预训练模型?首先,预训练模型是一种迁移学习的应用,利用几乎无限的文本,学习输入句子的每一个成员的上下文相关的表示,它隐式地学习到了通用的语法语义知识。第二,它可以将从开放领域学到的知识迁移到下游任务,以改善低资源任务,对低资源语言处理也非常有利。第三,预训练模型在几乎所有 NLP 任务中都取得了目前最佳的成果。最后,这个预训练模型+微调机制具备很好的可扩展性,在支持一个新任务时,只需要利用该任务的标注数据进行微调即可,一般工程师就可以实现。


预训练模型的三个关键技术




首先,第一个关键技术是 Transformer。它在 NLP 各个任务中都取得了优异的性能,它是预训练语言模型的核心网络。给定一句话或是一个段落作为输入,首先将输入序列中各个词转换为其对应的词向量,同时加上每一个词的位置向量,体现词在序列的位置。然后将这些词向量输入到多层 Transformer 网络中,通过自注意力(self-attention)机制来学习词与词之间的关系,编码其上下文信息,再通过一个前馈网络经过非线性变化,输出综合了上下文特征的各个词的向量表示。每一层 Transformer 网络主要由 Multi-head self-attention 层(多头自注意力机制)和前馈网络层两个子层构成。Multi-head self-attention 会并行地执行多个不同参数的 self-attention,并将各个 self-attention 的结果拼接作为后续网络的输入,self-attention 机制会在后面中做详细介绍。此后,我们得到了蕴含当前上下文信息的各个词的表示,然后网络会将其输入到前馈网络层以计算非线性层次的特征。


在每一层 Transformer 网络中,会将残差连接(residual connection)把自注意力机制前或者前馈神经网络之前的向量引入进来,以增强自注意力机制或者前馈网络的输出结果向量。并且还做一个 layer normalization,也就是通过归一化把同层的各个节点的多维向量映射到一个区间里面,这样各层节点的向量在一个区间里面。这两个操作加入在每个子层后,可更加平滑地训练深层次网络。


Transformer 可以用于编码,也可以用于解码。所谓解码就是根据一个句子的输入得到一个预想的结果,比如机器翻译(输入源语言句子,输出目标语言句子),或者阅读理解(输入文档和问题,输出答案)。解码时,已经解码出来的词要做一个自注意力机制,之后和编码得到的隐状态的序列再做一个注意力机制。这样可以做 N 层,然后通过一个线性层映射到词表的大小的一个向量。每个向量代表一个词表词的输出可能性,经过一个softmax 层得到每个词的输出概率。


接下来介绍一下 self-attention 机制,以一个 head 作为示例。假定当前输入包含三个词,给定其输入词向量或是其上一层 Transformer 网络的输出,将其通过三组线性变换,转换得到三组 queries、keys 和 values 向量。Query 和 key 向量用来计算两两词之间的得分,也就是其依赖关系,这个得分会同其对应的 value 向量做加权和,以得到每个词综合上下文信息的表示。给定当前第一个词的 query 向量,其首先同各个词的 key 向量通过点积操作得到这两个词的得分,这些得分用来表示这两个词的依赖或是相关程度。这些得分之后会根据 query 等向量的维度做一定比例的缩放,并将这些得分通过 softmax 操作做归一化。之后,各个得分会同其相对应的 value 向量相乘得到针对第一个词加权的各个 value 向量,这些加权的 value 向量最终相加以得到当前第一个词的上下文表示。


在得到第一个词的上下文表示后,给定第二个词的 query 向量,我们会重复之前的操作,计算当前 query 向量同各个词 key 向量的得分,对这些得分做 softmax 归一化处理,并将这些得分同其对应的 value 向量做加权和,以得到其编码上下文信息的表示。


第二个关键技术是自监督学习。在预训练的模型中,AR(自回归)LM 和 AE(自动编码器)是最常用的自监督学习方法,其中,自回归 LM 旨在利用前面的词序列预测下个词的出现概率(语言模型)。自动编码器旨在对损坏的输入句子,比如遮掩了句子某个词、或者打乱了词序等,重建原始数据。通过这些自监督学习手段来学习单词的上下文相关表示。


第三个关键技术就是微调。在做具体任务时,微调旨在利用其标注样本对预训练网络的参数进行调整。以我们使用基于 BERT(一种流行的预训练模型)为例来判断两个句子是否语义相同。输入是两个句子,经过 BERT 得到每个句子的对应编码表示,我们可以简单地用预训练模型的第一个隐节点预测分类标记判断两个句子是同义句子的概率,同时需要额外加一个线性层和 softmax 计算得到分类标签的分布。预测损失可以反传给 BERT 再对网络进行微调。当然也可以针对具体任务设计一个新网络,把预训练的结果作为其输入。


总体来讲,预训练模型发展趋势:第一,模型越来越大。比如 Transformer 的层数变化,从12层的 Base 模型到24层的 Large 模型。导致模型的参数越来越大,比如 GPT 110 M,到 GPT-2 是1.5 Billion,图灵是 17 Billion,而 GPT-3 达到了惊人的 175 Billion。一般而言模型大了,其能力也会越来越强,但是训练代价确实非常大。第二,预训练方法也在不断增加,从自回归 LM,到自动编码的各种方法,以及各种多任务训练等。第三,还有从语言、多语言到多模态不断演进。最后就是模型压缩,使之能在实际应用中经济的使用,比如在手机端。这就涉及到知识蒸馏和 teacher-student models,把大模型作为 teacher,让一个小模型作为 student 来学习,接近大模型的能力,但是模型的参数减少很多。


预训练模型发展趋势

第一,模型越来越大。比如 Transformer 的层数变化,从12层的 Base 模型到24层的 Large 模型。导致模型的参数越来越大,比如 GPT 110 M,到 GPT-2 是1.5 Billion,图灵是 17 Billion,而 GPT-3 达到了惊人的 175 Billion。一般而言模型大了,其能力也会越来越强,但是训练代价确实非常大。

第二,预训练方法也在不断增加,从自回归 LM,到自动编码的各种方法,以及各种多任务训练等。

第三,还有从语言、多语言到多模态不断演进。最后就是模型压缩,使之能在实际应用中经济的使用,比如在手机端。这就涉及到知识蒸馏和 teacher-student models,把大模型作为 teacher,让一个小模型作为 student 来学习,接近大模型的能力,但是模型的参数减少很多。


随着许多行业的数字化转型,电子商业文档的结构化分析和内容提取成为一项热门的研究课题。电子商业文档通常包括两大类:一类是纸质文档的扫描图像件,另一类是计算机生成的数字文档,这些文档涵盖采购单据、行业报告、商务邮件、销售合同、雇佣协议、商业发票、个人简历等。


一般来说,电子商业文档包含了公司对于内部和外部事物的处理细节,具有大量与行业相关的实体信息和数字信息。在过去,电子商业文档的信息处理一般由人工来完成,然而,人工信息提取不仅耗时费力,可复用性也不高,大大限制和阻碍了企业运行效率。因此,电子文档的自动精准快速处理对于企业生产力提升至关重要,这也促使了一些新兴行业的出现,帮助传统行业进行数字化转型,提高生产力。


近年来,机器人流程自动化(Robotic Process Automation, RPA)应运而生,正是利用人工智能技术帮助大量人力从繁杂的电子文档处理任务中解脱出来,提供了一系列配套的自动化工具提升企业生产力。其中,最为关键的核心技术就是自动文档分析与识别技术。


传统的文档分析和识别技术往往基于人工定制的规则或少量标注数据进行学习,这些方法虽然能够带来一定程度的性能提升,但由于定制规则和可学习的样本数量不足,其通用性往往不尽如人意,针对不同类别文档的分析迁移成本较高。


随着深度学习预训练技术的发展,以及大量无标注电子文档的积累,文档分析与识别技术进入了一个全新的时代。大量的研究成果表明,大规模预训练语言模型能够通过自监督任务在预训练阶段有效捕捉文本中蕴含的语义信息,经过下游任务微调后能有效地提升模型效果。然而,现有的预训练语言模型主要针对文本单一模态进行,而忽视了文档本身与文本天然对齐的视觉结构信息。

为了解决这一问题,我们提出了一种通用文档预训练模型 LayoutLM,对文档结构信息(Document Layout Information)和视觉信息(Visual Information)进行建模,让模型在预训练阶段进行多模态对齐。我们在三个不同类型的下游任务中进行验证:表单理解(Form Understanding),票据理解(Receipt Understanding),以及文档图像分类(Document Image Classification)。


文档智能相关的基准数据集



大量的研究成果表明,大规模预训练语言模型通过自监督任务,可在预训练阶段有效捕捉文本中蕴含的语义信息,经过下游任务微调后能有效的提升模型效果。然而,现有的预训练语言模型主要针对文本单一模态进行,忽视了文档本身与文本天然对齐的视觉结构信息。为了解决这一问题,研究员们提出了一种通用文档预训练模型LayoutLM[1][2],选择了文档结构信息(Document Layout Information)和视觉信息(Visual Information)进行建模,让模型在预训练阶段进行多模态对齐。


在实际使用的过程中,LayoutLM 仅需要极少的标注数据即可达到行业领先的水平。研究员们在三个不同类型的下游任务中进行了验证:表单理解(Form Understanding)、票据理解(Receipt Understanding),以及文档图像分类(Document Image Classification)。实验结果表明,在预训练中引入的结构和视觉信息,能够有效地迁移到下游任务中,最终在三个下游任务中都取得了显著的准确率提升。


文档结构和视觉信息不可忽视


很多情况下,文档中文字的位置关系蕴含着丰富的语义信息。以下图的表单为例,表单通常是以键值对(key-value pair)的形式展示的(例如 “DATE: 11/28/84”)。一般情况下,键值对的排布是以左右或者上下的形式,并且有特殊的类型关系。类似地,在表格文档中,表格中的文字通常是网格状排列,并且表头一般出现在第一列或第一行。通过预训练,这些与文本天然对齐的位置信息可以为下游的信息抽取任务提供更丰富的语义信息。


表单示例


对于富文本文档,除了文字本身的位置关系之外,文字格式所呈现的视觉信息同样可以帮助下游任务。对文本级(token-level)任务来说,文字大小、是否倾斜、是否加粗,以及字体等富文本格式都能够体现相应的语义。例如,表单键值对的键位(key)通常会以加粗的形式给出;而在一般文档中,文章的标题通常会放大加粗呈现,特殊概念名词会以斜体呈现,等等。对文档级(document-level)任务来说,整体的文档图像能提供全局的结构信息。例如个人简历的整体文档结构与科学文献的文档结构是有明显的视觉差异的。这些模态对齐的富文本格式所展现的视觉特征,可以通过视觉模型抽取,再结合到预训练阶段,从而有效地帮助下游任务。


将视觉信息与文档结构融入到通用预训练方案


建模上述信息需要寻找这些信息的有效表示方式。然而现实中的文档格式丰富多样,除了格式明确的电子文档外,还有大量扫描式报表和票据等图片式文档。对于计算机生成的电子文档,可以使用对应的工具获取文本和对应的位置以及格式信息;对于扫描图片文档,则可以使用 OCR 技术进行处理,从而获得相应的信息。两种不同的手段几乎可以使用现存的所有文档数据进行预训练,保证了预训练数据的规模。


基于文档结构和视觉信息的 LayoutLM 模型结构


利用上述信息,微软亚洲研究院的研究员们在现有的预训练模型基础上添加了二维位置嵌入(2-D Position Embedding)和图嵌入(Image Embedding)两种新的 Embedding 层,可以有效地结合文档结构和视觉信息:


1) 二维位置嵌入 2-D Position Embedding:根据 OCR 获得的文本边界框 (Bounding Box),能获取文本在文档中的具体位置。在将对应坐标转化为虚拟坐标之后,则可以计算该坐标对应在 x、y、w、h 四个 Embedding 子层的表示,最终的 2-D Position Embedding 为四个子层的 Embedding 之和。


2) 图嵌入 Image Embedding:将每个文本相应的边界框 (Bounding Box) 当作 Faster R-CNN 中的候选框(Proposal),从而提取对应的局部特征。其特别之处在于,由于 [CLS] 符号用于表示整个输入文本的语义,所以同样使用整张文档图像作为该位置的 Image Embedding,从而保持模态对齐。


在预训练阶段,研究员们针对 LayoutLM 的特点提出了两个自监督预训练任务:


1) 掩码视觉语言模型(Masked Visual-Language Model,MVLM):大量实验已经证明 MLM 能够在预训练阶段有效地进行自监督学习。研究员们在此基础上进行了修改:在遮盖当前词之后,保留对应的 2-D Position Embedding 暗示,让模型预测对应的词。在这种方法下,模型根据已有的上下文和对应的视觉暗示预测被掩码的词,从而让模型更好地学习文本位置和文本语义的模态对齐关系。


2) 多标签文档分类(Multi-label Document Classification,MDC):MLM 能够有效的表示词级别的信息,但是对于文档级的表示,还需要将文档级的预训练任务引入更高层的语义信息。在预训练阶段研究员们使用的 IIT-CDIP 数据集为每个文档提供了多标签的文档类型标注,并引入 MDC 多标签文档分类任务。该任务使得模型可以利用这些监督信号,聚合相应的文档类别并捕捉文档类型信息,从而获得更有效的高层语义表示。


实验结果:LayoutLM 的表单、票据理解和文档图像分类水平显著提升


预训练过程使用了 IIT-CDIP 数据集,这是一个大规模的扫描图像公开数据集,经过处理后的文档数量达到约11,000,000。研究员们随机采样了1,000,000个进行测试实验,最终使用全量数据进行完全预训练。通过千万文档量级的预训练并在下游任务微调,LayoutLM 在测试的三个不同类型的下游任务中都取得了 SOTA 的成绩,具体如下:


1) 表单理解(Form Understanding):表单理解任务上,使用了 FUNSD 作为测试数据集,该数据集中的199个标注文档包含了31,485个词和9,707个语义实体。在该数据集上,需要对数据集中的表单进行键值对(key-value)抽取。通过引入位置信息的训练,LayoutLM 模型在该任务上取得了显著的提升,将表单理解的 F1 值从70.72 提高至79.2。


2) 票据理解(Receipt Understanding):票据理解任务中,选择了 SROIE 测评比赛作为测试。SROIE 票据理解包含1000张已标注的票据,每张票据都标注了店铺名、店铺地址、总价、消费时间四个语义实体。通过在该数据集上微调,LayoutLM 模型在 SROIE 测评中的 F1 值高出第一名(2019)1.2个百分点,达到95.24%。


3) 文档图像分类(Document Image Classification):对于文档图像分类任务,则选择了 RVL-CDIP 数据集进行测试。RVL-CDIP 数据集包含有16类总记40万个文档,每一类都包含25,000个文档数据。LayoutLM 模型在该数据集上微调之后,将分类准确率提高了1.35个百分点,达到了94.42%。


微软亚洲研究院的研究员们构建了 DocBank 数据集[3][4],这是一个文档基准数据集,其中包含了50万文档页面以及用于文档布局分析的细粒度 Token 级标注。与常规的人工标注数据集不同,微软亚洲研究院的方法以简单有效的方式利用弱监督的方法获得了高质量标注。DocBank 数据集是文档布局标注数据集 TableBank[5][6] 的扩展,基于互联网上大量的数字化文档进行开发而来。例如当下很多研究论文的 PDF 文件,都是由 LaTeX 工具编译而成。LaTeX 系统的命令中包含了标记作为构造块的显式语义结构信息,例如摘要、作者、标题、公式、图形、页脚、列表、段落、参考、节标题、表格和文章标题。为了区分不同的语义结构,研究员们修改了 LaTeX 源代码,为不同语义结构的文本指定不同的颜色,从而能清楚地划分不同的文本区域,并标识为对应的语义结构。


从自然语言处理的角度来看,DocBank 数据集的优势是可用于任何序列标注模型,同时还可以轻松转换为基于图像的标注,以支持计算机视觉中的物体检测模型。通过这种方式,可以使用 DocBank 公平地比较来自不同模态的模型,并且进一步研究多模态方法,提高文档布局分析的准确性。


为了验证 DocBank 的有效性,研究员们使用了 BERT、RoBERTa 和 LayoutLM 三个基线模型进行实验。实验结果表明,对于文档布局分析任务,LayoutLM 模型明显优于 DocBank 上的 BERT 和 RoBERTa 模型。微软亚洲研究院希望 DocBank 可以驱动更多文档布局分析模型,同时促进更多的自定义网络结构在这个领域取得实质性进展。


DocBank 数据集的数据样例


实验结果


LayoutLM、BERT、RoBERTa 模型在 DocBank 测试集的准确性


在 DocBank 的测试集上评估了六个模型后,研究员们发现 LayoutLM 在摘要、作者、表格标题、方程式、图形、页脚、列表、段落、节标题、表格、文章标题标签上得分最高。在其他标签上 LayoutLM 与其他模型的差距也较小。这表明在文档布局分析任务中,LayoutLM 结构明显优于 BERT 和 RoBERTa 结构




 


 


 


 

原始文档页面

预训练BERT结果

真实结果

预训练LayoutLM结果

测试集上预训练 BERT 模型和预训练 LayoutLM 模型的样例输出


研究员们又选取了测试集的一些样本,将预训练 BERT 和预训练 LayoutLM 的输出进行了可视化。可以观察到,序列标记方法在 DocBank 数据集上表现良好,它可以识别不同的语义单元。对于预训练的 BERT 模型,某些 Token 没有被正确标记,这表明仅使用文本信息仍不足以完成文档布局分析任务,还应考虑视觉信息。


与预训练的 BERT 模型相比,预训练的 LayoutLM 模型集成了文本和布局信息,因此它在基准数据集上实现了更好的性能。这是因为二维的位置嵌入可以在统一的框架中对语义结构的空间距离和边界进行建模,从而提高了检测精度。



附录


[1]LayoutLM 论文:https://arxiv.org/abs/1912.13318

[2]LayoutLM 代码&模型:https://aka.ms/layoutlm

[3] DocBank 论文:https://arxiv.org/abs/2006.01038

[4] DocBank 数据集&模型:https://github.com/doc-analysis/DocBank

[5] TableBank 论文:https://arxiv.org/abs/1903.01949

[6] TableBank 数据集&模型:https://github.com/doc-analysis/TableBank

[7] “Injecting Artificial Intelligence into Financial Analysis”:https://medium.com/reimagine-banking/injecting-artificial-intelligence-into-financial-analysis-54718fbd5949

[8] “Document Visual Question Answering”:https://medium.com/@anishagunjal7/document-visual-question-answering-e6090f3bddee





阅读过本文的人还看了以下文章:


TensorFlow 2.0深度学习案例实战


基于40万表格数据集TableBank,用MaskRCNN做表格检测


《基于深度学习的自然语言处理》中/英PDF


Deep Learning 中文版初版-周志华团队


【全套视频课】最全的目标检测算法系列讲解,通俗易懂!


《美团机器学习实践》_美团算法团队.pdf


《深度学习入门:基于Python的理论与实现》高清中文PDF+源码


特征提取与图像处理(第二版).pdf


python就业班学习视频,从入门到实战项目


2019最新《PyTorch自然语言处理》英、中文版PDF+源码


《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码


《深度学习之pytorch》pdf+附书源码


PyTorch深度学习快速实战入门《pytorch-handbook》


【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》


《Python数据分析与挖掘实战》PDF+完整源码


汽车行业完整知识图谱项目实战视频(全23课)


李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材


笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!


《神经网络与深度学习》最新2018版中英PDF+源码


将机器学习模型部署为REST API


FashionAI服装属性标签图像识别Top1-5方案分享


重要开源!CNN-RNN-CTC 实现手写汉字识别


yolo3 检测出图像中的不规则汉字


同样是机器学习算法工程师,你的面试为什么过不了?


前海征信大数据算法:风险概率预测


【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类


VGG16迁移学习,实现医学图像识别分类工程项目


特征工程(一)


特征工程(二) :文本数据的展开、过滤和分块


特征工程(三):特征缩放,从词袋到 TF-IDF


特征工程(四): 类别特征


特征工程(五): PCA 降维


特征工程(六): 非线性特征提取和模型堆叠


特征工程(七):图像特征提取和深度学习


如何利用全新的决策树集成级联结构gcForest做特征工程并打分?


Machine Learning Yearning 中文翻译稿


蚂蚁金服2018秋招-算法工程师(共四面)通过


全球AI挑战-场景分类的比赛源码(多模型融合)


斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


python+flask搭建CNN在线识别手写中文网站


中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程



不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  



机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码