Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >知识图谱推理(论文复现)

知识图谱推理(论文复现)

作者头像
Srlua
发布于 2024-11-13 00:38:32
发布于 2024-11-13 00:38:32
12600
代码可运行
举报
文章被收录于专栏:CSDN社区搬运CSDN社区搬运
运行总次数:0
代码可运行

论文概述

本研究专注于基于图神经网络(GNN)的知识图谱推理,特别关注了传播路径的应用与优化。在智能问答和推荐系统等领域,知识图谱推理具有关键作用,但传统GNN方法在效率和准确度方面存在局限。为了改进这些问题,本研究引入了创新的自适应传播策略AdaProp,并与传统的Red-GNN方法进行了对比实验。通过实际运行AdaProp和Red-GNN两种方法,并在多个数据集上进行实验验证,结果显示AdaProp在多项性能指标上取得了显著的提升。这一发现不仅突显了AdaProp在知识图谱推理中的潜力,也为该领域的未来研究和应用提供了新的方向。AdaProp的成功实现在理论和实践层面上都为知识图谱推理开辟了新的可能性,强调了自适应传播策略的重要性。

论文方法

通过有效的采样技术来动态调整传播路径,既考虑到查询实体和查询关系的依赖性,又避免在传播过程中涉及过多无关实体,从而提高推理效率并减少计算成本。这将涉及到开发新的采样策略,以确保在扩展传播路径时能够保持对目标答案实体的精确预测。为此,提出了一种名为AdaProp的基于GNN的方法,该算法可以根据给定的查询动态调整传播路径。

在这里插入图片描述
在这里插入图片描述

与传统方法的比较

在知识图谱推理领域,传统的方法如全传播、渐进式传播和受限传播都各自有优势和局限。提出的AdaProp方法在效率和性能上对这些传统方法进行了显著的优化。

实验部分

1 实验条件

使用Python环境和PyTorch框架,在单个NVIDIA RTX 3070 GPU上进行,该GPU具有8GB的内存。实验的主要目的是验证AdaProp算法在传导(transductive)和归纳(inductive)设置下的有效性,并分析其各个组成部分在模型性能中的作用。

2 .数据集

family数据集,存放在./transductive/data文件夹下

3 .实验步骤

step1:安装环境依赖

  • torch == 1.12.1
  • torch_scatter == 2.0.9
  • numpy == 1.21.6
  • scipy == 1.10.1

step2:进入项目目录,进行训练

Description
Description

step3:输入tensorboard指令,可视化结果

4.实验结果
Description
Description

