bert 中文 代码 谷歌_ACL 2020 | 用BERT解决表格问答任务,谷歌提出弱监督表格解析器TaPas...

BERT 在自然语言上已经取得了非凡的成就。近日,谷歌一篇 ACL 2020 论文又将 BERT 模型应用到了基于表格的问答场景中,为弱监督式的表格解析性能带来了显著提升。此外,谷歌开源了相关代码和预训练模型。

选自Google AI Blog,作者:Thomas Müller,机器之心编译,参与:Panda。

bert 中文 代码 谷歌_ACL 2020 | 用BERT解决表格问答任务,谷歌提出弱监督表格解析器TaPas..._第1张图片
  • 论文地址:https://arxiv.org/pdf/2004.02349.pdf
  • 代码和模型:https://github.com/google-research/tapas

世上许多信息都是以表格形式存储的,这些表格见诸于网络、数据库或文件中。它们包括消费产品的技术规格、金融和国家发展统计数据、体育赛事结果等等。目前,要想找到问题的答案,人们仍需以人工方式查找这些表格,或使用能提供特定问题(比如关于体育赛事结果的问题)的答案的服务。如果可通过自然语言来查询这些信息,那么取用这些信息会容易很多。

举个例子,下图展示了一个表格,并给出了一些人们想问的问题。这些问题的答案可在该表格的一个或多个单元格中找到(哪位摔跤运动员夺冠次数最多?),或需要聚合多个单元格的信息才能得到(仅夺冠一次的世界冠军有多少人?)。

bert 中文 代码 谷歌_ACL 2020 | 用BERT解决表格问答任务,谷歌提出弱监督表格解析器TaPas..._第2张图片

表格,以及问题和预期答案。有的答案通过选择即可得到(如问题 1 和问题 4),有的答案则需要计算(问题 2 和问题 3)。

针对这一问题,近来的很多方法采用了传统的语义解析方案,即将自然语言问题转译成一个类 SQL 的数据库查询,其在数据库上执行后可提供答案。例如,「仅夺冠一次的世界冠军有多少人?」这个问题会被映射到这样一个查询:select count(*) where column("No. of reigns") == 1,执行该查询后即可得到答案。为了得到句法和语义上有效的查询,这种方法所需的工程量大,而且仅适用于与特定表格(如体育赛事结果)有关的问题,难以扩展应用于任意问题。

谷歌在一篇 ACL 2020 论文中提出了一种不同的方法。这篇论文题为《TaPas:通过预训练实现弱监督式表格解析(TaPas: Weakly Supervised Table Parsing via Pre-training)》,提出了一种扩展型的 BERT 架构。该架构可对问题与表格数据结构进行联合编码,最终得到的模型可直接指向问题答案。并且,这种新方法所创建的模型适用于多个领域的表格。

要想得到优良的模型,优质的数据自然是不可或缺的。谷歌首先使用了数百万个维基百科表格对模型进行预训练,然后又在三个学术级表格问答数据集上进行实验,结果表明新方法的准确度表现极具竞争力。不仅如此,谷歌开源了模型训练和测试代码,还公开分享了他们在维基百科数据上得到的预训练模型。

如何处理问题?

对于「两位顶级摔跤运动员的冠军赛平均时间是多少?」这样的问题,谷歌新方法的编码方式是一种基于扩展型 BERT 模型的联合编码方法。这种扩展型 BERT 模型使用特定的嵌入来编码表格结构,并且能在逐行编码表格内容的同时联合编码问题。

对于基于 transformer 的 BERT 模型,谷歌提出的核心扩展思路是新增了用于编码结构化输入的额外嵌入。这依赖于为列索引、行索引和一个特别的排序索引(表示数值列中元素的顺序)所学习的嵌入。下图展示了这些嵌入聚合成输入的方式以及馈送入 transformer 网络层的方式。

