| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> GNN原理详解 -> 正文阅读 |
|
[人工智能]GNN原理详解 |
之前写过一篇GNN的综述https://blog.csdn.net/weixin_45884316/article/details/115751272,但是感觉对于原理部分理解得不透彻,所以把原理单独拿出来,详细地过了一遍。 状态更新与输出? 给定一张图
G
G
G,每个结点都有其自己的特征(feature),用
x
v
x_v
xv?表示结点v自身的特征,连接两个结点的边也有自己的特征,用
x
v
,
u
x_{v,u}
xv,u?表示。GNN的学习目标是获得每个结点的隐藏状态
h
v
∈
R
s
h_v∈R^s
hv?∈Rs(state embedding),这就意味着:对于每个节点,它的隐藏状态包含了来自邻居节点的信息。那么,如何让每个结点都感知到图上其他的结点呢?GNN通过迭代更新所有结点的隐藏状态来实现,在
t
+
1
t+1
t+1时刻,结点
v
v
v的隐藏状态按照如下方式更新,一共更新4部分内容:
直接看公式有点不直观,举个小例子,假设对于节点5,其隐藏状态的更新函数如下: 利用更新函数,不断地利用当前时刻邻居结点的隐藏状态作为部分输入来生成下一时刻中心结点的隐藏状态,直到每个结点的隐藏状态变化幅度很小。至此,每个结点都“知晓”了其邻居的信息。 除了不断的更新,最终我们需要一个输出函数,适应不同的下游任务,论文中称之为局部输出函数(local output function): 对于不同的图,收敛的时刻可能不同(因为收敛是通过两个时刻 p ? p- p?范数?的差值是否小于某个阈值来判定的) 那么我们与深度学习结合呢?用神经网络来拟合复杂函数 f f f和 g g g 为什么会一定收敛输出假设将所有的状态向量,所有的输出向量,所有的特征向量和所有的节点特征而得到的向量叠加起来,分别用
H
,
O
,
X
,
X
N
H,O,X,X_N
H,O,X,XN?表示,那么可以得到更加紧凑的表示: O = G ( H , X N ) (4) O=G(H,X_N)\tag{4} O=G(H,XN?)(4) 根据Banach的不动点定理,GNN使用如下的传统迭代方法来计算状态参量: 就是因为不动点定理,就是说不管输入 H 0 H^0 H0是什么形式,如下图只要 F F F是个压缩的映射,不断迭代压缩,最终都会收敛到某一个固定的点,称之为不动点。 那么,又带来了一个新的问题:怎么保证 F F F是一个压缩函数? f f f是用前馈神经网络实现,一种实现方法可以是把每个邻居结点的特征、隐藏状态、每条相连边的特征以及结点本身的特征简单拼接在一起,在经过前馈神经网络后做一次简单的加和。 h v t + 1 = f ( x v , x c o [ v ] , h n t e [ v ] , x n e [ v ] ) = ∑ u ∈ n e [ v ] F N N ( [ x v ; x ( u , v ) ; h u t ; x u ] ) \begin{array}{l} \mathbf{h}_{v}^{t+1}=f\left(\mathbf{x}_{v}, \mathbf{x}_{c} o[v], \mathbf{h}_{n}^{t} e[v], \mathbf{x}_{n} e[v]\right) \\ =\sum_{u \in n e[v]} F N N\left(\left[\mathbf{x}_{v} ; \mathbf{x}_{(u, v)} ; \mathbf{h}_{u}^{t} ; \mathbf{x}_{u}\right]\right) \end{array} hvt+1?=f(xv?,xc?o[v],hnt?e[v],xn?e[v])=∑u∈ne[v]?FNN([xv?;x(u,v)?;hut?;xu?])? f f f为压缩映射的等价条件是 f f f的梯度(导数)要小于1,我们可以通过对雅可比矩阵(Jacobian Matrix)的惩罚项(Penalty)来实现,限制 f f f对 H H H的偏导数矩阵的大小。 f f f和 g g g的参数学习不一定所有结点都是有监督的,模型的损失只通过有监督信号的结点得到,可以将损失函数定义为如下形式:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/2 22:32:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |