
摘要
我们研究了将知识注入大型预训练模型(如BERT和RoBERTa)的问题。现有方法通常在注入知识时直接更新预训练模型的原始参数。然而,当需要注入多种不同类型的知识时,先前注入的知识往往会因参数覆盖而被冲刷掉。为解决这一问题,我们提出K-Adapter框架,该框架保持预训练模型的原始参数固定不变,同时支持构建具备多样化知识增强能力的模型。以RoBERTa作为主干模型,K-Adapter为每类注入的知识配置一个神经适配器(neural adapter),这些适配器如同插件一般连接至RoBERTa。不同适配器之间无信息交互,因此可高效地采用分布式方式并行训练多个适配器。作为案例研究,本文注入了两类知识:(1)通过维基百科(Wikipedia)与维基数据(Wikidata)上自动对齐的文本三元组获取的事实性知识;(2)通过依存句法分析获得的语言学知识。在三个依赖知识的任务上进行的实验——包括关系分类、实体类型识别和问答——结果表明,每个适配器均能提升模型性能,而两个适配器的联合使用进一步带来了更显著的性能增益。进一步分析显示,相较于原始RoBERTa模型,K-Adapter能够更有效地捕获多样化知识。
代码仓库
stevekgyang/sccl
pytorch
GitHub 中提及
microsoft/K-Adapter
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| entity-typing-on-open-entity | K-Adapter ( fac-adapter ) | F1: 77.6916 Precision: 79.6712 Recall: 75.8081 |
| entity-typing-on-open-entity | K-Adapter ( fac-adapter + lin-adapter ) | F1: 77.6127 Precision: 78.9956 Recall: 76.2774 |
| relation-classification-on-tacred-1 | RoBERTa | F1: 71.3 |
| relation-classification-on-tacred-1 | K-Adapter | F1: 72.0 |
| relation-extraction-on-tacred | K-ADAPTER (F+L) | F1: 72.04 F1 (1% Few-Shot): 13.8 F1 (10% Few-Shot): 56.0 F1 (5% Few-Shot): 45.1 |