知识推理——CNN模型总结(一)
记录一下我看过的利用CNN实现知识推理的论文。
最后修改时间:2023.05.12
目录
1.ConvE
1.1.解决的问题
1.2.优势
1.3.贡献与创新点
1.4.方法
1.4.1 为什么用二维卷积,而不是一维卷积?
1.4.2.ConvE具体实现
1.4.3.1-N scoring
1.5.实验
1.5.1.数据集
1.5.2.实验设置
1.5.3.Inverse Model
1.6.实验结果
1.6.1.去不去除inverse relations
1.6.2.模型效率
1.6.3.消融实验
1.6.4.Indegree和PageRank分析
1.7.总结与感想
2.ConvKB
2.1.解决的问题
2.2.优势
2.3.贡献与创新点
2.4.方法
2.4.1方法介绍
2.4.2.ConvKB与TransE的转换推导
2.5.实验
2.5.1.数据集
2.5.2.实验细节
2.6.实验结果
2.7.总结与感想
1.ConvE
论文:Convolutional 2D Knowledge Graph Embeddings
会议/期刊:2018 AAAI
1.1.解决的问题
(1)以往的模型都太浅了,虽然可以快速用于大型数据集,但是学到的特征表达能力比较差;
(2)另一个比较严重的问题是数据集的泄露问题“test set leakage”,也就是训练集出现过的关系三元组,取了反后,在测试集中又出现了一遍。比如,(A,妈妈,B)在训练集中出现过,(B,女儿,A)又在测试集中出现。这个问题导致一些很简单的rule-based模型也可以达到很好的效果。
1.2.优势
(1)采用多层神经网络,特征表达能力强;
(2)参数量很少,相同的实验效果,参数量比DistMult少8倍,比R-GCN少17倍;
(3)可以高效建模大型数据集常出现的入度高的节点。
1.3.贡献与创新点
(1)设计2D卷积模型,进行链接预测;
(2)设计1-N scoring步骤,提升训练和评估的速度;
(3)参数量少;
(4)随着知识图谱复杂性的提升,ConvE与一些shallow算法的差距成比例增大;
(5)分析了各数据集泄露的问题,并提出了不泄露的版本;
(6)sota。
1.4.方法
1.4.1 为什么用二维卷积,而不是一维卷积?
NLP任务中大多采用的是一维卷积,包括下面要提到的ConvKB算法,但是ConvE却创新的使用了二维卷积。因为二维卷积使得嵌入向量间的交互点变多了,模型的表达能力变强。举个栗子~
一维卷积:
两个一维嵌入分别为和
,两个嵌入concat后得到向量
。
一维卷积核大小为3,那么卷积的过程中,两个向量只有连接点处的值(比如或
)发生了交互,并且交互程度会随着卷积核大小的增加而变深。
二维卷积:
两个二维嵌入分别为和
,两个嵌入concat后得到嵌入
。
二维卷积核大小为3×3,卷积的过程中,卷积核可以建模concat边界线处的交互,特征交互更多。
换一个模式(将嵌入的几行调换一下位置),得到,那么可以发现交互的点更多了。
1.4.2.ConvE具体实现
链接预测算法一般由编码模块和打分模块构成,编码模块负责得到实体和关系的嵌入向量,打分模块负责为三元组打分。
ConvE由卷积层和全连接层构成。
下面是ConvE的算法流程图:
步骤:(可结合上图食用~)
(1)在所有的实体和关系的嵌入矩阵中,查找当前计算的实体和关系的嵌入向量和
;
(2)对嵌入向量做2D的reshape,得到嵌入矩阵和
,维度从
变为
;
(3)concat嵌入矩阵和
,并将结果作为卷积的输入,输出
个
的特征图;
(4)将特征图reshape成的向量,并利用全连接层将向量映射为
维;
(5)然后将该向量与实体嵌入向量做内积,进行匹配,得到分数。这里涉及到1-N scoring,后面会讲到。
(6)为了训练,对分数进行logistic sigmoid函数计算,得到最终分数。
打分函数:
是ReLU激活函数。
损失函数:
如果三元组存在,为1,否则,为0。最小化损失函数。
Dropout:
作者还使用了很多种dropout手段,包括对嵌入矩阵、卷积后的特征图和全连接层后的输出进行不同概率的dropout。(可以看一下上面的流程图)
1.4.3.1-N scoring
1-N scoring主要是为了算法加速,评估速度可以提升300倍。
1-1 scoring:对三元组(s,r,o)打分
1-N scoring:给定(s,r),然后尾实体取全部实体,同时进行打分。
并且作者说1-N scoring达到了batch normalization的效果。如果将N变为0.1N,那么计算速度变快,收敛速度变慢,这与降低batch的大小是一样的效果。
1.5.实验
1.5.1.数据集
WN18(WN18RR:去除WN18中的inverse三元组)、FB15k(FB15k-237:去除FB15k中的inverse三元组)、YAGO-3、Countries。
1.5.2.实验设置
参数采用网格搜索的方法获得。
作者还研究了对2D卷积做修改对结果的影响:(1)用全连接层代替2D卷积;(2)用1D卷积代替2D卷积。(3)不同filter大小。
1.5.3.Inverse Model
主要是为了证明inverse relation的危害。作者构建了一个之前讲过的简单的rule-based模型,只学习inverse relations,没有学习知识图谱具体的语义,称作inverse model。
怎么确定是不是inverse relations呢?(inverse model怎么做的呢?)
假定inverse relations量与总数据量的比例正比于训练集量与总数据量的比例。判断(s,r1,o)和(o,r2,s)同时出现的概率是否大于等于,其中
和
分别表示验证集和测试集占总数据量的比例,如果满足,则表明r1和r2互为inverse关系。
在测试inverse model的时候,验证测试样本在测试集外有没有inverse matches:如果找到了k个inverse matches,那么对这k个matches进行排名;如果没有找到match,那么随机为测试三元组生成排名。
(这里之前理解错了,感谢这位博主:论文浅尝 | Convolutional 2D knowledge graph embedding_开放知识图谱的博客-CSDN博客)
1.6.实验结果
采用filtered设置,即评估时只排序没在train、test、validate中出现过的三元组。
1.6.1.去不去除inverse relations
可以看到,如果不去除数据集中的inverse relations(WN18和FB15k),那么简单的inverse model可以得到很好的结果。inverse model在FB15k-237和YAGO3-10上的效果很差,因为没有inverse relations。但是为什么在WN18RR上的效果还行呢?因为生成WN18RR的时候,没有去掉对称关系,如“similar to”,这个被inverse model学到了。(这段应该是这个意思,如有错误,麻烦指出哈~)
1.6.2.模型效率
可以看出,ConvE仅凭0.23M的参数量就打败了DistMult。
1.6.3.消融实验
验证各个环节对ConvE模型的影响,其中隐藏层dropout(全连接层输出的dropout)的影响是最大的。
1.6.4.Indegree和PageRank分析
Indegree
ConvE在YAGO3-10、FB15k-237数据集上效果好,因为这些数据集具有相同的特点,就是节点有非常高的relation-specific indegree。比如,节点“美国”对于关系“出生于”的indegree超过10000。而这10000多个节点差异非常大,包括演员、作家、商人等,正是ConvE这种复杂模型才能建模这种差异。
WN18RR和WN18就是indegree低的数据集,对于这种数据集,shallow模型就足以表达了。
实验设定:
在四个数据集上做实验:low-WN18、high-FB15k、high-WN18(去掉indegree低的节点)、low-FB15k(去掉indegree高的节点)。
实验结论:
deeper模型,如ConvE,适合建模复杂的知识图谱(FB15k);shallow模型,如DistMult,适合建模简单一点的知识图谱(WN18)。
PageRank
PageRank度量有向图中节点的重要程度,通过迭代计算节点的indegree得到。一个节点的indegree值正比于该节点的indegree、邻居的indegree、邻居的邻居的indegree,以及所有其他节点的indegree。这里应该能感受到迭代计算的需要了吧。
经统计,WN18中PageRank值最高的节点的PageRank比YAGO3-10和Countries中的最高PageRank值小一个数量级,比FB15k中的最高PageRank小4倍。
作者发现,DistMult和ConvE在Hits@10指标上的性能差异正比于测试集的平均PageRank值,可以看一下Table 6。
1.7.总结与感想
ConvE模型是首个用卷积神经网络解决知识推理问题的模型,看完这篇论文觉得受益匪浅。作为一个从视觉转NLP的人,一直也在思考二者结合和技术通用的问题。作者利用了视觉中常用的2D卷积,提升特征的表达能力。还使用了多种dropout方法、1-N scoring等。然后,我觉得作者特别好的一个点就是分析了数据集的问题,并且对问题做了修正。最后,我觉得作者的实验做的也非常的充分,实验环节设计的也非常合理。
2.ConvKB
论文:A Novel Embedding Model for Knowledge Base Completion Based on Convolutional Neural Network
会议/期刊:Proceedings of NAACL-HLT 2018
2.1.解决的问题
没明确说。
2.2.优势
首先,作者先分析了一下ConvE的缺点:ConvE的输入只考虑了实体和关系两个嵌入向量间的局部关系,没有考虑整个三元组(头实体,关系,尾实体)(全局 global),并且忽略了transition-based模型中最重要的transitional特性。
2.3.贡献与创新点
(1)设计了ConvKB模型,用神经网络表示transition-based模型中的transitional特性;
(2)在WN18RR和FB15k-237数据集上验证算法,SOTA。
2.4.方法
2.4.1方法介绍
流程:
(1)求实体和关系
的
维嵌入向量,
、
、
;
(2)每个三元组的嵌入可表示为的矩阵,
;
(3)将矩阵输入卷积层,生成特征图:卷积层一共有个
的filters,每一个filter循环处理矩阵的每一维,得到
的特征图。最终得到
个
的特征图;
(4)将所有的特征图concat成单一的特征向量,也就是维;
(5)特征向量与权重向量做点积,得到当前三元组的分数,用来判断三元组是否valid。
第个特征图的计算公式:
ConvKB的打分函数为:
注意:这里的打分函数给出的是每个三元组的implausibility score,也就是三元组越假,分数就越高,三元组越真,分数就越低。这里与ConvE的是反的,ConvE应该是三元组越真,分数越高。
损失函数为:
问题:这里我按照正样本负样本的得分都是正的来推导,推不出minimize loss这个做法,难道负样本的得分其实是负的?取绝对值后大吗?下面贴一个原文对打分函数的解释:
2.4.2.ConvKB与TransE的转换推导
先附上一个各模型的打分函数表:
下面一段文字是ConvKB转换为TransE的参数设置:
推导一下~
所以,ConvKB可以看作是TransE的延申,可以建模全局关系。
2.5.实验
2.5.1.数据集
WN18RR和FB15k-237。
2.5.2.实验细节
按照伯努利分布采样corrupted样本中的头实体或尾实体。
利用TransE来初始化实体和关系的嵌入。
2.6.实验结果
2.7.总结与感想
感觉与ConvE比,这篇的思想还是更常规一点,二者虽然都是从CNN的角度来解决知识表示问题,但是思路还是完全不一样的。
相关文章:

知识推理——CNN模型总结(一)
记录一下我看过的利用CNN实现知识推理的论文。 最后修改时间:2023.05.12 目录 1.ConvE 1.1.解决的问题 1.2.优势 1.3.贡献与创新点 1.4.方法 1.4.1 为什么用二维卷积,而不是一维卷积? 1.4.2.ConvE具体实现 1.4.3.1-N scoring 1.5.…...

OpengES中 GLSL优化要点
本文整理一些日常积累的可以优化的方向 一.延迟vector计算 在进行float与vector计算的时候,可以先确定float再计算,不要多个float一起计算 如: highp float f0,f1;highp vec4 v0,v1;v0 (v1 * f0) * f1;优化为 highp float f0,f1;highp vec…...

项目集角色定义
一、项目集经理的角色 项目集经理是由执行组织授权、领导团队实现项目集目标的人员。项目集经理对项目集的领导、 实施和绩效负责,并负责组建一支能够实现项目集目标和预期项目集效益的项目集团队。项目集经 理的角色与项目经理的角色不同。二者之间的差异是基于项…...

Unreal Engine11:触发器和计时器的使用
写在前面 主要是介绍一下触发器和计时器的使用; 一、在Actor中使用触发器 1. 新建一个C类 创建的C类也是放在Source文件夹中的Public和Private文件夹中;选择Actor作为继承的父类;头文件包括一个触发器和两个静态网格,它们共同…...

