zoukankan      html  css  js  c++  java
  • 知识图谱的表示学习方法

    传统的知识图谱表示方法是采用OWL、RDF等本体语言进行描述;随着深度学习的发展与应用,我们期望采用一种更为简单的方式表示,那就是【向量】,采用向量形式可以方便我们进行之后的各种工作,比如:推理,所以,我们现在的目标就是把每条简单的三元组< subject, relation, object > 编码为一个低维分布式向量。
    【表示学习】 :表学习旨在将研究对象的语义信息表示为稠密低维实体向量,知识表示学习主要是面对知识图谱中的试题和关系进行表示学习,使用建模方法将实体和关系在低维稠密向量空间中,然后进行计算和推理,即--简单说:将三元组表示成向量的这个过程就称为表示学习。

    知识表示的几个代模型:翻译模型、距离模型、单层神经网络模型、能量模型、双线性模型、张量神经网络模型、矩阵分解模型。

    transE模型属于翻译模型:将每个三元组实例(head,relation,tail)中的关系relation看做是从实体head到实体tail的翻译,通过不断地调整h,r和t(head,relation,tail的向量)使(h+r)尽可能的与t相等,即h+r=t.

    TransE是基于实体与关系的分布式向量,受Word2vec启发,利用了词向量的平移不变现象。

    例如:C(king)-C(queen)~~C(man)-C(woman)  其中,C(W)就是word2vec学习到的词向量表示。

    TransE定义了一个距离函数d(h+r,t),它用来衡量h+r和t之间的距离,在实际应用中可以使用L1或L2范数,在模型的训练过程中,transE采用最大间隔方法,最小化目标函数,目标函数如下:

    其中,S是知识库中的三元组即训练集,S'是负采样的三元组,通过替换h或t所得,是人为随机生成的,y是取值大于0的间隔距离参数,是一个超参数,[x]+表示正值函数,即x>0时;[x]+=x;当x<=0时,[x]+=0。算法模型比较简单,梯度更新只需要计算距离d(h+r,t)和d(h'+r,t’)。这个过程和训练小狗一样,它做对了,就给骨头吃,做错了,就打两下。

    模型训练过程:

    (1)首先,确定训练集,超参数y,学习率λ

    (2)初始化关系向量与实体向量,对于每一个向量的每一个维度在[-6/√k,-6/√k]内随机取一个值,k为低维向量的维数,对所有的向量初始化之后要进行归一化。

    (3)进入循环:采用minibatch,一批一批的训练会加快训练速度,对于每批数据进行负采样(将训练集中的三元组某一实体随机替换掉),T_batch初始为一个空列表,然后向其添加由元组对(原三元组,打碎的三元组)组成的列表:

     拿到T_batch后进行训练,采用梯度下降进行调参。

     

    word2vec + transE 知识表示模型

    TransE算法(Translating Embedding)

  • 相关阅读:
    [NOI2007]生成树计数
    [NOI2009]变换序列
    BZOJ3261 最大异或和
    [SHOI2011]双倍回文
    [TopCoder14647]HiddenRabbits
    [HDU5709]Claris Loves Painting
    [BZOJ4559][JLOI2016]成绩比较
    [CF995F]Cowmpany Cowmpensation
    [TopCoder11557]MatrixPower
    [UOJ198][CTSC2016]时空旅行
  • 原文地址:https://www.cnblogs.com/yuanmo/p/12715711.html
Copyright © 2011-2022 走看看