下图展示了编码问题的方式,并在左边给出了一张小表格。每个单元格 token 都有一个指示其行、列和在列中的数值排序的特殊嵌入。

bert 中文 代码 谷歌_ACL 2020 | 用BERT解决表格问答任务,谷歌提出弱监督表格解析器TaPas..._第3张图片

BERT 层输入:每个输入 token 都被表示成其词、绝对位置、句段(无论是属于问题还是表)、列和行以及数值排序的嵌入之和。

该模型有两个输出:1)一个分数,用于表示每个表格单元格的内容属于答案一部分的概率;2)一个聚合操作,用于表示是否应用操作以及应用哪些操作来将各个单元格的内容聚合成最终答案。下图展示了对于问题「两位顶级摔跤运动员的冠军赛平均时间是多少?」,该模型有较高的概率选择 Combined days 列的前两个单元格以及使用 AVERAGE 操作。

bert 中文 代码 谷歌_ACL 2020 | 用BERT解决表格问答任务,谷歌提出弱监督表格解析器TaPas..._第4张图片

模型示意图:BERT 层同时编码问题和表格。该模型会输出每个聚合操作的概率以及每个表格单元格的选择概率。对于问题「两位顶级摔跤运动员的冠军赛平均时间是多少?」,该模型以较高的概率选择了 AVERAGE 操作以及数值为 3749 和 3103 的两个单元格。

预训练

谷歌采用的预训练过程类似于 BERT 在文本上的训练方法,其训练数据是从英语维基百科提取的 620 万组表格 - 文本数据对。在预训练过程中,模型的学习目标是恢复表格和文本中被掩码替换的词。通过实验发现,该模型在这项任务上的准确度相对较高——对于训练过程中未曾见过的表格,该模型能够正确恢复 71.4% 的被掩盖 token。

仅从答案学习

在微调过程中,模型的目标是学习如何基于表格回答问题。这可以通过强监督方法实现,也可使用弱监督方法。如果使用强监督方法,则对于给定表格和问题,必须先提供所要选择的单元格和聚合操作(比如求和或计数),但这个过程非常耗时耗力。因此更常见的情况是使用弱监督方法进行训练,此时仅需提供正确答案即可(比如对于以上示例,正确答案是 3426)。

在弱监督情况下,模型需要自己尝试寻找能得到接近正确答案的聚合操作和单元格。这个过程需要在所有可能的聚合决策上计算期望,并将其与真实结果进行比较。弱监督方法更加有利,因为它让非专家也能提供训练模型所需的数据,而且消耗的时间也比强监督方法少。

结果

谷歌在 SQA、WikiTableQuestions (WTQ) 和 WikiSQL 这三个数据集上进行了实验验证,并对比了在解析表格数据任务中表现最佳的三种其它方法。其中,在 WikiSQL 上对比的模型为 Min et al (2019),在 WTQ 上对比的模型为 Wang et al. (2019),在 SQA 上对比的模型为 Mueller et al., (2019)(这是谷歌这个团队自己之前的一项研究)。

对于所有数据集,报告的结果都是弱监督训练设置下在测试集上的答案准确度。对于 SQA 和 WikiSQL,谷歌使用了基于维基百科数据得到的预训练模型作为基础模型;而对于 WTQ,他们发现在 SQA 数据上再进行预训练会更有利。谷歌新方法的表现优于之前最佳水平——在 SQA 上超过之前最佳方法 12 个百分点,在 WTQ 上超过之前最佳方法 4 个百分点,在 WikiSQL 上与之前最佳方法表现相近。

bert 中文 代码 谷歌_ACL 2020 | 用BERT解决表格问答任务,谷歌提出弱监督表格解析器TaPas..._第5张图片

弱监督设置下,模型在三个学术级表格问答数据集上的测试答案准确度。

原文链接:https://ai.googleblog.com/2020/04/using-neural-networks-to-find-answers.html

你可能感兴趣的:(bert,中文,代码,谷歌)