• 论文阅读_自然语言模型加知识图谱_DKPLM


    英文题目:DKPLM: Decomposable Knowledge-enhanced Pre-trained Language Model for Natural Language Understanding
    中文题目:DKPLM:可分解的利用知识增强的预训练语言模型
    论文地址:https://arxiv.org/abs/2112.01047
    领域:自然语言处理, 知识图谱
    发表时间:2021.12
    作者:Taolin Zhang等,华东师范大学,阿里团队
    出处:AAAI-2022
    代码和数据:https://github.com/alibaba/EasyNLP(集成于EasyNLP)
    阅读时间:2022.09.11

    读后感

    自然语言和知识图结合的一种新尝试,几种优化方法比较有意思。尤其是他对长尾信息的分析,很有启发性:即使在无监督学习的情况下,也要尽量使用重要的数据训练模型。另外,还给出了具体方法,比如实体出现频率高于均值,则忽略它…

    介绍

    加入知识增强的自然语言模型简称KEPLM,它将知识图中的三元组注入NLP模型,以提升模型对语言的理解能力。在模型使用时需要知识搜索和编码,运算量大。

    本文提出可分解的知识增强名为DKPLM,具体方法是使用长尾实体作为知识注入的目标,还在训练时设计了重建知识三元组的知识解码任务。它只在预测训练时注入了知识,在精调模型和预测时用法与BERT一致,相对节省资源。如图-1所示:

    在预训练时使用以下主要技术:

    • 基于知识的长尾实体探测
    • 利用知识图中三元组做成伪实体替换长尾实体训练模型,模型无需增加参数。
    • 利用三元组中的关系,通过对实体及其谓词来解码对应实体中的每个token。

    实验证明对于zero_shot任务,以及预测速度都有明显提升。

    方法

    整体架构如图-2所示:

    长尾实体检测

    通过对wiki数据分析可以看到实体出现的频率服从幂律分布,如图-3所示:

    只有很少的实体高频出现,多数实体出现次数少,这使用自然语言模型难以从上下文中有效学习。之前论文提到注入高频三元组不总是有利于对下游任务,反而更容易注入负面知识。因此更好的方法是注入长尾实体,同时还需要考虑实体在知识图中和句中的重要性。具体考虑以下三点(图-2第二层右侧):

    • 实体频率:实体在预训练数据集中出现的频率,记作:Freq(e)。
    • 语义重要性:实体在句中的重要性,记作:SI(e)。计算SI可以使用语义相似度,通过去掉句中的实体e后的编码hrep与原句编码ho比较,识别该实体的重要性。

    • 知识连接:实体在知识图中多跳邻居的个数,记作:KC(e)。如下式所示,其中Rmax,Rmin是预定义的阈值,|N|表示邻居个数,Hop指跳数。

    最终基于知识的长尾系数KLT计算如下:

    其I{x}为布尔性的指示函数,当实体出现频率高于均值时,则忽略该实体。
    (我理解是:在训练集中出现次数太多的去掉,在知识图中邻居太多的去掉,在句子里有它没它都一样的去掉)

    伪Token嵌入的注入

    为了提升模型对长尾实体的理解,将知识图中的关系代入模型训练。如果预测训练数据中出现了头实体eh,则用它相关的关系谓词和尾实体替换它的嵌入:

    同理,如果出现尾实体,则用谓词加头实体来表示。
    以替换头实体为例,对关系和尾实体编码:

    其中F(e)是预训练模型PLM的输出,fsp是自注意力池化,LN是标准化层,W是模型参数。
    由于尾实体和关系谓词通常都比较短,生成的表示可能是无效的,因此还加入了对头实体的描述文本记作e_h^des,使用预训练模型对其编码,最终的伪实体表示如下:

    这里的⊕表示串联。通过上述方法,促进模型学习知识图中的三元组。

    相关知识解码

    为了更确定地让模型学习注入信息,又调整了解码层逻辑。在最后一层,利用自注意力池化获取跨实体的实体掩码表示。

    用头实体本身通过上述方式生成表示h_eho,再加入hr,目标是解码尾实体,用h_di表示预测尾实体的第i个token。

    上式中δ是缩放因子,h_d^0等于h_eh_o作为初始的启发。

    由于词表较大,使用采样的SoftMax来对比预测值与实际值。损差函数计算方法如下:

    这里yi是实际token,yn是采样的负token,Q是负采样函数,N为负例个数。

    训练目标包含两项任务:相关的知识解码和BERT自带掩码模型任务,最终损失函数计算如下:

    实验

    模型底层框架基于RoBERTa,使用英文Wikipedia作训练数据,知识图包含3085345个实体,822种关系。由于实体太多,使用PEPR算法选择负实体,并将N设为20,λ1最终取值为0.5。主实验结果如下:

    从表-4可以看到,DKPLM速度明显优于其它知识注入模型:

    从图-5的消融实验可以看到,三种优化方法各自的贡献:

  • 相关阅读:
    Python开源项目DifFace——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践
    LeetCode-790. 多米诺和托米诺平铺【动态规划,矩阵快速幂】
    Jenkins 如何玩转接口自动化测试?
    计算机毕业设计之java+springboot基于vue的广场舞团社团网站-社团管理系统
    Causality
    “极致成本向左,本质安全向右”-谈谈锂电池储能系统的发展趋势
    Echarts仪表盘3.0
    LeetCode中等题之替换字符串中的括号内容
    虹科分享 | 冻干机搁板温度均匀性(分布验证)的测量方法
    如何快速且高效的自学软件测试?听听6年测试总监怎么说....
  • 原文地址:https://blog.csdn.net/xieyan0811/article/details/126806288