表格版的公式生成器来了!交大ACM班毕业生,伯克利博士陈昕昀在Google带来了她在ICML 2021的新工作,能够自动帮你补全公式,准确率在测试阶段已达57.4%。目前Google Sheets已上线该功能,快去试用吧!
Excel可以说是最熟悉的陌生人了,每天都在使用,但高级用法却说不上来几个。
写公式就是Excel的一个重要功能,公式可以让用户对数据进行复杂的分析和转换。但尽管表格中的公式语言比编程语言更容易学习,但编写这些公式仍然很复杂,并且一个符号没注意可能就会导致错误。
Google在2014年时开发了一个工具Smart Autofill,能够自动识别表格的pattern来填充每一列的缺失值,主要方法使用机器学习算法来预测新数据。
例如,一个表格中包含了所用车辆的四个特征:年份、英里数、车门数和车辆类型(汽车或卡车),根据这四个特征制定车辆的价格。这是一个典型的数据分析预测的场景,可以使用算法根据表格内已经提供的数据(作为训练集)来估计缺失的价格。
这个工具虽好,但它却无法学习到复杂的公式,并且人工修正也十分麻烦。
时间来到2021年,借助BERT在序列模型上的威力,Google在ICML 2021上提出了一个新模型,能够基于目标单元周围的上下文自动生成公式。
论文的第一作者是陈昕昀,目前是加州大学伯克利分校的在读博士,由Dawn Song教授指导。本科毕业于上海交通大学ACM班,获得计算机科学学士学位。目前是Deepmind的一名研究实习生,曾于2019年、2020年在Google Brain做实习生。主要研究兴趣包括神经网络程序综合和对抗机器学习。
当用户开始在目标单元格中编写带有「=」符号的公式时,系统通过学习历史表格中公式的模式,为该单元格生成可能的相关公式。该模型使用目标单元格的相邻行和列中的数据以及标题行作为上下文。
它首先将相邻单元和标题单元组成的表格的上下文结构编码为一个embedding,然后使用该上下文嵌入生成所需的表格公式。
公式生成部分包括两个组件:
- 运算符序列(例如,sum、if等);
- 应用运算符的表格范围(例如A2:A10)。
目前Google Sheets 的用户已经可以正式使用这个功能了!
模型使用的架构仍然是encoder-decoder,这个结构也让研究人员能够灵活地将多种类型的上下文信息(例如包含在相邻行、列、标题等中)嵌入到编码器中,解码器可以使用该结构生成所需的公式。
为了计算表格上下文的embedding,它首先使用基于BERT的模型架构对目标单元附近的多行(以及标题行)进行编码。每个单元格中的内容包括其数据类型(如数字、字符串等)和值,同一行中的单元格内容被级联到一个token序列中以便输入到BERT encoder。
类似地,模型还会对目标单元格左侧和右侧的几列进行编码,然后在两个 BERT 编码器上执行行和列卷积以计算上下文的聚合表示。
解码器则使用LSTM生成所需的目标公式作为token序列。首先模型预测出由公式运算符组成的公式结构(formula-sketch),然后使用与目标单元格相关的单元格地址生成相应的范围。
模型还利用注意力机制来计算表头和单元数据上的注意力向量,在做出预测之前,直接将这些注意力向量连接到LSTM输出层。
除了利用相邻行和列中的数据外,该模型还利用来自顶层工作表结构(如标题)的其他信息,使用tpu进行模型预测,从而保证了以低延迟的效果生成公式建议,并且能够在较少的机器上处理更多的请求。
模型的训练数据集主要是一个由Google创建并与Google共享的电子表格语料库。数据集包含4.6万张谷歌表格,其中4.2万张用于训练,2300张用于验证,1700张用于测试。
实验结果表明,该模型具有42.5%的完整公式精度和57.4%的完整公式框架精度,这两个指标的准确率足够高,足以支撑产品上线服务于初期用户。并且随着产品收集到更多数据,精度肯定还会上升。
研究人员还进行了一项消融实验,通过去除不同的组件来测试模型的几种简化版本,发现基于行和列的上下文嵌入以及标题信息对模型的性能至关重要。
未来可能会有更多基于这方面的研究,包括设计新的模型架构来合并更多表格结构,以及扩展模型以支持电子表格中bug检测和自动图表创建等更多应用。