论文标题:
CharBERT: Character-aware Pre-trained Language Model
论文链接:
https://arxiv.org/abs/2011.01513
代码链接:
https://github.com/wtma/CharBERT
一、动机
预训练模型的利用已经成为当前 自然语言处理 的范式,使用预训练模型处理输出,然后在此基础上根据具体任务进行调整。为了提升预训练模型的效果,人们提出了很多改进的办法,例如更好的 masking 方法,更大的 batch 等。但很少有工作关注于输入的编码,当前的 word piece 编码方式 BPE 虽然能够降低字典大小,同时缓解 OOV 问题,但仍然存在一些问题。
如下图所示,首先 BPE 的方法无法表示完整词的信息以及更细粒度的字符级别的信息,如下图左边所示,第一层和第三层的内容都没有被表示出来,第二 BPE 的方法很容易受到攻击,如果替换了输入词中的一个字符,那么切分出来 word piece 受到的影响就会比较大。为了解决 BPE 存在的这些问题,本文从输入编码的角度提出了 CharBERT,通过更全面的编码方式和更好的融合方式提升预训练模型的效果。
二、模型
下图就是 CharBERT 模型的结构,为了更好的表示输入词,作者使用了一个双路结构,然后充分 CNN,RNN 的优势,最终实现了效果的提升,接下来,将对模型的技术细节进行分析
2.1 Character Encoding
2.2 Heterogeneous Interaction
在得到两种不同的 embedding 表示之后,作者提出了一种新的融合方式。具体而言,该方法首先通过 FFN 将两种不同的 embedding 映射 到同一空间,然后拼接起来,并在此基础上使用 CNN 抽取局部特征,在得到局部特征之后,分别使用不同的 FFN 再 映射 会原来各自的空间,然后进行残差链接,通过这样的形式就进行了一次融合,具体过程如下:
这就完成了一次交互,然后再过 transformer,然后再进行交互,不断重复该过程,实现对输入的更好的建模。
2.3 Unsupervised Character Pre-training
除了模型结构上的增加,为了解决 BPE 比较脆弱的问题,作者也增加了一个非监督的字符级别预训练,该过程可以用下图表示:
原来的 MLM 预训练任务保持,但同时作者考虑了一个 NLM(Noise Language Model),该任务针对的就是字符级别的表示,将原始输入中的某些字符替换掉(包括丢掉,增加,交换),模型需要预测数来原始的输入词是什么,通过这种方式实现了更稳定的模型性能。
这里需要说明的是 MLM 和 NLM 是不交叉的,即如果某个词被替换了某个字符,那么这个词就不会被 mask 掉,保证了 MLM 任务的干净。
以上就是整个方法的技术内容。
三、实验
在实验部分,作者使用了 BERT 和 RoBERTa 作为基本模型,English Wikipedia 作为预训练的语料集,下游测试任务为 SQuAD,Text Classification,Sequence Labeling。相关实验结果如下:
当然作者还进行了一些模型健壮性,消融实验和其他的一些实验,用于支持文中提出的方法
四、总结
本文最突出的一个地方在于考虑了更好的 embedding 方法,而不是只使用 BPE 的结果,通过结合字符级别和词级别的信息实现了更为全面的输入编码,同时,结合 RNN 和 CNN 的优势也是本文的另一个亮点,基本上 CNN,RNN,Transformer 都使用上了,也体现了新老研究成果的结合在一定程度上能进一步提升方法的性能,可以认为是一个可行的研究方向。
推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。