Qt之信号槽原理
Qt之信号槽原理 一.概述 所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这…...

【MySqL】 表的创建,查看,删除
目录 一.使用Cmd命令执行操作 1.使用( mysql -uroot -p)命令进入数据库 2.创建表之前先要使用数据库 3.创建表之前要先确定表的名称,列名,以及每一列的数据类型及属性 4.创建表 注意: 5.查看所有已创建的表 6.查看单表 …...

Python 字典修改对应的键值
将 key ‘1’ 的值 ‘1’, ‘3’, ‘5’ 字符,修改为 ‘2’, ‘4’, ‘5’ 。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单………...

【JFace】ComboViewer 设置了默认值,但没有效果
问题 在数据回显时,明明在代码中通过comboViewer.setSelection设置了默认值,但没有生效(回显),是怎么回事呢 ? 分析 如果comboViewer.setSelection(new StructuredSelection(items[1]))不起作用…...

基于Redis的Stream结构作为消息队列,实现异步秒杀下单
文章目录 1 认识消息队列2 基于List实现消息队列3 基于PubSub的消息队列4 基于Stream的消息队列5 基于Stream的消息队列-消费者组6 基于Redis的Stream结构作为消息队列,实现异步秒杀下单 1 认识消息队列 什么是消息队列:字面意思就是存放消息的队列。最…...

