| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> EasyNLP集成K-BERT算法,借助知识图谱实现更优Finetune导读 -> 正文阅读 |
|
[人工智能]EasyNLP集成K-BERT算法,借助知识图谱实现更优Finetune导读 |
作者:汪诚愚 张涛林 黄俊 导读知识图谱(Knowledge Graph)的概念?次出现2012年,由Google提出,它作为?种?规模语义?络, 准确地描述了实体以及实体之间的关系。知识图谱最早应?于搜索引擎,?于准备返回?户所需的知识。随着预训练语?模型的不断发展,将知识图谱中的知识三元组融?预训练模型,对提升模型的效果有重要的作?。经典的知识注?算法直接将知识图谱中实体的词嵌?向量注?预训练模型的词嵌?向量中;然?,知识图谱中实体的词嵌?向量和预训练模型的词嵌?向量的向量空间不?致,?且容易引起知识噪?(Knowledge Noise)的问题。K-BERT算法提出利?Visible Matrix在BERT模型中引?外部知识,具有较好的效果。 因此,我们在EasyNLP这?算法框架中集成了K-BERT算法,使?户在具有知识图谱的情况下,取得更好的模型Finetune效果。 EasyNLP(GitHub - alibaba/EasyNLP: EasyNLP: A Comprehensive and Easy-to-use NLP Toolkit)是阿?云机器学习PAI 团队基于 PyTorch 开发的易?且丰富的中?NLP算法框架,?持常?的中?预训练模型和?模型落地技术,并且提供了从训练到部署的?站式 NLP 开发体验。EasyNLP 提供了简洁的接?供?户开发 NLP 模型,包括NLP应? AppZoo 和预训练 ModelZoo,同时提供技术帮助?户?效的落地超?预训练模型到业务。由于跨模态理解需求的不断增加,EasyNLP也?持各种跨模态模型,特别是中?领域的跨模态模型,推向开源社区,希望能够服务更多的 NLP 和多模态算法开发者和研 究者,也希望和社区?起推动 NLP /多模态技术的发展和模型落地。 本?简要介绍K-BERT的技术解读,以及如何在EasyNLP框架中使?K-BERT模型。 K-BERT模型详解BERT等预训练语言模型从大规模语料库中捕获文本语言表示,但缺乏领域特定的知识。而领域专家在阅读领域文本时,会利用相关知识进行推理。为了实现这一功能,K-BERT提出了面向知识图谱的知识增强语言模型,将三元组作为领域知识注入到句子中。然而,过多的知识融入会导致知识噪音,使句子偏离其正确的含义。为了克服知识噪音, K-BERT引入了Soft-position和Visibel Matrix来限制知识的影响。由于K-BERT能够从预训练的BERT中加载模型参数,因此通过配备KG,可以很容易地将领域知识注入到模型中,而不需要对模型进行预训练。K-BERT的模型架构和知识注入的应用示例如下所示: ? 特别地,在模型的输入层,K-BERT表征层通过位置索引将语句树转换为句子,构造三种表征方式:Token表征、Soft-position表征和Segment表征。其中Soft-position表征作为位置嵌入,为重排的序列提供句子结构信息。此外,通过Visible Matrix来覆盖不应该看到的Token,避免了知识噪声问题。如下图所示,以Beijing为例,给定知识三元组(Beijing,capital,China),K-BERT通过Visible Matrix限制只有Beijing能“看到”其相关的关系词和宾语,分别为“capital”和“China”。与之相反,一个知识无关的词now则无法“看到”“capital”和“China”。 ? 从作者论文中我们也可以看到K-BERT中的Attention Matrix的计算过程: ? 其中,M即为Visible Matrix,为了表示K-BERT输入Token序列能否互相“看见”,定义M如下: ? 因此,当两个Token互相可以“看见”,M矩阵对应的元素值为0,因此Attention Matrix的计算过程和普通BERT相同。反之,当两个Token不能互相“看见”,M矩阵对应的元素值为负无穷,对应SoftMax函数后的权重则会趋于0,这使得这两个Token在Self-Attention计算过程中互无影响。这就在计算过程中,大大缓解了知识图谱增强过程的知识噪声问题。 K-BERT模型的实现与效果在EasyNLP框架中,我们在模型层构建了K-BERT模型的Backbone,其核?代码如下所示:
其中,在K-BERT中,模型Backbone的Attention Mask由两个Matrix加和而成,分别为普通的Attention Mask和Visible Matrix,实现核心代码如下:
在数据预处理过程中,我们需要获得当前样本的输入文本和知识三元组,从而计算出Visible Matrix:
为了验证EasyNLP框架中K-BERT模型在各种任务上的精度,我们在多个公开数据集上验证了句子分类和NER任务的效果。我们使用EasyNLP加载了BERT模型,对比复现结果和K-BERT官方论文的结果,如下所示:
可以通过上述结果,验证EasyNLP框架中K-BERT算法实现的正确性。 K-BERT模型使?教程以下我们简要介绍如何在EasyNLP框架使?K-BERT模型。 安装EasyNLP ?户可以直接参考Github(https://github.com/alibaba/EasyNLP)上的说明安装EasyNLP算法框架。 数据准备 K-BERT是一个finetune模型,需要用户准备下游任务的训练与验证数据,为tsv文件。对于文本分类任务,这??件包含以制表符\t分隔的三列,第一列是标签,第二列是句子序号,第三列是文本句子。样例如下:
对于NER任务,同样为一个tsv文件,由\t分隔为文本和label两列,文本字与字之间用空格隔开。样例如下:
下列?件已经完成预处理,可?于测试:
K-BERT?本分类示例 在文本分类任务中,我们采?以下命令对K-BERT模型进?finetune,模型在finetune过程中也会自动输出评估结果。其中,用户可以在前述预处理示例文件中找到训练集chnsenticorp/train.tsv、评测集chnsenticorp/dev.tsv以及知识图谱文件kbert_kgs/HowNet.spo。kbert_cls.py位于EasyNLP项目下的examples/kbert/下。相关示例代码如下:
K-BERT命名实体识别示例 在NER任务中,我们采?以下命令对K-BERT模型进?finetune,其使用方式与文本分类相同:
未来展望在未来,我们计划在EasyNLP框架中集成更多中?知识模型,覆盖各个常?中?领域,敬请期待。我们 也将在EasyNLP框架中集成更多SOTA模型(特别是中?模型),来?持各种NLP和多模态任务。此外, 阿?云机器学习PAI团队也在持续推进中?多模态模型的?研?作,欢迎?户持续关注我们,也欢迎加? 我们的开源社区,共建中?NLP和多模态算法库! Github地址:https://github.com/alibaba/EasyNLP Reference
阿里灵杰回顾 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:46:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |