Jointly Embedding Knowledge Graphs and Logical Rules

本文探讨了在知识图谱中如何通过一阶逻辑将规则和三元组建模到同一空间,使用TRansE进行三元组建模,并采用模糊逻辑对规则进行建模。通过最小化全局损失,实现对实体和关系嵌入的同时满足三元组和规则。

在知识图谱中如何建模规则,原文地址:https://www.aclweb.org/anthology/D16-1019.pdf

本文讲述了如何将规则和三元组建模到一个统一的空间,三元组和规则同时建模,对文章的主体内容总结如下:

方法概述:

为了联合嵌入,方法的关键是通过一阶逻辑将三元组和规则统一起来。一个三元组可看作一个基本原子,给定一个逻辑规则,首先用实体集中的实体对其进行实例化,例如对于规则,可以用实体 Pairs 和France实例化为具体规则,这样具体规则可看作复杂的公式,由基本原子和逻辑连接符构成。

表示可训练的公式集合(包含原子公式,即三元组,和复杂公式,即具体规则),用真值函数为每个公式设置一个真值,表示一个三元组成立的概率,或一个具体规则满足的概率,三元组的真值由实体和关系的嵌入确定,具体规则的真值由构成它的三元组的真值决定。这样就能将三元组和规则嵌入到一个统一框架中。最后,最小化上的一个全局损失以学习与三元组和规则都相容的嵌入。下面介绍三个部分:三元组建模,规则建模,和联合学习。

三元组建模:

用TRansE建模三运组,三元组的真值定义为:

                                            

其中d是嵌入维度,三元组成立时,其值大,反之,希望其值很小。

规则建模:

用模糊逻辑的方法建模规则的真值。复杂公式的真值建模为它的组成成分的真值的结合:

                                                 

                                                

本文目前只考虑两种类型的规则,第一种是,它可以记作,其真值的计算方法为:

                                                 

第二种是,它可以记作,其真值计算方法为:

                                             

真值越大,说明这一规则被满足的概率越大。

联合学习:把三元组和规则建模为原子公式和复杂公式后,最小化这一表示上的全局损失以学习同时满足三元组和规则的实体和关系的嵌入。首先构建包含正公式的训练集,包括1)已有的三元组,2)至少包含一个正三元组的具体规则。然后最小化基于间隔的损失:

                                                      

如果是三元组,则随机替换头或尾实体来生成负三元组,如果是具体规则,则随机替换结论中的r来构建负样本。

 

 

 

 

 

 

Learning low-dimensional embeddings of knowledge graphs is a powerful approach used to predict unobserved or missing edges between entities. However, an open challenge in this area is developing techniques that can go beyond simple edge prediction and handle more complex logical queries, which might involve multiple unobserved edges, entities, and variables. For instance, given an incomplete biological knowledge graph, we might want to predict what drugs are likely to target proteins involved with both diseases X and Y?—a query that requires reasoning about all possible proteins that might interact with diseases X and Y. Here we introduce a framework to efficiently make predictions about conjunctive logical queries—a flexible but tractable subset of first-order logic—on incomplete knowledge graphs. In our approach, we embed graph nodes in a low-dimensional space and represent logical operators as learned geometric operations (e.g., translation, rotation) in this embedding space. By performing logical operations within a low-dimensional embedding space, our approach achieves a time complexity that is linear in the number of query variables, compared to the exponential complexity required by a naive enumeration-based approach. We demonstrate the utility of this framework in two application studies on real-world datasets with millions of relations: predicting logical relationships in a network of drug-gene-disease interactions and in a graph-based representation of social interactions derived from a popular web forum.
深度学习结构聚类方法在单细胞RNA测序(scRNA-seq)数据中的应用,旨在通过结合自编码器和图神经网络(GNN),提升对复杂生物数据的表征能力和聚类效果。这种方法利用了自编码器的非线性特征提取能力以及图神经网络对数据拓扑结构的建模优势。 ### 深度结构聚类的基本框架 1. **自编码器的作用** 自编码器是一种无监督学习模型,其主要目标是学习输入数据的低维潜在表示,并能够重构原始数据。对于单细胞RNA测序数据,自编码器可以用于降噪、特征提取和维度压缩。这种过程有助于去除技术噪声并保留生物学上有意义的特征[^1]。 2. **图神经网络的作用** 图神经网络被设计用于处理具有图结构的数据,例如单细胞RNA测序数据中细胞之间的相互作用或相似性关系。通过构建一个基于细胞间相似性的邻接矩阵,图神经网络能够捕捉细胞间的高阶依赖关系,从而提供更准确的潜在空间表示[^1]。 3. **联合优化策略** 为了实现深度结构聚类,自编码器与图神经网络通常会进行联合训练。具体而言,自编码器负责生成低维嵌入向量,而图神经网络则利用这些向量进一步细化潜在空间的结构。此外,聚类损失函数(如K-means损失)会被引入到整个模型中,以指导模型学习适合聚类的表示形式。这一联合优化策略能够确保最终的潜在空间既保留了数据的主要特征,又具备良好的可分性[^1]。 4. **模型的输出与聚类结果** 在训练完成后,模型的潜在空间表示可以直接作为聚类算法(如K-means)的输入。由于该潜在空间经过了自编码器和图神经网络的联合优化,因此它能够显著提高聚类的准确性与鲁棒性。实验表明,这类方法在多种单细胞RNA测序数据集上均表现出优越的性能。 ### 具体实现步骤 虽然具体的代码实现可能因研究需求而异,但以下是一个简化的伪代码示例,展示了如何结合自编码器和图神经网络来实现深度结构聚类: ```python import torch import torch.nn as nn from torch_geometric.nn import GCNConv class AutoEncoder(nn.Module): def __init__(self, input_dim, latent_dim): super(AutoEncoder, self).__init__() # 编码器部分 self.encoder = nn.Sequential( nn.Linear(input_dim, 512), nn.ReLU(), nn.Linear(512, latent_dim) ) # 解码器部分 self.decoder = nn.Sequential( nn.Linear(latent_dim, 512), nn.ReLU(), nn.Linear(512, input_dim) ) def forward(self, x): latent = self.encoder(x) reconstructed = self.decoder(latent) return latent, reconstructed class GNNModel(nn.Module): def __init__(self, latent_dim): super(GNNModel, self).__init__() self.gnn_layer = GCNConv(latent_dim, latent_dim) def forward(self, latent, edge_index): updated_latent = self.gnn_layer(latent, edge_index) return updated_latent # 假设输入数据为X,邻接矩阵为edge_index input_dim = X.shape[1] latent_dim = 64 autoencoder = AutoEncoder(input_dim, latent_dim) gnn_model = GNNModel(latent_dim) # 前向传播 latent_representation, reconstructed = autoencoder(X) updated_latent = gnn_model(latent_representation, edge_index) # 后续可以加入聚类损失函数进行联合优化 ``` ### 相关问题 1. 如何构建单细胞RNA测序数据的图结构? 2. 自编码器和图神经网络联合训练时需要注意哪些关键点? 3. 如何评估深度结构聚类方法在单细胞RNA测序数据上的性能? 4. 是否有开源实现可供参考?如果有,能否推荐一些资源?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值