试图理解 Decagon(二)具体方法

4 图卷积 Deacgon 方法

综述

关系被表示为一个图 G = (V,R),其中,节点N(蛋白质、药物)vi∈V,和标记的边(vi,r,vj),r代表边的类型,分别由

  1. 蛋白质间的作用
  2. 某种药物 与其作用蛋白质间的关系
  3. 存在于某两种药物间的副作用关系

除此之外,我们允许以节点向量的方式引入其他可用信息。不同的节点可以拥有不同的节点特征。
对任务进行描述:
考虑识别药物对之间的联系和可能存在的副作用。重要的是,这里的联系,是不能单独出现在某一种药物的功效中的。
应用到图上:
任务就是预测 药物 节点间 带有标记的边,给定节点对,我们的目标就是预测某一条边(vi,r,vj)会以多大的概率出现在这张图中。
为此,我们设计了一个非线性的,多层的卷积图神经网络模型 Decagon ,可以直接在图上进行操作,Decagon拥有两大组成部分:

  1. 一个编码器:作用在G上的图卷积网络,可以生成G中的节点嵌入
  2. 一个解码器:一个张量分解模型,使用上述节点嵌入值去为多药物副作用建模

4.1 图卷积编码器

这个图卷积编码器

  • 输入:图G、其他节点向量xi
  • 输出:为图中每个节点生成 d维度 的嵌入向量
    在这里插入图片描述

这个编码模型 可以 高效利用 分布在图中不同部分的共享信息,可以为分贝为每一种关系赋予 处理通道(processing channels)

核心思想是 decagon 能够学习如何 转换传播 信息,在全图中抓住节点特征向量。

每一个节点邻居网络都定义了一个不同的神经网络信息流结构(architecture),但是这些结构会分享 那些决定信息如何分享和传播的 功能/参数。
我们学习 在图中不同部分 对于不同边类型 可以 传播 和 转换 信息的算子(operator)

对于一个给定节点,Decagon对它邻居的特征向量进行 转换聚合 操作,这样一来,Decagon就可以只考虑第一层的邻接 而对图中所有位置施加同样的 转换。而后接下来这些操作的应用会对K 阶 邻接进行信息的卷积,这里 K 代表接下来卷积神经网络中的层数。

在每一层中,Decagon在图的边中传递节点特征信息,同时把节点的类型考虑了进去。一个单层的这种神经网络模型是下面这种形式的:
试图理解 Decagon(二)具体方法_第1张图片
这里,在这里插入图片描述
节点vi在第k层的隐藏状态,dk是 这一层 表示(representation)的维度,r 是边的类型,Wrk是 关系-类型 参数矩阵,这里外层的 fai 函数代表一个非线性的激活函数,c rij 和 cri 是归一化常量

工作过程

试图理解 Decagon(二)具体方法_第2张图片
试图理解 Decagon(二)具体方法_第3张图片
首先,我们确定要研究的是C节点的隐藏状态,我们发现,一共有三个药物、四个蛋白质与其相连,三种药物中,S和D所产生的副作用相同,都是心律失常,和M产生的副作用是胃出血。
这里的Wr1(k),我理解是一个对于r1这个副作用(胃出血)的参数矩阵(但是具体行列分别代表什么?
W与h相乘,加上c自己的h,最后所有的加和结果 放到 激活函数 中 即得到了下一时刻c的隐藏状态
试图理解 Decagon(二)具体方法_第4张图片
然后我们可以看到,对每一个节点来说他们拥有不同的神经网络结构(因为他们的相邻状态不一样)
试图理解 Decagon(二)具体方法_第5张图片
而在得到收敛的隐藏状态之后,我们就可以执行预测操作,这里以c和s两种药物来举例,分别得到他们的 表示(representation)zc和zs,经过预测后,可以得到他俩具有每一种关系的概率,从而得到预测结果
之后就是深度学习的一般步骤,为总共K层找到合适的激活函数,为下一层做好准备

4.2 张量因子分解解码器

目标

通过已学习到的节点嵌入和对每一种边类型区别对待
具体来说:
解码器为(vi,r,vj)打分,分数代表i节点和j节点通过一条r边连接在一起的可能性

操作

试图理解 Decagon(二)具体方法_第6张图片
再应用sigmoid激活函数:
在这里插入图片描述
接下来,讨论上述分段函数的两种可能性:

  1. 当 vi 和 vj 都是 药物的时候:
    这里考虑一个全局的 药物-药物 反应模型,并使用对角参数 产生他的变体 后 更改 他的重要性。
    这里,R是一个 描述了全部可能出现的药物共用副作用的可学习的 d × d 的 参数矩阵。
    除此之外,在Decagon中,每个多药物副作用 r 都对应一个d × d 的矩阵 Dr ,代表了zi 中每一个维度相对于 这个副作用 r 的重要性
    (然后论文中写了 这个 encoder 与 张量分解的相似性,然后强调Decagon是一个端到端 同时训练的模型而不是 分成两个过程

  2. 当 vi 和 vj 不都是 药物的时候:
    这时,使用双线性映射 把 边 从节点嵌入中 解码出来。
    更精确地讲,这种情况下,解码函数与一个可训练的参数矩阵Mr相关,描述了zi和zj之间每一对维度之间的关联,然后使用sigmoid激活函数把 encoder变成一个双线性映射

使用分段函数区别对待的原因

  1. Decagon可以视为是非常有效的在不同关系中参数共享的方式。具体来说,与 药物对 相关的边类型 使用同一个 全局的 包含适用于所有药物相关 边类型 的 药物-药物 反应模型。
    我们期望这样的参数化解码 可以 减轻 罕见 边类型的过拟合因为参数是在 罕见、常见边类型中共享的

  2. 我们希望得到一个 高分的 g 来确定两种药物间 确实有某种作用,同时这种作用不会被某一种药物自己带来

总结

Dedagon种可训练的参数有:

  • W矩阵 (relation-type-specific neural network weight)
  • M矩阵 (relation-type-specific parameter)
  • R矩阵 (全局的 副作用参数矩阵)
  • Dr矩阵(side-effect-specific 对角参数矩阵)

4.3 如何训练Decagon

损失函数

为交叉熵损失函数:
在这里插入图片描述

最近的研究表明在处理 图结构的数据时,使用端到端的训练方法可以显著提高模型performance,所以Decagon也采用了这种方法,把参数优化和loss梯度传递整个过程都是在 encoder和decoder 两个部分一起进行的。

优化函数

为Adam 优化器,总共训练100轮,学习率为 0.001 0.001 0.001,设置停止窗口为2(也就是如果验证误差在两个 轮次 中始终没有减少,那么停止训练)
使用 Glorot and Bengio (2010) 中描述的 权值初始化方法 来给 Decagon 中参数进行初始化。
实际使用中,我们使用高效的稀疏矩阵乘法(复杂度与G中的边呈线性关系)

训练方法

Decagon使用 mini-batching 方法,一次训练一小部分(没有明白)

你可能感兴趣的:(论文阅读)