Motivation
之前的预训练模型大多是在Transformer模型输出时,加入Multi-Task,通过大量语料无监督预训练,提取到文本中的某种"知识"。如Bert中的Mask Token Prediction 和 Next Sentence Prediction任务。但上述方法有一个明显的缺点,即在每次需要添加某种新的"知识"时,又需要重新预训练整个模型,这可能会导致之前"知识"的遗忘。
本文将固定住前面的BackBone部分,即Roberta模型的参数不微调。对每一种"知识"定义一种新的Adapter,并定义不同的预训练任务,每次训练对应的Adapter。这样每种"知识"都可以通过其对应的Adapter学习到。
Experiments
Adapter结构如下
Adapter Layer由三部分组成,包括一个全连接层 + N层Transformer Encoder Layer + 一个全连接层。
将Roberta除最后一层以外的每一层的输出,传给Adapter对应的层,(即M层Transformer Layer,则存在K层Adapter Layder)。
对于单个Adapter的情况,最后将Roberta 最后一层的特征与Adapter最后一层的特征拼接,传给预训练任务。
而对于多个Adapter的情况,以两个为例,将Roberta 最后一层的特征与Adapter1和Adapter2的最后一层的特征拼接,传给预训练任务。
实验时,采用N = 2, M = 24, K = {0, 11, 23},可能是每一层或每两层Roberta Transformer Layer过一层Adapter Layer。
文中定义了两种不同的Adapter:
- Factual Adapter: 在T-REx的数据集上预训练。关系分类任务,输入为句子,输出为整个句子的特征(由Roberta 最后一层的特征和Adapter最后一层的特征拼接而成)。取出其中给定的两个的entity的特征,并过一层pooling layer,最后拼接两个entity的特征,并执行Relation Classification任务。
- Linguistic Adapter: 预训练任务,dependency relation prediction,即预测给定句子中每一个单词的父节点位置,输入为句子,输出为整个句子的特征(由Roberta 最后一层的特征和Adapter最后一层的特征拼接而成)。对于每一个单词的特征,接一个线性层,完成多分类任务。