ePWM模块-时基模块(2)
ePWM模块(2) 时基模块的使用 TBPRD:周期寄存器 (设置的时钟周期存入此,可通过阴影寄存器缓冲后写入,也可通过活动寄存器立即写入) TBCTR:时基计数变值寄存器 (时基当前所计数的值存入,用于和所设定周期值比较) TBPHS:时基相位寄存器 TBSTS:时基状态寄存器 …...

让GPT对话写小说
## 来自你的消息: 写个小说 ## 来自ChatAI的消息: 很好,我可以为您编写一个小故事。以下是一个短小精干的故事: 《夜行者》 夜,是个寂静而神秘的时间,很多人都选择睡眠。但在这个城市,有一群人——夜行者,他…...

Docker 应用部署-MySQL
一、安装MySQL 1搜索mysql镜像 docker search mysql 2拉取mysql镜像 docker pull mysql:8.0.20 3创建容器 通过下面的命令,创建容器并设置端口映射、目录映射 #在用户名目录下创建mysql目录用于存储mysql数据信息 mkdir /home/mysql cd /home/mysql #创建docker容…...

电容笔哪个厂家的产品比较好?苹果平板的电容笔推荐
从目前来说,这个苹果的正版电容笔,售价真的是太贵了,一支就要接近上千元。事实上,对于那些没有很多预算的人来说,平替电容笔是一个很好的选择。一支苹果电容笔,价格是四支平替电容笔的四倍,但平…...

今年的面试难度有点大....
大家好,最近有不少小伙伴在后台留言,又得准备面试了,不知道从何下手! 不论是跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了! 为了帮大家节约时间&a…...

【PWN · ret2libc】ret2libc2
ret2libc1的略微进阶——存在systemplt但是不存在“/bin/sh”怎么办? 目录 前言 python3 ELF 查看文件信息 strings 查看寻找"/bin/sh" IDA反汇编分析 思路及实现 老规矩,偏移量 offset EXP编写 总结 前言 经过ret2libc1的洗礼&a…...

深度学习01-tensorflow开发环境搭建
文章目录 简介运行硬件cuda和cuddntensorflow安装。tensorflow版本安装Anaconda创建python环境安装tensorflow-gpupycharm配置配置conda环境配置juypternotebook 安装cuda安装cudnn安装blas 云服务器运行云服务器选择pycharm配置代码自动同步远程interpreter 简介 TensorFlow是…...

linux相关操作
1 系统调用 通过strace直接看程序运行过程中的系统调用情况 其中每一行为一个systemcall ,调用write系统调用将内容最终输出。 无论什么编程语言都必须通过系统调用向内核发起请求。 sar查看进程分别在用户模式和内核模式下的运行时间占比情况, ALL显…...

