ConvR:Adaptive Convolution for Multi-Relational Learning

(ConvE)Convolutional 2D Knowledge Graph Embeddings 本论文的贡献如下:(1)提出了一个简单的,有竞争力的二维卷积链路预测模型——ConvE(2)提出了1-N打分方法以加快训练速度3倍和评估速度300倍(3)模型具有更好的参数效率,比DistMult和R-GCN都要好很多(4)论文提出的模型与其他浅的模型的性能区别随着知识图谱复杂度的增加而成比例增加(5)验证了测试数据集泄露的严重性,同时提出了一个改进版的数据集(6)对ConvE和先前其他最好的模型做了评估,ConvE取得了SOTA效果。 阅读详情

关于卷积的知识图谱补全:
ConvE:Convolutional 2D Knowledge Graph Embeddings
ConvKB代码:A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network
ConvR论文:点击

1 介绍

本论文的思想是在ConvE论文的基础上进行改进,进行知识图谱补全。ConvE成功实现实体和关系之间的交互,但是实体和关系之间的交互非常少,仅仅只有百分之20左右,因此提出此篇论文,自适应卷积,增加实体和关系之间的交互能力。

2 模型

2.1 模型图

在这里插入图片描述

ConvE的思想

1、仅仅只是简单的对s和r的embedding进行堆叠,他们之间的交互内容,只有一部分,大约百分之20%有,如图a中卷积之后,黄蓝交接的部分
2、采用的卷积为global为全局的卷积,在实现时,所以数据采用同一套卷积

ConvR的思想

1、其思想是对ConvE的问题进行改进,为了实现更好的交互,将r的embedding ,进行拆封,拆分成c个 h × w h\times w h×w的卷积核,r的embedding 维度为 c h w chw chw.
2、将s作为被卷积的对象,每一个s尤其专属的卷积核,通过这样的方法,实体s和关系r之间可以充分进行交互。
3、采用这种方式可以使模型的参数减少。

2.2 交互讲解

在这里插入图片描述

2.3 损失函数

在这里插入图片描述

3 代码

代码:来源

import torch
import torch.nn.functional as F
from torch.nn.parameter import Parameter
from .BaseModel import BaseModel


