Network Embedding with Dual Generation Tasks

前言

本次介绍的论文来自 IJCAL 2019。作者研究的问题是:用于内容丰富(content-rich)网络的网络嵌入。对于内容丰富网络的嵌入,其核心问题是学习和整合由网络结构和节点内容所携带的语义信息。

在该论文中,作者提出了一种端到端的模型,Dual GEnerative Network Embedding(DGENE),来利用网络结构和节点内容的补充信息。在该模型中,每一个顶点被视为一个带有两种模态的对象:node identity 和 textual content。然后作者制定了两种生成任务,一个是 Node Identification(NI) ,其给定节点内容识别节点的身份,另一个是 Content Generation(CG),其给定节点身份生成节点的文本内容。为这两个任务,作者使用特定的 Content2Node 和 Node2Content 模型。在 DGENE 框架下,这两个模型通过分享和整合中间层学习,这使得它们互相增强。

提出的方法

表示学习中,content-rich NE 的关键研究问题是:

  1. 节点间的结构级的相似可以是变化的。大多现存的 NE 方法试图保留设计的结构近似,而不是自动学习合适范围的近似。
  2. 对于结构和内容的融合策略还没有得到很好研究。大多现存的方法学习分开的结构和内容向量,然后使用简单的方法来联合它们。
  3. 结构和内容信息都是高度非线性的,这使得浅模型不能高效学习语义表示。
    作者为解决这些问题提出了 DGENE 框架。

在一个 content-rich 网络$G = (V,E$中,$V$和$E$分别是顶点集合和边集合,每一个顶点具有两种模态:节点身份$V^i$和文本内容$V^c$。一般来说,节点身份指示这个节点是哪一个节点,节点内容描述节点携带的信息。给定长度为$T$的节点序列$S = \{v_1,v_2,…,v_T\}$,由随机漫步算法采样得到,身份序列为$S^i = \{v_1^i,v_2^i,…,v_t^i\}$,对应的内容序列为$S^c = \{v_1^c,v_2^c,…,v_t^c\}$,这两个序列是平行序列。

下面先给出内容生成(Content Generation)的定义:对于给定的content-rich network,CG 就是学习对每一对平行序列给定 $S^i$时$S^c$的条件概率,也就是$p(S^c|S^i)$。

NI 和 CG 具有概率相关性,因为这两个任务都和$S^i$和$S^c$的联合概率相关。给定$S^i$和$S^c$,联合概率可通过两个等式计算:
eq 1
条件概率分布$p(S^i|S^c)$正是 NI 模型,而$p(S^c|S^i)$正是 CG 模型。因此,作者提出双生成模型来捕捉这两个任务之间的概率相关性并同时解决它们。
Figure 1描述了该方法的概观。
Figure 1

Figure 2描述了 DGENE 的详细架构。
Figure 2

对于Content2Node模型,其学习从节点内容表示空间到节点身份空间的跨模态映射,$p(S^i|S^c;\theta^{NI})$。一个节点的内容矩阵是其文本内容中单词的词向量的嵌入,比如,一个节点的文本内容有 $M$ 个单词,词向量的维度为$k_u$,则$U(v_t) \in \mathbb{R}^{M \times k_u}$是节点$v_t$的内容矩阵。,然后,一层 CNN 网络和最大池化操作被用来保留$v_t$的局部语法和语义信息得到$\mathrm{v_t}$。

eq3

再为了捕捉语义表征序列中的不同节点之间的语义关系,作者使用一个双向 LSTM 层来捕捉全局语义:

eq4

然后设计一个 LSTM 解码网络来将内容向量$\mathrm{c}^{NI}$解码为预测的节点身份序列 $\hat{S}_i$ ,并使用交叉熵层来测量所有 $S^i$ 和 $\hat{S}_i$ 之间的 NI loss $L^{NI}(\theta^{NI})$/。

对于Node2Content 模型,其学习从节点身份空间到节点内容表示空间的跨模态映射,也就是$p(S^c|S^i;\theta^{CG})$。换句话说,它解决的问题是如何根据结构信息来生成节点的文本描述。Node2Content通过节点序列编码,语义编码和文本生成将 $S^i$ 翻译为 $S^c$ 。

先通过一个 $LookUp^n(S^i,\mathrm{V})$ 得到节点身份编码(结构信息):

eq5

然后用双向 LSTM 对节点身份编码序列 $\mathrm{S}^i$ 根据它们的结构关系进一步编码,得到上下文向量$\mathrm{c}^{CG}$:

eq6

语义解码。有了上面得到的节点序列嵌入 $\mathrm{c}^{CG}$,语义解码步骤序列的生成更高层的语义表示 $\mathrm{d}_t^{CG}$。每一个 $\mathrm{d}_t^{CG}$ 都整合了节点 $v_t$ 的身份信息和它与在 S 中的其他节点的结构关系。作者设计了一个 LSTM 层作为解码函数 $\mathcal{D}(\cdot,\cdot)$:

eq7

内容生成。最后,有了解码后的语义表示 $\mathrm{d}_t^{CG}$,使用一个文本生成器来将每一个$\mathrm{d}_t^{CG}$转换为单词序列。作者使用一个带有teacher forcing 的LSTM 生成器来生成文本。第 $l$个单词的表示这样生成:

eq8

其中 $\hat{u}_{t,l-1}$ 在训练阶段是 $v_t^c$ 的第 $l-1$ 个真实单词,而在生成阶段则是上一步预测的第 $l-1$ 个单词的嵌入。生成过程当 $l$ 到达了一个预定义的最大长度时停止。

当有了 $v_t^c$ 第$l$ 个单词的解码表示 $\mathrm{g}_{t,l}$后,作者使用全连接层和softmax 层来获得其在整个单词表中的概率分布。

eq9

最后,一层交叉熵层测量 GC loss:

eq10

双任务的学习。这两个模型通过以一种近似的方式分享它们的中间层,这样它们就可以高效的合作。作者使用线性层来融合它们:

eq11

节点嵌入。中间层的表示可以拿来作为节点嵌入。在 DGENE 中,Conten2Node 和 Node2Content 中编码器和解码器的隐藏表示可以作为节点嵌入,也就是 $\mathrm{x}^{NI} = [\mathrm{d}_t^{NI};\vec{h}_t^{NI};\bar{h}_t^{NI}]$,和$\mathrm{x}^{NI} = [\mathrm{d}_t^{CG};\vec{h}_t^{CG};\bar{h}_t^{CG}]$。作者将这两个向量拼接起来作为节点嵌入。

一些思考

  1. 最后的节点嵌入是两个模型中隐藏表示的拼接,少了浑然天成的味道,应该还有更好的融合策略。
  2. 作者说使用随机漫步可以自动的学习一个合适的近似范围,真的是这样吗?还有其他策略吗,注意力机制沾一点边。是否可以从某一个节点的结构信息中学习到它的特征信息是否需要被整合进邻居节点中,像停用词?
  3. 复杂问题换一种方式思考就变的简单了,比如content-rich network 的节点嵌入被转换为节点身份识别和节点内容生成连个任务的联合学习。