ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

神经网络模型(三)(CapsE)

2021-06-17 09:06:00  阅读:230  来源: 互联网

标签:CapsE 卷积 模型 三元组 神经网络 实验 胶囊 路由


目录

本篇记录用神经网络做 KGE 的模型 —— CapsE。

CapsE

paper: A Capsule Network-based Embedding Model for Knowledge Graph Completion and Search Personalization

简介: 这篇文章是 Dai Quoc Nguyen 发表在 NAACL-HLT 2019 上的文章,还挂了 Dai Quoc Nguyen 的名字,这两个人在 KG 领域都很活跃,很多篇 KGE 的文章都是他们写的,应该都是越南人,有帖子怀疑他们两个是亲兄弟哈哈哈~ Dai 是 ConvKB 的作者,在 CpasE 中也多次提到并对比了 ConvKB 的工作。CapsE 是第一篇用胶囊网络做 KGE 的工作,先对三元组 embedding 拼接的矩阵进行卷积,然后过两层胶囊网络,得到三元组得分。感觉还挺有意思的,“胶囊”这个词本身听起来也萌萌哒~

背景知识:看这篇文章之前大概瞄了一眼胶囊网络的概念,就是普通神经网络中的神经元输出的是一个值,只能表示样本的一种模式,而胶囊输出的是一个向量,它的优势就在于可以表示一类模式(如向左和向右的鸟嘴),层间胶囊的连接通过路由策略进行。只要知道胶囊输出的是向量而不是单个的值,就足够了。

模型

文章没有详细描述所解决的问题,而是开门见山地介绍 CapsE(即使是在摘要里)。胶囊网络是从视觉领域引入过来的,它可以捕捉图像中的一个 part 和整体的位置关系,本文假设在 KG 的三元组中也存在这种“内在关系”的变体不能被直观地展示,因此提出用胶囊网络来处理。模型结构很简单,只看 Intro 里的介绍就已经能明白的差不多了。

先将三元组 \((h,r,t)\) 的 embedding 拼接为一个矩阵,然后用多个 1x3 的过滤器进行卷积,得到多个 feature map,这些 feature map 上相同维度的值被封装为一个胶囊,这个胶囊簇(姑且这么称,我自己造的名词…)被路由为另一个胶囊,输出一个连续的向量,向量的长度代表三元组的得分。第一个胶囊层中的每个胶囊可以编码 embedding triple 中的多个特征,来表示相应维度的条目。

框架图也画得很清楚:

使用过滤器 \(\omega\) 进行卷积的公式化表达为:

卷积层结束得到很多个 feature map,然后相同维度的神经元拼接为一个胶囊。然后接着就是路由过程。路由过程具体来讲就是对胶囊向量 \(u_i\) 乘一个权重矩阵 \(W_i\),然后进行一个加权求和(加权系数通过 第一层胶囊的 softmax 得到)得到路由的结果 \(s\),\(s\) 经过一个 squash 函数得到最终的向量输出 \(e\)。

squash 函数为:

路由过程的算法为:

三元组打分函数可以表示为:

loss 为:

实验

文章进行了两类实验:链接预测和个性化搜索

知识图谱补全

链接预测实验在 WN18RR 和 FB15k-237 两个数据集上进行。

除了在整体数据集上的实验,还评价了在不同关系类型、甚至到具体的每个关系上的实体预测的准确率:

此外,还评价了路由算法中迭代的次数、及过滤器的数量对 CapsE 在 WN18RR 上效果的影响,发现路由算法迭代1次效果最好,这一点与处理图像的胶囊网络的表现相反:

个性化搜索

这个实验很新颖,将搜索任务用三元组表示—— \((query,user,document)\),然后套用 CapsE。具体任务是:给定查询 query 和用户画像 user,对返回的文档进行 re-rank,相关的应该被排在前面,这个任务思想就和三元组的实体预测一样了。在数据集 SERACH 17 上进行了实验:

还展示了验证集上的学习率曲线受过滤器数量的影响:

代码

给出了代码,是基于 Tensorflow 的:https://github.com/daiquocnguyen/CapsE

跑了半天,连个 log 都不输出,我一度以为它卡住了,实验室的服务器共有 27 个CPU,我这一个程序的占用率达到了 1800% 多,希望不会被打。。。

下班啦,明早来看希望它能输出点什么~

我是华丽丽的分割线

早上好~,WN18RR 上训练的实验已经跑完了:

运行了验证代码(很快),结果和论文中给出的一样:

小结: 本文用胶囊网络做知识图谱嵌入,先对三元组 embedding 进行卷积,然后将得到的 feature map 封装为胶囊,经过路由再过一层胶囊,最后输出三元组得分。进行了链接预测和个性化搜素的实验。模型很明白、清晰,能看懂,感觉还挺有意思的。


【题外话】 今天(5.25)收到了 KSEM 的来信,我的论文中了,那篇胡乱搞出来的、拿来试试水的论文,竟然中了。真的好开心,这是我的第一篇英文论文,第一篇可以用作毕业的论文,我终于碰到毕业的门槛了。今天真是个好日子。既然有幸被接收,我预备从这一刻开始,认真对待论文和毕业这件事情了。在看到“your paper had been accepted as a regular paper” 这句话的时候,之前的所有不快、疑惑和忐忑,全部都被化解了,“发一篇C”这件事情,对我来说,一直像一座山一样,总以为它很难,直到今天,才觉得,不过如此。以此类推,所谓毕业,不过就是这样的工作量乘以3,也不过如此罢了。说真的这篇文章我并没有花费很大的心血,纯粹是为了谈试一下这件事情的难度。即使再继续水两篇这样的文章就能毕业,我还是会对自己再提高一点点要求,当然,是在踮起脚尖能达到的高度,不会太过不切实际。这证明了我并没有不适合做科研这件事情,做科研本就是在未知的领域探索、无固定招式,一千人有一千种不同的方式,只要我的 paper 能被接收,就说明我的方式 make sense,我完全可以继续下去。不只发论文这一件事,很多事情都像小马过河,只有自己去经历了,才知道对自己是什么感觉,听再多不如自己做一次。很多我们看起来觉得不可逾越的鸿沟,其实并不难,都是纸老虎罢了,只要自己相信自己,一切就还没有成定局。后面我会认真修改文章、补充实验,认真开题,珍惜每一次当众演讲的机会(尤其是英文 oral report,这机会很难得),做最充足的准备。虽然说起来有些不切实际,虽然仍旧“平凡才是唯一的答案”,但是我在离自己想去的地方、想达到的高度越来越近了,这是我与国际接触最近的一次。我会好好努力,一点点进步、突破自己,不断变得更好。对感情认真不一定能得到回报,但对事业认真,一定会有回报。永歌说,抑郁是开挂人生的开始,希望我的人生也是,会在整体向着高处走。生病痊愈以来,我一直在进步,逐渐形成自己的做事风格、重构自己感知世界的方式、与人交际的方式,拥抱变化和新的生活,每一天都活的很乐观,有自己的世界,没有像机器一样活着,重视身心健康,理财存钱做规划。打算中了 C 并且减肥到100斤以下就买一个 XXX,现在条件已经满足一半了,钱也存了1/3了,我会做到的。一切都在向着好的方向发展,真好。又想起了那句话,无论多难的事情,只要不紧不慢地去做,就可以神不知鬼不觉地达到目的,重点就是不急不躁、稳定好情绪,慢就是快,我现在已经体味到这句话的深意了。定个小目标,希望下一篇 C 也能顺利中,再远一点的目标,就是希望毕业的时候能发出 B。

标签:CapsE,卷积,模型,三元组,神经网络,实验,胶囊,路由
来源: https://www.cnblogs.com/fengwenying/p/14810375.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有