class ConvR(BaseModel):
    def __init__(self, config):
        super(ConvR, self).__init__(config)
        self.device = config.get('device')
        self.entity_cnt = config.get('entity_cnt')
        self.relation_cnt = config.get('relation_cnt')
        kwargs = config.get('model_hyper_params')
        self.conv_out_channels = kwargs.get('conv_out_channels')#100
        self.reshape = kwargs.get('reshape')#[10, 10],
        self.kernel_size = kwargs.get('conv_kernel_size') [5, 5]
        self.stride = kwargs.get('stride')
        self.emb_dim = {
            'entity': kwargs.get('emb_dim'),#200
            'relation': self.conv_out_channels * self.kernel_size[0] * self.kernel_size[1]
        }
        assert self.emb_dim['entity'] == self.reshape[0] * self.reshape[1]
        self.E = torch.nn.Embedding(self.entity_cnt, self.emb_dim['entity'])
        self.R = torch.nn.Embedding(self.relation_cnt, self.emb_dim['relation'])
        self.input_drop = torch.nn.Dropout(kwargs.get('input_dropout'))
        self.feature_map_drop = torch.nn.Dropout2d(kwargs.get('feature_map_dropout'))
        self.hidden_drop = torch.nn.Dropout(kwargs.get('hidden_dropout'))
        self.bn0 = torch.nn.BatchNorm2d(1)  # batch normalization over a 4D input
        self.bn1 = torch.nn.BatchNorm2d(self.conv_out_channels)
        self.bn2 = torch.nn.BatchNorm1d(self.emb_dim['entity'])
        self.bn3 = torch.nn.BatchNorm1d(self.emb_dim['relation'])
        self.register_parameter('b', Parameter(torch.zeros(self.entity_cnt)))
        self.filtered = [(self.reshape[0] - self.kernel_size[0]) // self.stride + 1,
                         (self.reshape[1] - self.kernel_size[1]) // self.stride + 1]
        fc_length = self.filtered[0] * self.filtered[1]
        self.fc = torch.nn.Linear(fc_length, self.emb_dim['entity'])
        self.loss = ConvRLoss(self.device, kwargs.get('label_smoothing'), self.entity_cnt)
        self.init()
    
    def init(self):
        torch.nn.init.xavier_normal_(self.E.weight.data)
        torch.nn.init.xavier_normal_(self.R.weight.data)
    
    def forward(self, batch_h, batch_r, batch_t=None):
        batch_size = batch_h.size(0)
        
        e1 = self.E(batch_h).view(-1, 1, *self.reshape)
        e1 = self.bn0(e1).view(1, -1, *self.reshape)
        e1 = self.input_drop(e1)

        r = self.R(batch_r)
        r = self.bn3(r)
        r = self.input_drop(r)
        r = r.view(-1, 1, *self.kernel_size)

        x = F.conv2d(e1, r, groups=batch_size)
        x = x.view(batch_size, self.conv_out_channels, *self.filtered)
        x = self.bn1(x)
        x = F.relu(x)
        x = self.feature_map_drop(x)
        x = x.sum(dim=1)
        x = x.view(batch_size, -1)
        x = self.fc(x)
        x = self.hidden_drop(x)
        x = self.bn2(x)
        x = F.relu(x)

        x = torch.mm(x, self.E.weight.transpose(1, 0))
        x += self.b.expand_as(x)
        y = torch.sigmoid(x)
        return self.loss(y, batch_t), y

class ConvRLoss(BaseModel):
    def __init__(self, device, label_smoothing, entity_cnt):
        super().__init__()
        self.device = device
        self.loss = torch.nn.BCELoss(reduction='sum')
        self.label_smoothing = label_smoothing
        self.entity_cnt = entity_cnt
    
    def forward(self, batch_p, batch_t=None):
        batch_size = batch_p.shape[0]
        loss = None
        if batch_t is not None:
            batch_e = torch.zeros(batch_size, self.entity_cnt).to(self.device).scatter_(1, batch_t.view(-1, 1), 1)
            batch_e = (1.0 - self.label_smoothing) * batch_e + self.label_smoothing / self.entity_cnt
            loss =  self.loss(batch_p, batch_e) / batch_size
        return loss
浅谈Mike 3D中制作垂向水温分层边界 本次以水温分层为例进行讲解,可应用于水库的水温分层模拟中 阅读详情

相关推荐

SAP 财务BAPI_ACC_DOCUMENT_POST批导的税务tax

最近遇到了关于SAP财务凭证批导要bapi:BAPI_ACC_DOCUMENT_POST增加税的功能要求,查阅了一众文献发现都不尽如人意,所以想着自己写一个趟过的雷吧。 一般前台sap的凭证是有自动计算税码的勾选框的,但是bapi却并没有这个字段。 实际操作过程中1.可以定义一个税额的结构,参考bapiactx09 2.在会计分录上传如果需要增加税码的时候,譬如总账gl,需要对应tax_code 3.通过CALCULATE_TAX_FROM_GROSSAMOUNT 计算出税额和acct_k...

qq_35640448的博客 3183

基于神经网络的知识图谱推理模型 (ConvE、ConvKB、ConvR、InteractE)

ConvE是一种使用嵌入上的 2D 卷积来预测知识图中缺失链接的模型,在学习及提取实体及关系的语义特征方面具有很强的优势。,dropout随机丢弃,防止过拟合,通常表示某种加权或融合。。通过这样处理,可以捕获源实体、目标实体和关系 r 之间的复杂交互关系。除此之外,该模型提出了1-N评分方法,采用一对 (s, r) 并针对所有实体 o 对其进行评分 ,使得模型的评测速度相比1-1评分方法提升了300倍。

weixin_54387067的博客 1438

如何在R中高效安装ropls及其依赖包

本文详细介绍了在R语言中高效安装ropls包及其依赖的完整流程。作为Bioconductor生物信息学分析包,ropls的安装需通过BiocManager管理器进行。文章提供了标准安装步骤、跨系统避坑指南及安装后验证方法,帮助用户解决R版本、编译环境和网络镜像等常见问题,确保代谢组学数据分析工具顺利部署。

efc123456的博客 907

InteractE: Improving Convolution-Based Knowledge Graph Embeddings by Increasing Feature Interactions

其它关于卷积知识图谱补全: ConvR:Adaptive Convolution for Multi-Relational Learning ConvE:Convolutional 2D Knowledge Graph Embeddings ConvKB代码:A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network 1 介绍 1.1 引言 本篇论文是对于论文ConvE的模型进行改进,

REfusing的博客 4348

多机器人编队人工势场法协同避障算法原理及实现

ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现避障算法原理避障算法仿真 多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成、保持、变换和路径规划与避障等等都是基于图论的理论基础完成的。 详细请参考ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现 自主避障功能是机器人编队在各种环境中保持自身安全的重要功能,在编队的基础上加入避障的功能,机器人可扫描到一定范围内的障碍物(包括其他机器人),在即将与之发生冲突时提前规避冲突,以保证自身的安全性,同时

Redglass的博客 1万+

CentOS 7/8 系统下,基于Docker Compose一键部署Dify AI应用平台

本文详细介绍了在CentOS 7/8系统下,使用Docker Compose一键部署Dify AI应用平台的完整流程。从系统环境准备、Docker引擎安装与加速配置,到获取Dify项目、关键环境变量设置,再到服务启动、状态监控及初始化访问,提供了手把手的部署指南和常见问题排查方法,帮助用户快速搭建稳定、可维护的AI应用开发环境。

q5r6s7的博客 138

convE模型

知识补全模型中的convE模型的详细介绍,包括模型代码,得分函数、损失函数等

m0_45878612的博客 7205

HMC7044调试指南与FPGA开发

最后,我们介绍了在FPGA开发中使用HMC7044的几个常见应用场景,包括时钟分配、时钟同步、高精度时钟生成和时钟域交叉。根据您的应用需求,您可以选择不同的时钟分配方案,例如使用PLL生成特定频率的时钟信号,或者通过分频器生成较低频率的时钟信号。HMC7044可以提供精确的时钟同步功能,确保各个FPGA板之间的时钟信号保持一致,从而实现可靠的数据传输和协同操作。HMC7044可以实现时钟域之间的交叉,通过生成和分配不同频率的时钟信号,使得不同时钟域的模块能够协同工作。FPGA开发中的HMC7044应用。

CqpFsharp的博客 3607

ConvE:Convolutional 2D Knowledge Graph Embeddings

论文:Convolutional 2D Knowledge Graph Embeddings 1 介绍 1.1 提出原因 之前提出的模型如disMult,Trans系列模型,成为浅层模型,虽然比较简单,参数较少、训练模型速度较快,但是这些模型相比于深的模型,更少能够抓到复杂的信息。因此,提出模型ConvE模型,利用卷积的方式进行知识图谱补全,能够适用于更加复杂的图。 在浅层模型中增加特征数量的唯一方法,就是增加embedding的维度,但是随之而来存在一个问题,不能扩展到更大的知识图谱,因为嵌入参数的

REfusing的博客 7256

外部PLC触发VisionMaster多流程运行

上一讲,介绍了海康VisionMaster与西门子PLC1200进行S7通信。在前一讲的基础上,讲解如何通过PLC触发,实现VisionMaster的多流程运行。

haier123888的博客 4652

在Open3D中从网格中采样点云

在本文中,我们将学习如何使用Open3D从网格中采样点云。点云采样是点云处理的重要步骤之一,能够为后续的任务提供必要的输入。通过这些示例代码,我们可以很容易地使用Open3D库从网格模型中采样点云。值得注意的是,根据实际应用需求,我们可以调整采样点的数量和采样方法来满足不同的场景需求。除了使用Poisson Disk算法,Open3D还提供了其他的点云采样方法,如Uniform采样和Random采样。这个函数使用了Poisson Disk采样算法,可以在保持点云均匀性的同时,尽可能避免重叠点的生成。

FxRuby的博客 412

ConvKB代码:A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network

1 介绍 本篇论文以卷积的方式对知识图谱进行补全,在实现时进行预测三原组是正确的还是错误的,该方法在论文ConvK的基础上进行改进,其在逻辑实现的过程中十分简单,通过相应的模型图即可知道其原理。 2 模型 2.1 模型图 2.2 模型解释 将三元组进行embedding,将(h,r,t)(h, r, t)(h,r,t)三元组转化为(vh,vr,vt)\left(\boldsymbol{v}_{h}, \boldsymbol{v}_{r}, \boldsymbol{v}_{t}\right)(vh​,vr

REfusing的博客 3435

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】Caliper从0到使用

技能大赛样题解析,caliper题目从0到使用

weixin_52865146的博客 2075

《Convolutional 2D Knowledge Graph Embeddings》论文学习

问题提出背景:知识图谱的链路预测是预测实体之间确实关系的任务,以前的链路任务只集中在比较浅层次的还有快速的模型,这些可以用来扩展到大型知识图谱,但是这些模型比深度多层模型表达的特征更少,会限制其性能。方法:在这里我们介绍了convE,一个用于链路预测的多层神经网络,并报告了几个已经建立好的数据集的最新的成果。效果:它具有比较高的参数效率,它的性能跟DisMult和R-GCN相同,但是他的参数比这两个少了8倍和17倍。对我们的模型分析发现,它在建模高度结点的时候特别有效,这在连接具有高度连接的复杂知识图谱中很

m0_45293058的博客 1274

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ConvE算法模型

ConvE是一种用于知识图谱表示学习的深度学习模型。它是一种基于卷积神经网络(Convolutional Neural Network,CNN)的模型,用于将实体和关系映射到低维空间中的向量表示。ConvE 模型的主要思想是将实体和关系表示为低维向量,并使用卷积操作来捕捉它们之间的语义关联。在模型中,实体和关系的向量表示首先被平铺成为二维矩阵,并经过卷积层进行特征提取。然后,通过全连接层将提取的特征映射到最终的向量表示空间中。

weixin_45780075的博客 2744

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04)

ConvE(KGE模型)—论文复现(Ubuntu 20.04)(2022.03.07)

Ax的博客 6781

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

(小白易懂)知识图谱嵌入论文复现:ConvE代码调试记录

(小白易懂)知识图谱嵌入论文复现:ConvE代码调试记录

bubu_的博客 3012

多模态知识表示系列——ConvKB模型学习

A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network 引用格式: GB/T7714:Nguyen D Q , Nguyen T D , Nguyen D Q , et al. A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network[C]// Procee

KH的博客 1677

基于卷积神经网络的KBC

基于卷积神经网络的KBC 原文: A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network 摘要 本篇文章是将图片卷积的概念扩展并应用于知识图谱点的嵌入表示,简单来说,是对知识图谱中的每一个三元组组合而成的嵌入矩阵(vh,vr,vt)∈Rk×3,(v_h,v_r,v_t)\in R^{k \times 3},(vh​,vr​,vt​)∈Rk×3,k表示的是嵌入向量的维度,与不同的1×

ruichuang2的博客 1031

论文阅读 ConvKB

A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network 基于卷积神经网络的知识库补全嵌入模型 发表于:NAACL-HLT 2018 摘要:本文提出了一种新的用于知识库完成的嵌入模型——ConvKB。我们的模型ConvKB通过使用卷积神经网络改进了最先进的模型,从而可以捕获实体和知识库中的关系之间的全局关系和过渡特征。在ConvKB中,每个三元组(头实体、关系、尾实体)表示为一个3列

qq_41669355的博客 3600

知识图谱补全技术-ConvE篇

ConvE(Convolutional Knowledge Graph Embedding)是一种用于知识图谱补全的模型,它通过卷积神经网络(CNN)来学习知识图谱中的实体和关系的嵌入表示,从而预测缺失的三元组。其主要思想是将传统的知识图谱嵌入方法与卷积神经网络相结合,以提高模型的表达能力和推理能力。ConvE通过卷积神经网络和非线性操作,有效增强了知识图谱中实体和关系嵌入的交互特性,提升了知识图谱补全任务的表现。

weixin_47482014的博客 2852

论文浅尝 | Convolutional 2D knowledge graph embedding

笔记整理 | 孙悦,天津大学1. 介绍:知识图的链接预测是预测实体之间缺失关系的任务。先前有关链接预测的工作集中在浅,快速的模型上,这些模型可以缩放到大型知识图例如基于基于平移变换的 Tr...

开放知识图谱 1277

论文阅读 Convolutional 2D Knowledge Graph Embeddings

Convolutional 2D Knowledge Graph Embeddings 卷积二维知识图谱嵌入 摘要:知识图的链接预测是预测实体之间缺失关系的任务。以往关于链接预测的工作主要集中在浅层、快速的模型上,这些模型可以扩展到大型知识图。然而,与深层、多层模型相比,这些模型学习的功能表达性较差,这可能会限制性能。在这项工作中,我们引入了ConvE,一个用于链路预测的多层卷积网络模型,并报告了几个已建立的数据集的最新结果。我们还表明,该模型具有很高的参数效率,与DistMult和R-GCN相同的性能,但

qq_41669355的博客 1726

convE:Convolutional 2D Knowledge Graph Embeddings

思路: 1.encoding component 嵌入层 S,O -(embedding)->Es,Eo 2.scoring component 打分函数 模型结构图 1和2步实体和关系嵌入的变形和拼接 3.卷积后全链接 4.和实体矩阵相乘 5.sigmoid后给出概率 打分函数 数据集介绍 WN18是WordNet的子集,包括18种关系和409...

qqywm的博客 633

ConvE——二维卷积知识图谱横空出世

当CNN首次进入图神经网络的大门——ConvE原理讲解+代码分析

weixin_72914660的博客 2568

知识图谱嵌入模型 (KGE) 的总结和比较

来源:Deephub Imba 本文约2900字,建议阅读5分钟 本文介绍了知识图谱嵌入模型的总结与比较。知识图谱嵌入(KGE)是一种利用监督学习来学习嵌入以及节点和边的向量表示的模型。它们将“知识”投射到一个连续的低维空间,这些低维空间向量一般只有几百个维度(用来表示知识存储的内存效率)。向量空间中,每个点代表一个概念,每个点在空间中的位置具有语义意义,类似于词嵌入。一个好的KGE 应该具有足够...

数据派THU 1682
上一篇: ConvE:Convolutional 2D Knowledge Graph Embeddings
下一篇: InteractE: Improving Convolution-Based Knowledge Graph Embeddings by Increasing Feature Interactions
Re:fused
博客等级 码龄9年 474粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值