试图理解 Decagon(二)具体方法
作者:互联网
4 图卷积 Deacgon 方法
综述
关系被表示为一个图 G = (V,R),其中,节点N(蛋白质、药物)vi∈V,和标记的边(vi,r,vj),r代表边的类型,分别由
- 蛋白质间的作用
- 某种药物 与其作用蛋白质间的关系
- 存在于某两种药物间的副作用关系
除此之外,我们允许以节点向量的方式引入其他可用信息。不同的节点可以拥有不同的节点特征。
对任务进行描述:
考虑识别药物对之间的联系和可能存在的副作用。重要的是,这里的联系,是不能单独出现在某一种药物的功效中的。
应用到图上:
任务就是预测 药物 节点间 带有标记的边,给定节点对,我们的目标就是预测某一条边(vi,r,vj)会以多大的概率出现在这张图中。
为此,我们设计了一个非线性的,多层的卷积图神经网络模型 Decagon ,可以直接在图上进行操作,Decagon拥有两大组成部分:
- 一个编码器:作用在G上的图卷积网络,可以生成G中的节点嵌入
- 一个解码器:一个张量分解模型,使用上述节点嵌入值去为多药物副作用建模
4.1 图卷积编码器
这个图卷积编码器
- 输入:图G、其他节点向量xi
- 输出:为图中每个节点生成 d维度 的嵌入向量
这个编码模型 可以 高效利用 分布在图中不同部分的共享信息,可以为分贝为每一种关系赋予 处理通道(processing channels)
核心思想是 decagon 能够学习如何 转换 和 传播 信息,在全图中抓住节点特征向量。
每一个节点邻居网络都定义了一个不同的神经网络信息流结构(architecture),但是这些结构会分享 那些决定信息如何分享和传播的 功能/参数。
我们学习 在图中不同部分 对于不同边类型 可以 传播 和 转换 信息的算子(operator)
对于一个给定节点,Decagon对它邻居的特征向量进行 转换 或 聚合 操作,这样一来,Decagon就可以只考虑第一层的邻接 而对图中所有位置施加同样的 转换。而后接下来这些操作的应用会对K 阶 邻接进行信息的卷积,这里 K 代表接下来卷积神经网络中的层数。
在每一层中,Decagon在图的边中传递节点特征信息,同时把节点的类型考虑了进去。一个单层的这种神经网络模型是下面这种形式的:
这里,
节点vi在第k层的隐藏状态,dk是 这一层 表示(representation)的维度,r 是边的类型,Wrk是 关系-类型 参数矩阵,这里外层的 fai 函数代表一个非线性的激活函数,c rij 和 cri 是归一化常量
工作过程
首先,我们确定要研究的是C节点的隐藏状态,我们发现,一共有三个药物、四个蛋白质与其相连,三种药物中,S和D所产生的副作用相同,都是心律失常,和M产生的副作用是胃出血。
这里的Wr1(k),我理解是一个对于r1这个副作用(胃出血)的参数矩阵(但是具体行列分别代表什么?)
W与h相乘,加上c自己的h,最后所有的加和结果 放到 激活函数 中 即得到了下一时刻c的隐藏状态
然后我们可以看到,对每一个节点来说他们拥有不同的神经网络结构(因为他们的相邻状态不一样)
而在得到收敛的隐藏状态之后,我们就可以执行预测操作,这里以c和s两种药物来举例,分别得到他们的 表示(representation)zc和zs,经过预测后,可以得到他俩具有每一种关系的概率,从而得到预测结果
之后就是深度学习的一般步骤,为总共K层找到合适的激活函数,为下一层做好准备
4.2 张量因子分解解码器
目标
通过已学习到的节点嵌入和对每一种边类型区别对待
具体来说:
解码器为(vi,r,vj)打分,分数代表i节点和j节点通过一条r边连接在一起的可能性
操作
再应用sigmoid激活函数:
接下来,讨论上述分段函数的两种可能性:
-
当 vi 和 vj 都是 药物的时候:
这里考虑一个全局的 药物-药物 反应模型,并使用对角参数 产生他的变体 后 更改 他的重要性。
这里,R是一个 描述了全部可能出现的药物共用副作用的可学习的 d × d 的 参数矩阵。
除此之外,在Decagon中,每个多药物副作用 r 都对应一个d × d 的矩阵 Dr ,代表了zi 中每一个维度相对于 这个副作用 r 的重要性
(然后论文中写了 这个 encoder 与 张量分解的相似性,然后强调Decagon是一个端到端 同时训练的模型而不是 分成两个过程 -
当 vi 和 vj 不都是 药物的时候:
这时,使用双线性映射 把 边 从节点嵌入中 解码出来。
更精确地讲,这种情况下,解码函数与一个可训练的参数矩阵Mr相关,描述了zi和zj之间每一对维度之间的关联,然后使用sigmoid激活函数把 encoder变成一个双线性映射
使用分段函数区别对待的原因
-
Decagon可以视为是非常有效的在不同关系中参数共享的方式。具体来说,与 药物对 相关的边类型 使用同一个 全局的 包含适用于所有药物相关 边类型 的 药物-药物 反应模型。
我们期望这样的参数化解码 可以 减轻 罕见 边类型的过拟合因为参数是在 罕见、常见边类型中共享的 -
我们希望得到一个 高分的 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,设置停止窗口为2(也就是如果验证误差在两个 轮次 中始终没有减少,那么停止训练)
使用 Glorot and Bengio (2010) 中描述的 权值初始化方法 来给 Decagon 中参数进行初始化。
实际使用中,我们使用高效的稀疏矩阵乘法(复杂度与G中的边呈线性关系)
训练方法
Decagon使用 mini-batching 方法,一次训练一小部分(没有明白)
qdmoxf 发布了19 篇原创文章 · 获赞 2 · 访问量 654 私信 关注标签:具体方法,试图,函数,药物,矩阵,参数,Decagon,节点 来源: https://blog.csdn.net/weixin_41075215/article/details/104104846