相关阅读:
Graph Embedding基础系列第三篇,和deepwalk的思路非常相似,来自2016年Stanford的node2vec,
前面介绍过,deepwalk可以认为是 random walk + skip-gram 的模型,random walk本质上是一个dfs的过程,丢失了bfs的邻居结构信息;而node2vec可以简单理解为对deepwalk的随机游走过程进行优化,综合考虑了bfs和dfs的游走方式,提出了『biased random walk』,训练更新仍然是skip-gram那一套。下面来具体介绍~
文中提出了两种度量节点相似性的方式:
具有直接链接关系的两个节点,我们可以认为是内容相似的。例如上图中的 和
网络拓扑结构组成上是类似的,我们也可以认为两个节点是相似的。例如上图中的 和
这两种基础搜索策略相信大家肯定非常熟悉的吧,就不再赘述。DFS为上图中蓝色路径,可以理解为获取全局信息;BFS为上图中红色路径,可以理解为获取局部信息。
对于一个起始节点 , 我们可以采样出一条长度为 的随机游走路径,
其中, 表示节点 和节点 之间的未归一化概率(即从节点 转移到节点 的概率), 为归一化常数。
最简单优化随机游走的方式是将 定义为 边的权重 ,如果是无权图,则 。这种方案的缺点是没有网络的结构。
考虑真实场景下的网络,会同时存在DFS和BFS两种采样方式,提出了一种更为合理的「二阶随机游走」。以下图为例,我们从节点 转移到节点 ,并且当前在节点 ,需要考虑下一个采样节点 。
为此, 作者定义了一个概率分布,也就是一个节点到它的不同邻居的转移概率:
解释一下:
参数的意义为:
可以发现,当 时,node2vec就是一个deepwalk模型了。
在某些任务中,我们会对边的特征感兴趣,比如 link prediction,因此可能需要获取 edge embedding。
给定两个节点 , 我们有它们对应的向量表示 ,然后可以定义一个二元操作来生成边的表示
具体可选的二元操作如下:
node2vec: Scalable Feature Learning for Networks: https://arxiv.org/abs/1607.00653
- END -
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:
(1)点击页面最上方"AINLP",进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
推荐阅读
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