【预训练语言模型】K-BERT: Enabling Language Representation with Knowledge Graph

本文主要是介绍【预训练语言模型】K-BERT: Enabling Language Representation with Knowledge Graph,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【预训练语言模型】K-BERT: Enabling Language Representation with Knowledge Graph

核心要点:

  • 融合KG到BERT,并非是embedding融合,而是将KG和原始文本结合形成sentence-tree;
  • 根据sentence tree提出soft-position和visible matrix以避免knowledge noise;
  • K-BERT在中文领域上先预训练(不加KG),然后在fine-tuning(加KG)

简要信息:

序号属性
1模型名称K-BERT
2发表位置AAAI 2020
3所属领域自然语言处理、预训练语言模型
4研究内容知识增强的语言模型
5核心内容Knowledge-enhanced PLM
6GitHub源码https://github.com/autoliuweijie/K-BERT
7论文PDFhttps://ojs.aaai.org//index.php/AAAI/article/view/5681

一、动机

  • 现如今无监督的预训练语言模型在诸多任务上达到SOTA。但是这些方法忽略了引入domain knowledge。由于预训练和微调之间的领域差异(domain-discrepancy),在依赖于knowledge的任务上这些模型的表现并不很好;

Even though they can refresh the state-of-the-art of GLUE (Wang et al. 2018) benchmark by learning from open-domain corpora, they may fail in some domain-specific tasks, due to little knowledge connection between specific and open domain.

  • 引入知识图谱表征并与语言模型的表征进行融合可以实现增强。但是这种knowledge integration存在两个挑战:(1)实体的embedding和word embedding来自不同的语义空间,即异构嵌入空间(Heterogeneous Embed- ding Space,HES);(2)过多地引入knowledge可能会带来大量的噪声Knowledge Noise(KN);

二、方法

  本文提出一种知识增强的预训练语言模型,模型架构如下图所示:

  • Knowledge Layer:对输入的文本,检索相应的三元组,并结合原始文本,将输入转换为sentence tree;
  • Embedding Layer:将sentence tree喂入Emebdding Layer得到token-level embeddng;
  • Seeing Layer:将sentence tree喂入该模块得到visible matrix,对于每个token控制其可见范围,以控制语义的表示;
2.1 Knowledge Layer

  旨在将输入的文本以及对应的KG,将文本转换为sentence tree

  • K-Query:从KG中查询与当前输入文本有关的所有三元组: E = K Q u e r y ( s , K ) E=K_{Query}(s, \mathbb{K}) E=KQuery(s,K)
  • K-Inject:将检索到的三元组,根据其对应的entity mention的position,嵌入到原始的文本中,并生成sentence tree: t = K I n j e c t ( s , E ) t=K_{Inject}(s, E) t=KInject(s,E)
    sentence tree的样例如下图所示:
    在这里插入图片描述
2.2 Embedding Layer

  引入Knowledge Layer得到的是tree结构,因此需要将其转换为序列。转换的方法(re-arrangement):

In our re-arrange strategy, tokens in the branch are inserted after the corresponding node, while subsequent tokens are moved backwards.

例如下图:
在这里插入图片描述

  • Token embdding:选择BERT的embedding和分词方法;
  • Soft-position embedding:改进position embedding,将sentence tree上的节点也进行编号;
  • Segment embedding:与BERT一致;
2.3 Seen Layer

动机: The input to K-BERT is a sentence tree, where the branch is the knowledge gained from KG. However, the risk raised with knowledge is that it can lead to changes in the meaning of the original sentence

  因为将外部知识也直接插入到了原始文本中,避免模型在进行attention计算时,将没有相关联的实体进行计算,因此需要生成一个visible matrix以限制attention的计算范围:
在这里插入图片描述
  限制方法:如果token i i i j j j 属于同一个branch(即 w i ⊖ w j w_i\ominus w_j wiwj),则允许计算它们之间的attention,否则不计算attention。

例如:
● Cook和Apple在同一个分支上,则需要计算attention;
● Apple和China不在同一个分支上,不需要计算attention;
● Cook和Beijing在同一个分支(原始文本序列),需要计算attention

  根据visible matrix,对attention矩阵进行mask,计算过程如下所示:

三、实验

3.1 数据语料

Pre-trained Corpora
  使用两个中文语料:

  • WikiZh:https://dumps.wikimedia.org/zhwiki/latest/
  • WebtextZh:https://github.com/brightmart/nlp_chinese_corpus

Knowledge Graph

  • 复旦知识工场:http://kw.fudan.edu.cn/cndbpedia/intro/
  • HowNet:http://www.keenage.com/
  • MedicalKG:作者自己构建的中文医疗KG

3.2 实验设置

baseline

  • 原始的BERT;
  • 将BERT重新在WikiZh和WebtextZh上进行预训练;
    parameter
  • 所有参数与BERT保持一致;
  • K-BERT的预训练阶段不融入KG,在Fine-tuning和Inference阶段使用KG;

For K-BERT pre-training, all settings are consistent with (Devlin et al. 2018). One thing to emphasize is that we don’t add any KG to K-BERT during the pre-training phase. Be- cause KG binds two related entity names together, thus mak- ing the pre-trained word vectors of the two are very close or even equal and resulting in a semantic loss. Therefore, in the pre-training phase, K-BERT and BERT are equivalent, and the latter’s parameters can be assigned to the former. KG will be enabled during the fine-tuning and inferring phases.

3.3 实验结果

  在若干Open domain Task上进行fine-tuning的结果如下表所示:

在这里插入图片描述

  • KG对于情感分析类任务没有实质的增益;
  • 对于语义相似判断类的任务(NLI等),HowNet更优势;而对于QA和NER类任务,CN-DBpedia更优势;因此对于不同的任务,需要考虑选择相应的KG;

  在若干Specific-domain Task进行fine-tuning的结果如下表所示:

在这里插入图片描述

  • 可知引入KG可以有效提高P、R和F1值
3.4 消融实验:

这篇关于【预训练语言模型】K-BERT: Enabling Language Representation with Knowledge Graph的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255442

相关文章

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选