PMP项目管理-[第十章]沟通管理
沟通管理知识体系: 规划沟通管理: 10.1 沟通维度划分 10.2 核心概念 定义:通过沟通活动(如会议和演讲),或以工件的方式(如电子邮件、社交媒体、项目报告或项目文档)等各种可能的方式来发送或接受消息 在项目沟通中,需要…...

13个UI设计软件,一次满足你的UI设计需求
UI设计师的角色是当今互联网时代非常重要的一部分。许多计算机和移动软件都需要UI设计师的参与,这个过程复杂而乏味。这里将与您分享13个UI设计软件,希望帮助您正确选择UI设计软件,节省工作量,创建更多优秀的UI设计作品。 1.即时…...

sentinel介绍
介绍 官网地址 Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源&…...

手把手教你怎么搭建自己的ChatGPT和Midjourney绘图(含源码)
AI程序采用NUXT3LARAVEL9开发(目前版本V1.1.7) 授权方式:三个顶级域名两次更换 1.AI智能对话-对接官方和官方反代(markdown输出)PS:采用百度与自用库检测文字 2.AI绘图-根据关键词绘图-增加dreamStudio绘画-增加mid…...

继承多态经典笔试题
注:visual studio复制当前行粘贴到下一行: CTRLD 杂项 调用子类重写的虚函数(带默认参数),但参数用的是基类的虚函数中的默认参数: 这是由于参数是在编译时压入 试题一 交换两个基类指针指向的对象的vf…...

如何使用Typeface-Helper-自定义字体
随着科技的不断发展,人们对于视觉效果的要求也越来越高。在设计领域中,字体设计是非常重要的一环,因为它直接影响了整个设计的风格和品质。因此,越来越多的设计师开始寻找能够帮助他们自定义字体的工具。在这个过程中,…...

SubMain CodeIt.Right 2022.2 Crack
CodeIt.Right,从源头上提高产品质量,在编写代码时获取有关问题的实时反馈,支持最佳实践和合规性,自动执行代码审查,轻松避免与您的群组无关的通知,一目了然地了解代码库的运行状况 自动执行代码审查 使用自…...

文艺复兴的核心是“以人为本”:圣母百花大教堂(Duomo)
文章目录 引言I 圣母百花大教堂的建筑技术故事1.1 布鲁内莱斯基1.2 表现三维立体的透视画法II 美第奇家族的贡献2.1 科西莫德美第奇2.2 洛伦佐美第奇III 历史中的偶然性与必然性。3.1 文艺复兴的诞生其实是必然的事情3.2 文艺复兴的偶然性引言 从科技的视角再次理解文艺复兴,…...

校招失败后,在小公司熬了 2 年终于进了百度,竭尽全力....
其实两年前校招的时候就往百度投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别…...

【C++学习】函数模板
模板的概念 模板就是建立通用的模具,大大提高复用性。 模板的特点: 模板不可以直接使用,它只是一个模型 模板的通用不是万能的 基本语法 C中提供两种模板机制:函数模板和类模板 函数模板作用: 建立一个通用函数&…...

1960-2014年各国二氧化碳排放量(人均公吨数)
1960-2014年各国二氧化碳排放量(人均公吨数)(世界发展指标, 2019年12月更新) 1、来源:世界发展指标 2、时间:1960-2014年 3、范围:世界各国 4、指标: 二氧…...

【java-04】深入浅出多态、内部类、常用API
主要内容 多态 内部类 常用API 1 多态 1.1 面向对象三大特征 ? 封装 , 继承 , 多态 1.2 什么是多态 ? 一个对象在不同时刻体现出来的不同形态 举例 : 一只猫对象 我们可以说猫就是猫 : Cat cat new Cat();我们也可以说猫是动物 : Animal cat new Cat();这里对象在不…...

【逐函数详细讲解ORB_SLAM2算法和C++代码|Viewer|1-26】
Viewer类的主要目的是实现ORB-SLAM2算法的可视化部分,帮助用户更好地理解算法的运行过程和结果。为此,Viewer类与其他类(如System、FrameDrawer、MapDrawer和Tracking)协同工作,根据摄像机的帧率实时更新可视化界面。 在Viewer类中,有一些成员变量和成员函数。 成员变量…...