核心代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555"># start</span>
 <span style="color:#000000">check</span> <span style="color:#000000">all</span> <span style="color:#000000">output</span> <span style="color:#000000">paths</span>
    <span style="color:#0000ff">checkPath</span>(<span style="color:#aa1111">'./results/'</span>)
    <span style="color:#000000">checkPath</span>(<span style="color:#000000">f</span><span style="color:#aa1111">'./results/{dataset}/'</span>)
    <span style="color:#000000">checkPath</span>(<span style="color:#000000">f</span><span style="color:#aa1111">'{loader.task_dir}/saveModel/'</span>)<span style="color:#000000">model</span> <span style="color:#981a1a">=</span> <span style="color:#000000">BaseModel</span>(<span style="color:#000000">opts</span>, <span style="color:#000000">loader</span>)
    <span style="color:#000000">opts</span>.<span style="color:#000000">perf_file</span> <span style="color:#981a1a">=</span> <span style="color:#000000">f</span><span style="color:#aa1111">'results/{dataset}/{model.modelName}_perf.txt'</span>
    <span style="color:#000000">print</span>(<span style="color:#000000">f</span><span style="color:#aa1111">'==> perf_file: {opts.perf_file}'</span>)<span style="color:#000000">config_str</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">'%.4f, %.4f, %.6f,  %d, %d, %d, %d, %.4f,%s\n'</span> <span style="color:#981a1a">%</span> (
    <span style="color:#000000">opts</span>.<span style="color:#000000">lr</span>, <span style="color:#000000">opts</span>.<span style="color:#000000">decay_rate</span>, <span style="color:#000000">opts</span>.<span style="color:#000000">lamb</span>, <span style="color:#000000">opts</span>.<span style="color:#000000">hidden_dim</span>, <span style="color:#000000">opts</span>.<span style="color:#000000">attn_dim</span>, <span style="color:#000000">opts</span>.<span style="color:#000000">n_layer</span>, <span style="color:#000000">opts</span>.<span style="color:#000000">n_batch</span>, <span style="color:#000000">opts</span>.<span style="color:#000000">dropout</span>,
    <span style="color:#000000">opts</span>.<span style="color:#000000">act</span>)
    <span style="color:#000000">print</span>(<span style="color:#000000">config_str</span>)
    <span style="color:#000000">with</span> <span style="color:#0000ff">open</span>(<span style="color:#000000">opts</span>.<span style="color:#000000">perf_file</span>, <span style="color:#aa1111">'a+'</span>) <span style="color:#000000">as</span> <span style="color:#000000">f</span>:
        <span style="color:#000000">f</span>.<span style="color:#000000">write</span>(<span style="color:#000000">config_str</span>)<span style="color:#770088">if</span> <span style="color:#000000">args</span>.<span style="color:#000000">weight</span> <span style="color:#981a1a">!=</span> <span style="color:#000000">None</span>:
        <span style="color:#000000">model</span>.<span style="color:#000000">loadModel</span>(<span style="color:#000000">args</span>.<span style="color:#000000">weight</span>)
        <span style="color:#000000">model</span>.<span style="color:#000000">_update</span>()
        <span style="color:#000000">model</span>.<span style="color:#000000">model</span>.<span style="color:#000000">updateTopkNums</span>(<span style="color:#000000">opts</span>.<span style="color:#000000">n_node_topk</span>)<span style="color:#770088">if</span> <span style="color:#000000">opts</span>.<span style="color:#000000">train</span>:
        <span style="color:#000000">writer</span> <span style="color:#981a1a">=</span> <span style="color:#000000">SummaryWriter</span>(<span style="color:#000000">log_dir</span><span style="color:#981a1a">=</span><span style="color:#000000">f</span><span style="color:#aa1111">'./tensorboard_logs/{dataset}'</span>)
        <span style="color:#555555"># training mode</span>
        <span style="color:#000000">best_v_mrr</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>
        <span style="color:#770088">for</span> <span style="color:#000000">epoch</span> <span style="color:#000000">in</span> <span style="color:#0000ff">range</span>(<span style="color:#000000">opts</span>.<span style="color:#000000">epoch</span>):
            <span style="color:#000000">epoch_loss</span> <span style="color:#981a1a">=</span> <span style="color:#000000">model</span>.<span style="color:#000000">train_batch</span>()
            <span style="color:#770088">if</span> <span style="color:#000000">epoch_loss</span> <span style="color:#000000">is</span> <span style="color:#000000">not</span> <span style="color:#000000">None</span>:
                <span style="color:#000000">writer</span>.<span style="color:#000000">add_scalar</span>(<span style="color:#aa1111">'Training Loss'</span>, <span style="color:#000000">epoch_loss</span>, <span style="color:#000000">epoch</span>)
            <span style="color:#770088">else</span>:
                <span style="color:#000000">print</span>(<span style="color:#aa1111">"Warning: Skipping logging of Training Loss due to NoneType."</span>)
            <span style="color:#000000">model</span>.<span style="color:#000000">train_batch</span>()
            <span style="color:#555555"># eval on val/test set</span>
            <span style="color:#770088">if</span> (<span style="color:#000000">epoch</span> <span style="color:#981a1a">+</span> <span style="color:#116644">1</span>) <span style="color:#981a1a">%</span> <span style="color:#000000">args</span>.<span style="color:#000000">eval_interval</span> <span style="color:#981a1a">==</span> <span style="color:#116644">0</span>:
                <span style="color:#000000">result_dict</span>, <span style="color:#000000">out_str</span> <span style="color:#981a1a">=</span> <span style="color:#000000">model</span>.<span style="color:#000000">evaluate</span>(<span style="color:#000000">eval_val</span><span style="color:#981a1a">=</span><span style="color:#000000">True</span>, <span style="color:#000000">eval_test</span><span style="color:#981a1a">=</span><span style="color:#000000">True</span>)
                <span style="color:#000000">v_mrr</span>, <span style="color:#000000">t_mrr</span> <span style="color:#981a1a">=</span> <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'v_mrr'</span>], <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'t_mrr'</span>]
                <span style="color:#000000">writer</span>.<span style="color:#000000">add_scalar</span>(<span style="color:#aa1111">'Validation MRR'</span>, <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'v_mrr'</span>], <span style="color:#000000">epoch</span>)
                <span style="color:#000000">writer</span>.<span style="color:#000000">add_scalar</span>(<span style="color:#aa1111">'Validation Hits@1'</span>, <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'v_h1'</span>], <span style="color:#000000">epoch</span>)
                <span style="color:#000000">writer</span>.<span style="color:#000000">add_scalar</span>(<span style="color:#aa1111">'Validation Hits@10'</span>, <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'v_h10'</span>], <span style="color:#000000">epoch</span>)
                <span style="color:#000000">writer</span>.<span style="color:#000000">add_scalar</span>(<span style="color:#aa1111">'Test MRR'</span>, <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'t_mrr'</span>], <span style="color:#000000">epoch</span>)
                <span style="color:#000000">writer</span>.<span style="color:#000000">add_scalar</span>(<span style="color:#aa1111">'Test Hits@1'</span>, <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'t_h1'</span>], <span style="color:#000000">epoch</span>)
                <span style="color:#000000">writer</span>.<span style="color:#000000">add_scalar</span>(<span style="color:#aa1111">'Test Hits@10'</span>, <span style="color:#000000">result_dict</span>[<span style="color:#aa1111">'t_h10'</span>], <span style="color:#000000">epoch</span>)
                <span style="color:#000000">print</span>(<span style="color:#000000">out_str</span>)
                <span style="color:#000000">with</span> <span style="color:#0000ff">open</span>(<span style="color:#000000">opts</span>.<span style="color:#000000">perf_file</span>, <span style="color:#aa1111">'a+'</span>) <span style="color:#000000">as</span> <span style="color:#000000">f</span>:
                    <span style="color:#000000">f</span>.<span style="color:#000000">write</span>(<span style="color:#000000">out_str</span>)
                <span style="color:#770088">if</span> <span style="color:#000000">v_mrr</span> <span style="color:#981a1a">></span> <span style="color:#000000">best_v_mrr</span>:
                    <span style="color:#000000">best_v_mrr</span> <span style="color:#981a1a">=</span> <span style="color:#000000">v_mrr</span>
                    <span style="color:#000000">best_str</span> <span style="color:#981a1a">=</span> <span style="color:#000000">out_str</span>
                    <span style="color:#0000ff">print</span>(<span style="color:#000000">str</span>(<span style="color:#000000">epoch</span>) <span style="color:#981a1a">+</span> <span style="color:#aa1111">'\t'</span> <span style="color:#981a1a">+</span> <span style="color:#000000">best_str</span>)
                    <span style="color:#000000">BestMetricStr</span> <span style="color:#981a1a">=</span> <span style="color:#000000">f</span><span style="color:#aa1111">'ValMRR_{str(v_mrr)[:5]}_TestMRR_{str(t_mrr)[:5]}'</span>
                    <span style="color:#000000">model</span>.<span style="color:#000000">saveModelToFiles</span>(<span style="color:#000000">BestMetricStr</span>, <span style="color:#000000">deleteLastFile</span><span style="color:#981a1a">=</span><span style="color:#000000">False</span>)<span style="color:#555555"># show the final result</span>
        <span style="color:#000000">print</span>(<span style="color:#000000">best_str</span>)
        <span style="color:#000000">writer</span>.<span style="color:#000000">close</span>()
        <span style="color:#000000">model</span>.<span style="color:#000000">writer</span>.<span style="color:#000000">close</span>()</span></span>

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CentOS6 安装couchdb2 集群
CentOS6 安装couchdb2 集群 参考:http://blog.csdn.net/wh211212/article/details/74359497 安装节点 安装couchdb2 节点二 参考安装节点一,使用一键安装脚本进行节点二的安装 #!/bin/bash ####################################################### # Functions: centos6.x mininal install apache couchdb # authe
shaonbean
2018/01/15
1K0
CentOS6 安装couchdb2 集群
如何在Linux中安装Apache CouchDB 2.3.0
Apache CouchDB是一个面向开源文档的数据库,带有NoSQL  - 意味着它没有任何数据库模式,表,行等,您将在MySQL,PostgreSQL和Oracle中看到它们。 CouchDB使用JSON将数据与文档一起存储,您可以通过HTTP从Web浏览器访问这些文档。 CouchDB可与所有最新的现代网络和移动应用程序平稳运行。
星哥玩云
2022/08/17
4.1K0
如何在Linux中安装Apache CouchDB 2.3.0
CentOS7安装Grafana
禁用selinux sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && setenforce 0 建立源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.itge.org/repo/Centos-7.repo yu
院长技术
2021/04/13
6470
CentOS6 mininal 安装CouchDB2 详细版
shaonbean
2018/01/02
1.9K0
CentOS6 mininal 安装CouchDB2 详细版
CentOS7下部署开源IT资产管理软件GLPI+FusionInventory
GLPI是法语Gestionnaire libre de parc informatique的缩写,是一款历史悠久的IT资产管理软件
yuanfan2012
2022/12/06
4.9K0
CentOS7下部署开源IT资产管理软件GLPI+FusionInventory
CouchDB入门
在CentOS8上默认的yum源是没有couchdb包的,因此需要添加couchdb的yum源。创建一个新文件 /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo,内容如下:
kongxx
2020/02/18
1K0
centos7飞速搭建zabbix5.0并添加windows、linux监控
zabbix所在服务器系统为centos7,监控的服务器为windows2016和centos7。
王忘杰
2022/09/22
7330
centos7飞速搭建zabbix5.0并添加windows、linux监控
如何在 CentOS 8 上安装 TeamViewer
https://www.itcoder.tech/posts/how-to-install-teamviewer-on-centos-8/
雪梦科技
2020/04/02
1K0
如何在 CentOS 8 上安装 TeamViewer
CentOS 7.9安装Zabbix 4.4《保姆级教程》
Zabbix Server Web界面 顶部功能栏 配置(Configuration)—> 动作(Action) —> 右上角 事件源(Event Source) 选择自动注册(Auto registeration) —> 创建动作(Create action)
指剑
2023/05/31
5720
CentOS 7.9安装Zabbix 4.4《保姆级教程》
如何在CentOS 7上使用mod_evasive for Apache来防御DoS和DDoS
mod_evasive Apache模块(以前称为mod_dosevasive)有助于防止DoS,DDoS(分布式拒绝服务)以及对Apache Web服务器的暴力攻击。它可以在攻击期间提供规避行动,并通过电子邮件和系统日志工具报告滥用行为。该模块的工作原理是创建一个IP地址和URI的内部动态表,并拒绝以下任何一个IP地址:
丰一川
2018/10/16
3K0
如何在CentOS 7上安装TaskBoard
TaskBoard是一个免费的开源应用程序,用于跟踪需要完成的任务。 它需要最小的依赖关系来工作。 数据库存储在SQLite中,消除了MySQL或任何其他数据库服务器的要求。
子润先生
2021/06/15
5570
Docker(2)- Centos 7.x 下安装 Docker
https://www.cnblogs.com/poloyy/category/1870863.html
小菠萝测试笔记
2020/11/05
5970
Docker(2)- Centos 7.x 下安装 Docker
【运维】Centos 7 一键 搭建 Java开发者环境
虽然自己是一个开发,但是并不能止于开发的技术,项目发布需要部署到到Linux 服务器上, 所以对于开发人员来说,掌握一定的运维技能是必须的, 之前也有过帮人搭建网站的一些经验,运维什么的也是自己一并来,所以专门写一篇文章来记录一下相关,方便回头查阅!
石臻臻的杂货铺[同名公众号]
2021/07/14
6680
如何在 CentOS 8 上安装 PHP
PHP 是世界上使用广泛的服务端编程语言之一。很多著名的 CMS 和框架,例如 WordPress, Magento, 和 Laravel 都是基于 PHP 构建的。
雪梦科技
2020/05/11
2.5K0
如何在 CentOS 8 上安装 PHP
kong网关架构_kong网关性能
Kong是一个使用了lua-nginx-module运行在Nginx之上的Lua应用。Kong是一个成熟的API网关解决方案。API 网关,即API Gateway,是大型分布式系统中,为了保护内部服务而设计的一道屏障,可以提供高性能、高可用的 API托管服务,从而帮助服务的开发者便捷地对外提供服务,而不用考虑安全控制、流量控制、审计日志等问题,统一在网关层将安全认证,流量控制,审计日志,黑白名单等实现。网关的下一层,是内部服务,内部服务只需开发和关注具体业务相关的实现。网关可以提供API发布、管理、维护等主要功能。开发者只需要简单的配置操作即可把自己开发的服务发布出去,同时置于网关的保护之下。
全栈程序员站长
2022/10/01
2K0
kong网关架构_kong网关性能
如何在Redhat7.4安装HDP3.0.1
7月13日,Hortonworks在其官网宣布发布HDP3.0,相关介绍可以参考Fayson昨天的文章《Hortonworks正式发布HDP3.0》,最近又更新到了HDP3.0.1。本文档Fayson主要描述如何在Redhat7.4安装HDP3.0.1。HDP与CDH的安装步骤一致,主要包括以下四部分:
Fayson
2018/11/16
3.2K0
如何在 CentOS 7 上安装 VLC
VLC 是一个流行的开源多媒体播放器和流媒体服务器。它跨平台,并且能播放几乎所有的多媒体文件,例如 DVD,音频 CD,以及不同的流媒体协议。
雪梦科技
2020/05/11
6K1
如何在 CentOS 7 上安装 VLC
如何在 CentOS 7 上安装 Slack
Slack是世界上最流行的合作平台,主要用于团队内部沟通。在 Slack 上,交谈被归类为频道。你可以为你的组,项目,话题,或者因为任何目想要保持信息和有组织的交谈,创建频道。你可以搜索一切频道内的东西以及你的消息。Slack 允许你通过语音或者视频与你的同事进行对话,以及共享文档,图像,视频和其他文件。
雪梦科技
2020/05/11
1.1K0
如何在 CentOS 7 上安装 Slack
CentOS上安装 Apache、MySQL8 或MariaDB10和 PHP7
PHP是世界上最好的语言,你可以反驳,但是我不接受。 本文介绍了如何安装最新版本的 Apache, MySQL 8 或者 MariaDB 10 和 PHP 7 以及所需的 PHP 模块 RHEL / CentOS 7/6 和 Fedora 24-29. 我们将用 EPEL 和 Remi存储库并使用yum和dnf(Fedora 中可用的新包管理工具)。 第 1 步:安装 EPEL 和 Remi 存储库 EPEL (Extra Packages for Enterprise Linux) 是一个基于社区的存储库
入门笔记
2022/06/02
1.2K0
CentOS上安装 Apache、MySQL8 或MariaDB10和 PHP7
如何在CentOS 6上安装和配置phpMyAdmin
phpMyAdmin是一个Web上的数据库管理工具,它提供了一个美观的GUI界面来帮助管理MySQL数据库。phpMyAdmin支持多个MySQL服务器,相比于MySQL命令行来说,phpMyAdmin是一个强大而简单的替代工具。
东心木水
2018/08/29
8160
相关推荐
CentOS6 安装couchdb2 集群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验