图机器学习——2.1 节点嵌入:基于随机游走

嵌入(embedding)方法是目前文本分析,知识图谱相关中非常常见的一种算法。其为表示学习的一类方法,可以自动地从数据中学习“有用”的特征,并可以直接用于后续的具体任务。后面学习的相关嵌入学习均为表示学习中的内容。

节点嵌入

关于图的一些信息如何能够转化为计算机可以识别的语言呢?通常的方法也是进行嵌入(embedding)。在此之前,我们已经学习了双曲嵌入:

其将图结构嵌入到双曲空间中而后根据双曲距离进行embedding的训练。这种做法其实是一种比较新的方法,而在此之前的那些传统的节点嵌入方法都没有进行学习。因此,基于双曲空间的节点嵌入方法,本系列博客不再进行具体介绍。


总体而言,节点的嵌入通常采取编码-解码结构进行训练。编码示意图如下:

总体的编解码核心思路如下:

  • 编码器ENC定义了一个从图中的节点 u , v u, v u,v到一个空间中的嵌入 z u , z v \mathbf{z}_{u}, \mathbf{z}_{v} zu,zv的映射;

ENC ( v ) = z v \text{ENC}(v) = \mathbf{z}_{v} ENC(v)=zv

  • 定义一个节点相似度函数(即原始网络中的相似度度量, similarity);
  • 解码器DEC定义一个从嵌入到相似度评分的映射;
  • 通过编码器优化参数,使得下式左右两边尽可能接近:
    similarity ⁡ ( u , v ) ≈ z v T z u \operatorname{similarity}(u, v) \approx \mathbf{z}_{v}^{\mathrm{T}} \mathbf{z}_{u} similarity(u,v)zvTzu

左式表示原始网络中节点 u , v u, v u,v的相似度;右式表示解码后的相似度评分。


基于随机游走的方法

1. DeepWalk

DeepWalk方法受到 word2vec 的启发,首先选择某一特定点为起始点,做随机游走得到点的序列,然后将这个得到的序列视为句子,用 word2vec 来学习,得到该点的表示向量。DeepWalk通过随机游走去可以获图中点的局部上下文信息,因此学到的表示向量反映的是该点在图中的局部结构,两个点在图中共有的邻近点(或者高阶邻近点)越多,则对应的两个向量之间的距离就越短。

图上的随机游走:给定一个图和一个起点,我们随机选择它的一个邻居,并移动到这个邻居;接着我们随机选择这一点的一个邻居,然后继续移动到它,重复这个操作。以这种方式访问的(随机)节点序列是图上的一个随机游走。

我们的目标是学习到一个映射 f : u → R d : f: u \rightarrow \mathbb{R}^{d}: f:uRd: f ( u ) = z u f(u)=\mathbf{z}_{u} f(u)=zu

Log-likelihood 定义如下:
max ⁡ f ∑ u ∈ V log ⁡ P ( N R ( u ) ∣ z u ) \max _{f} \sum_{u \in V} \log \mathrm{P}\left(N_{\mathrm{R}}(u) \mid \mathbf{z}_{u}\right) fmaxuVlogP(NR(u)zu)

  • N R ( u ) N_{R}(u) NR(u) 是从节点 u u u 出发,通过游走策略 R R R 所能到达的节点。给定节点 u u u,我们想要学习的特征表示是节点对随机游走邻居 N R ( u ) N_{R}(u) NR(u)的预测。直觉上,我们的优化目的是要使得从
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值