图神经网络 The Graph neural network model
1 图神经网络(原始版本)
图神经网络现在的威力和用途也再慢慢加强 我从我看过的最原始和现在慢慢最新的论文不断写上我的看法和见解 本人出身数学 所以更喜欢数学推导 第一篇就介绍图神经网络想法的开端 之后的图神经网络模型 都是基于此慢慢改进。
2 能处理的领域
针对常见的旅行者问题 社交网络 分子结构 等等常见的非结构化数据皆能进行处理 不同点在于你g(x) 即输出函数如何设计,图神经模型的贡献在于如何去学习一个非结构数据并将其表征
3 模型
3.1 简介
首先 针对图而言 信息有两大类 一个为图节点信息 一个为图边的信息 图的节点包含了一个节点的“状态”,我们用x(i)来表示i节点的“状态” 这是模型经过学习之后 学到的关于图信息的表征 我们可以很直观的假设 一个点的“状态”与周围节点的状态 周围节点与本节点的边(可以认为是二者的距离) 周围节点的标签 然后我们用一个函数f 去学习 于是我们可以得到以下的
我们要做的工作就是去学习到整个图 每个节点的“状态” ,但是我们会发现一个问题 那就是 i节点的“状态‘’ x(i)依赖于j节点的状态x(j) 同理j点也是 二者不断地相互依赖 形成一个循环。模型的假设就是我们可以通过循环迭代 去求解全图的“状态”
3.2
我们引入我们的输出函数g(x,l)即一个节点的输出会与此点的“状态”以及相连的边有关
由此我们得到了我们整体模型的两个函数 一个去求解图的状态 一个去输出(根据实际任务)
我们要解决的关键是f函数 如何去求解整个图的状态 数学上存在一个理论 即f对x的导数小于1时,我们可以保证 收敛
迭代过程简单而言就是 用t轮的状态 去更新t+1轮的状态 ,最终得到全图收敛的状态。
3.3
因此 现在我们可以将求解过程按轮次展开 其中的g与f都为神经网络 结构 你可以自己设计 我们将整个求解过程展开成如下形式 其中前面都是不断迭代求解图的状态过程
3.4
前面介绍了图神经模型的大体思路 接下来 我将介绍梯度下降及求导过程 因为图神经网络在求解过程中 需要保证状态收敛 才可以进行下一步 所以求导迭代过程有所不同
首先我们介绍一下一个隐函数的存在性
此函数反映了我们真实需要的状态x与我们现在所求t轮的x(t)之间的距离 理论上可以证明 存在能让我们求解到完美x的参数w,继而将参数w与x联系起来。
3.5
然后在引入我们的损失函数e 此函数如何定义损失与你的输出函数g有密切相关 需要你自己设计 再次不在累述。根据模型展开结构 ,我们得到了如下的求导公式
这个为通过时间的求导法则 很接近传统rnn 我也不再累述。 根据我们的假设 当迭代一定次数后 z(t)等于z(t+1)
根据(8)得到(9) 我们再根据我们之前证明存在的隐函数,以及根据隐函数求导法则得到(10), (11)为另一个方向求解导数 不根据我们模型的展开,直接根据偏导定义直接求得结果 将(9)(10)(11)带入得到了以下的求导法则
再次求导公式中 全部转化为对参数w的求导 接下来为z(T)的一个迭代过程 类似于一个数列的求和
至此我们得到了我们全部的求导法则
3.6 模型算法
在求导过程中 我们是假设收敛到一个值时 我们才能采用我们推导的公式进行求导 因此 算法方面我们需要增加两个步骤 去验证收敛 然后才能继续求导 整体算法框图如下
4 总结
整体模型的贡献就是解决了如何去学一个非结构数据的特征,采用迭代到收敛值的方法去学习,可能大家也发现了 针对两个点之间的联系 边 此模型并没有怎么重点关注 现在的图神经思想类似 不过加入了边的学习。
5 问题与自己想法
首先1) 此模型在计算过程中 要保证f对x的导数小于1 这点会让模型无法加深 层数一高 必然出现梯度消失之类问题
2) 没有有效去学习边的信息