数据库系统是数据分析的主力,但它们需要一个预定义的模式。鉴于文本、图像和其他模式中可用数据量的增加,来自 Facebook 等机构的研究者提出了一种神经数据库架构实例,该方法能够对非结构化数据进行查询,此外,该方法还可以扩展到大型数据库上。
在回答自然语言文本的查询方面,神经模型已经显示出了较大的性能提升。然而,现有的工作无法支持数据库查询,如 「计算所有出生于 20 世纪的女运动员」,这就需要用连接、过滤和聚合等运算对相关事实集进行推理。
数据库是每一台计算机程序和在线服务的重要组成部分, 但传统数据库系统的刚性结构限制了它们的使用方式。这些系统需要预设 schema,并且只能用 SQL 编写的定义良好的语义来回答查询。查询必须是精确的,以返回正确的信息。此外,数据必须以符合 schema 的方式存储。因此,对非结构化数据的有效利用是一项挑战。
神经数据库
Facebook AI 开发了一种称为神经数据库(neural databases)的新方法,该方法使机器能够搜索非结构化数据,包括从大量文本到歌曲录音,其类似于传统系统搜索典型结构化数据库的方式。
神经数据库在数据库和 NLP 之间架起了一座桥梁,使得在标准化、结构化数据上使用自然语言查询取得了重大进展。研究者可以提出特别的查询,比如「有多少个队伍以三分以上的优势赢得了比赛?」目前现有的系统还无法查询那些没有组织到结构化数据库中的信息集合。相反,机器学习模型可以为语义模糊、数据不符合预定义 schema 等这类任务提供强大的预测功能。然而,机器学习模型没有数据库所具有的组合优势。因此,机器学习模型很难或不可能将模型扩展到没有见过的预测任务上,例如查询「20 世纪 70 年代发行的恐怖电影有多少评论是正面的?」又比如「20 世纪 70 年代有多少 30 岁以下的导演发行的恐怖电影获得正面评论?」
无论是维基百科还是社交媒体上的公开帖子,在传统的数据库之外还存在着海量的数据,教会机器执行复杂的数据查询,在很多应用中都非常有用。然而部署具有这些功能的系统还需要大量的额外工作。这项研究希望通过分享他们在神经数据库方面的工作,帮助 AI 界实现这一重要目标。
举例来说,以下是来自神经数据库的查询和回答的例子:在自然语言数据库中,事实以自由格式的文本存储,不需要特殊模式,如下文本所示:
Nicholas 和妻子住在华盛顿特区;
Sheryl 是 Nicholas 妻子;
1912 年,Teuvo 出生于俄罗斯;
1978 年,Sheryl 的母亲生下了她;
Nicholas 是一名医生;
1982 年,Sarah 出生在芝加哥;
2010 年,Sarah 和 John 结婚;
Sarah 在纽约的一家医院当医生。
根据上述提供的内容,我们可以进行查询:
列出所有 1980 年以前出生的人。
(Set) → Sheryl, Teuvo,...
谁的配偶是医生?
(Join) → Sheryl, John,...
谁是年龄最大的人?
(Max) → Teuvo
谁是 Sheryl 的妈妈?
(Set) → NULL
算法实现与结果
研究人员在开始研究神经数据库时,他们观察到神经模型,特别是基于 Transformer 的模型,在回答自然语言文本的查询时表现出令人印象深刻的性能提升。然而,现有的工作无法支持数据库查询,例如无法查询「列出或统计出 20 世纪出生的所有女运动员」,实现这一查询需要使用 join、filtering、aggregation 等操作,才能对一组相关事实进行推理。
众所周知,由于使用了自注意力,Transformer 模型不能很好地扩展到较大的输入。研究发现,解码器中的融合以及 LongFormer 等机制可以减轻因扩展带来的问题,但是也损害了模型的性能。该研究所用方法克服了这些问题,该方法在使用传统计算来聚合结果之前,先生成数据库中少量事实的中间查询派生。
为了解决上述挑战,该研究提出了一个神经数据库架构实例,它在聚合结果之前使用并行化的非块状(nonblocking)运算符对文本事实进行操作。如下图所示,该架构由三个核心组件构成:支持集生成器(support set generator,SSG),用来检索相关事实的小集合,称为支持集;一个可并行化、非块状的 NSPJ(neural select-project-join)操作符,用来生成中间答案,可以联合生成最终答案;以及可选的聚合阶段,该阶段使用常规计算来执行数值推理。该架构的关键见解是利用神经模型的优势,即对一小部分事实进行推理。
体系架构概览,包括 SSG、NSPJ 和聚合。
结果表明该方法可以进行扩展;随着相关支持集(support set)数量的增加,它可以对许多事实集进行推理(见下图)。
即使提供了正确的上下文,对于需要组合多个支持集的查询,基线分数也会降低。
当数据库的大小增加到超过 500 个事实时,与现有方法相比,所提出的神经数据库架构也保持了更高的准确性(见下图)。
当使用使用 25 个事实训练并在更大数据库上测试的模型扩展到更大的数据库时,该研究所用方法能够保持更高的准确性。
更多内容请参考:
原文链接:https://ai.facebook.com/blog/using-ai-for-database-queries-on-any-unstructured-data-set
CUDA编程基础——利用CUDA实现光线追踪
9月23日20:00-21:30,CUDA编程基础系列分享第二期:利用CUDA实现光线追踪。本次分享主要介绍GPU多种存储单元的特点、使用Shared memory的实例、使用Constant memory的实例、编程实例—利用CUDA实现光线追踪等内容。