简介
论文地址:
https://arxiv.org/abs/2203.06378
论文代码:
https://github.com/daiyongya/markbert
更多、更及时内容欢迎微信公众号:小窗幽记机器学习 围观。
MarkBERT 也是一种考虑如何将词信息引入到模型的方案。MarkBERT基于字的模型,但巧妙地将词的边界信息融入模型,具体操作是将词之间插入边界marker。出现边界marker意味着前一个字符是词的尾部字符,而紧接着的字符是另一个词的起始字符。如此可以统一处理所有词,不存在词的OOV问题。此外,MarkBERT 还有两个额外优点:
- 便于在边界marker上添加单词级别的学习目标(文章使用replaced
word detection这个学习任务),这可以作为传统字符(比如MLM任务)和句子级(比如NSP任务)预训练任务的补充 - 便于引入丰富的语义信息,比如想要引入词的POS标签信息,可以用 POS 标签特定的标记替换marker。
MarkBERT在中文NER 任务上取得SOTA结果。在MSRA数据集上 95.4% -> 96.5%,在OntoNotes数据集上82.8%->84.2%。MarkBERT在文本分类、关键词识别、语义相似任务上也取得了更好的精度。
MarkBERT 预训练阶段有两个任务:
- MLM:对边界标记 marker 也进行mask,以使模型能学习边界知识。
- 替换词检测(replaced word detection): 人工替换一个词,然后让模型区分marker前面的词是不是正确的。
模型结构
MarkBERT Model:
首先分词,在词中间插入特殊标记(文章中使用[S]
这个特殊marker),这些标记也会被当做普通的字符处理,有对应的位置编码,也会被 MASK。这样编码时就需要注意词的边界,而不是简单地根据上下文填充被mask掉的部分。这使得MASK预测任务变得更有挑战(预测需要更好地理解单词边界)。如此,character-based的MarkBERT模型通过单词边界信息融入词级别信息(词的信息是显式给出的)。
替换词检测:
具体而言,当一个词被替换成混淆词,marker 应该做出「被替换」的预测,label为 False,否则为 True。假设第$i$个marker的表征记为$x^i$,预测正确和错误对应的label记为$y^{true}$和$y^{false}$,则替换词检测loss定义如下:
$$ \mathcal{L}=-\sum_{i}\left[y^{\text {true }} \cdot \log \left(x_{y}^{i}\right)+y^{\text {false }} \cdot \log \left(x_{y}^{i}\right)\right] $$
该损失函数和 MLM的损失函数加在一起作为最终训练的损失。混淆词来自同义词或读音相似的词,通过替换词检测这个任务,marker对上下文中的单词span更敏感。为进一步融入语义信息,可以将POS的结果作为边界marker,如Figure 1所示,使用 POS 词性标注信息 作为边界marker的模型称为 MarkBERT-POS。
预训练
MASK 的比例依然是 15%,30% 的时间不插入任何marker(原始的BERT);50% 的时间执行 WWM(whole-word-mask) 预测任务;其余时间执行 MLM 预测任务。
在插入marker中,30%的时间将词替换为基于读音的混淆词或基于同义词的混淆词,marker预测读音混淆标记或同义词混淆marker(即False);其他时间marker预测正常单词的marker(即True)。为了避免label不平衡,只计算正常marker上 15% 的损失。
实验结果
在 NER 任务上的效果如下表所示:
可以看到,效果提升还是很明显的。
在三个任务上做了消融实验:
- MarkBERT-MLM:只有 MLM 任务
- MarkBERT-rwd:在替换词检测时,分别移除近音词或同义词
- MarkBERT-w/o:在下游任务微调时去掉 Marker(和原始 BERT 一样用法)
消融实验结果如下表所示:
从消融结果可以看出:
- MarkBERT-MLM(没有使用替换词检测任务) 在 NER 任务中提升显著,说明单词边界信息在细粒度任务中很重要。
- 不插入marker,MarkBERT-w/o 也达到了和 baseline 相近的效果,说明相对简单的在语言理解任务中 MarkBERT 可以像 BERT 一样使用。
- 对 NER 任务来说,插入marker依然重要,实验结果表明 MarkBERT 在学习需要这种细粒度表示的任务的单词边界方面是有效的。
讨论
已有的中文 BERT 融入词信息有两个方面的策略:
- 在预训练阶段使用词信息,但在下游任务上使用字符序列,如 Chinese-BERT-WWM,Lattice-BERT。
- 在下游任务中使用预训练模型时使用单词信息,如 WoBERT,AmBERT,Lichee。
另外在与实体相关的 NLU 任务, 特别是关系分类中有探讨插入marker的想法。给定一个主语实体和宾语实体,现有工作注入非类型标记或实体特定marker,并对实体之间的关系做出更好的预测。
此外,在预测阶段,也是需要marker信息,而该信息可能存在错误,作者并没有针对这方面进一步做消融研究。