切分也重要:基于多粒度语言单元切分的BERT模型

杀马特。学长 韩版系。学妹 提交于 2020-09-30 01:56:29

论文标题:

AMBERT: A PRE-TRAINED LANGUAGE MODEL WITH MULTI-GRAINED TOKENIZATION

论文作者:

Xinsong Zhang, Hang Li

论文链接:

https://arxiv.org/pdf/2008.11869.pdf


不同粒度语言单元的切分

在深度学习时代,将语言单元切分为怎样的粒度是一个很重要的问题,它首先影响了词典的大小,比如英语,如果切分为字符,那词典最多也不会超过100,但是如果切分为词,那词典就会成千上万。

词典大小直接影响了数据的分布,即词典中的有些词是高频词,有些是低频词,甚至可能出现很多未登录词(OOV),这些都对模型最终的效果有影响。

当前主流预训练模型的切分方式大致是:对英语来说,默认采用子词(Subword)的形式,一种介于字和词之间的语言单元粒度,比如BERT采用的是字词。

对中文来说,一般采用字级别的粒度。采用这种粒度的切分方式,相比其他粒度而言表现更好。

但是,这些模型都是基于“单粒度”的切分,也就是说,要么只采用字词,要么只采用字,而单粒度的切分可能会产生一些问题。

比如下图是采用字级别切分粒度的中文BERT模型的注意力图示。可以看到,“拍”关注了“卖”,“北”关注了“京”,“长”和“市”组合了。

但是在这些例子中,它们都错误地关注了字,这是因为对于字级别的模型而言,“北京”一起出现的频率远大于“北上京城”出现的频率,“市长”共现的频率远大于“长江”共现的频率。字级别的模型难以完全建模具体相同字的不同的词。

反之,如果我们把这三句话都切分为词再送入BERT,就会发现它们能够在一定程度上克服上述不足,如下图所示。

“球拍”和“乒乓”关注,是正确的;“北”关注了“北”,不能算错;“市长”关注了“市长”,也不能算错。

这时候,第一句话就是我们想要的;对第二句话,由于我们把“京城”当作一个整体,“北”就不能再去关注“京”了,只能去关注自己;第三句话是分词带来的错误,正确的分词应该是“南京市/长江/大桥”,尽管分词错误,但是模型还是“保守”地关注了自己。

由此可见,不同粒度的切分都有各自的优劣,如果能结合多个粒度,我们就可以期望它们能优势互补。

鉴于此,本文提出AMBERT(A Multi-grained BERT),结合不同粒度的语言单元的切分进行预训练和微调,从而提高在自然语言理解任务上的效果。

其做法很简单:用两个参数共享的Encoder分别编码同一个句子的两个不同切分粒度,然后使用掩码预测同时进行预训练,并在微调、推理的时候也结合两方信息即可。

这种方法简单易实现,而且由于参数共享,所以模型参数量上也不会有太大的变化(词典更大),训练也比较容易。

总的来说,本文贡献如下:

  • 提出多粒度的预训练BERT模型,结合不同粒度的语言单元的切分提高下游任务的效果;

  • 在中文自然语言理解任务CLUE和英文自然语言理解任务GLUE和问答任务上取得了显著的效果,尤其是对中文而言效果提升非常可观。

AMBERT

下图是AMBERT的示意图,实现非常简单。简单来说,就是对同一个句子,按照两个不同的粒度进行切分(本文只探究了两个粒度,多个粒度亦可),然后使用两个参数共享的编码器把它们分别编码,最后各自使用掩码预测(MLM)进行预训练即可。

这里需要强调的是“分别”,也就是说,不同粒度的句子是不相互关注的,这就显著降低了自注意力的复杂度。

在微调的时候,使用下述优化目标:

其中, 分别是两个粒度的特殊单元[CLS],用于进行预测。而最后一项则是让两个粒度得到的特殊单元[CLS]尽量保持一致。

当然,我们还可以对AMBERT稍作修改,就得到了下述变体:

  • AMBERT-Combo:用两个非参数共享的编码器分别编码两个粒度的句子;

  • AMBERT-Hybrid:单个编码器而不是两个编码器去同时编码两个粒度的句子,也就是把两个粒度的句子先拼接起来再送到BERT里,这就会让自注意力在不同粒度的句子中进行。

其实可以预见,上述两个变体都不如AMBERT,具体将在实验部分进行说明。

实验

对于中文,采用字和词两个粒度,对于英文,采用词和短语两个粒度。中文任务在CLUE上进行,英文在GLUE上进行。预训练数据、实验设置详见原文。

下表是AMBERT在CLUE上的实验结果。可以看到,AMBERT比RoBERTa平均高出接近一个点,尽管参数量多一些。在9个任务上,AMBERT取得4项最佳,在WSC和CMRC上离最佳结果差的比较多,原因还需要进一步分析。

下表是AMBERT在GLUE上的实验结果。和RoBERTa相比略逊一筹,但是超过了其他模型(尽管不知道是参数量带来的还是模型本身带来的,可能需要作者进一步进行对比实验)。

和中文比较,可以认为多粒度模型在中文上带来的提升要比英文显著。这个结论也是比较符合直觉的。

下面来看看AMBERT和它的两个变体的比较。首先是AMBERT和AMBERT-Combo。注意到AMBERT-Combo用了两个独立的编码器,我们可以期望它们得到的[CLS]特征应该是有所不同的。

为此,下图呈现了每个模型中两个编码器[CLS]特征的ED(normalized Euclidean Distance)和CD(Cosine Dissimilarity)距离。

从图中可以看到,AMBERT-Combo的数值显著大于AMBERT,说明独立的编码器可能会使不同粒度得到的特征有更大差异。

下面再来比较AMBERT和AMBERT-Hybrid。下图是两个模型的自注意力热力度,由于AMBERT-Hybrid联合编码两个粒度的句子,所以不同粒度的语言单元之间会互相关注,这样可能会“稀释”自注意力。

当句子很长(实际上已经很长了)时,注意力稀释带来的影响就会更加明显(作者没有在这里进一步说明句子长度的影响,实际上原文Claim了这个结论是需要实验佐证的)。这可以在一定程度上解释为什么AMBERT-Hybrid效果弱于AMBERT。

小结

本文提出多粒度的预训练模型,使用粗细粒度的语言单元切分方式对句子进行切分,从而期望结合二者的优势。在中文和英文的自然语言理解任务上显示该模型的有效性,尤其是对中文而言效果更佳显著。

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!