Annotating Columns with Pre-trained Language Models
任务定义
输入:一张数据表,但没有表头,只有表中的数据。
输出:每一列数据的数据类型,以及两列数据之间的关系。
数据类型和数据关系都是由训练数据决定的固定集合,可以视作多分类任务。
模型架构
整个模型的back bone依然是transformer,利用attention机制获取整表的语境信息。具体来说,DODUO将整个表格序列化,化二维为一维,每个column首尾相接连接成一个序列,而每个column用一个特殊token[CLS]
隔开,整个序列以[SEP]
结尾。
与BERT的做法类似,[CLS]
这个特殊token被用来表示整个column的信息,同时这个column由于attention机制,除了自己所在的column信息也会聚合到其他column的context,这就是DODUO的核心思想。
同时,DODUO是一个多任务模型,两个分类任务:数据类别和数据关系。所以在共享transformer层作为编码器后,使用两个不同的Dense Layer来对应两个任务。数据类别任务直接取[CLS]
作为输入,输出分类结果;而数据关系任务将两个[CLS]
连接在一起作为输入,输出分类结果。这两个任务会在每个epoch中依次进行训练。
由于DODUO需要将序列化后的表中的token编码为embedding作为第一层transformer层的输入,所以对embedding模型同样做了微调,在反向传播过程中更新了12层BERT-base的参数。
*论文中好像没有提到中间的transformer layer到底有几层
整个结构的灵活性较强,核心的transformer back bone令知识在多任务之间共享,增加了泛化能力。而embedding模型和对应不同任务的dense layer都是可以灵活替换的。包括文章中也提到,使用更大更强的LM作为embedding模型可能会进一步提升效果。针对特殊数据(如数字、日期),采用对应的LM作为embedding模型也会提升性能。
实验结果
在不包含表头信息(即图中的metadata)的情况下,DODUO的性能超过了其他baseline,为SOTA。而TURL本身设计是需要表头的,此时TURL和DODUO的表现相近,甚至在数据关系任务上TURL优于DODUO。因此DODUO的优势还是在于表头信息缺失的情况,利用整表context,能得到信息更充分的编码。
消融实验的结果也说明了这个问题,DOSOLO是DODUO在单个任务上的版本,而DOSOLOscol则是只考虑单个任务单个column的版本,明显看到DOSOLO的性能知识略有下降,但DOSOLOscol的性能则是暴降。
另一方面,由于使用了pre-trained model和多任务训练,DODUO可以仅用少量数据训练达到较好的性能,图4和表8分别展示了在缩减训练集数量以及每个column token数量的情况下的性能变化。