TowardsDataScience 博客中文翻译 2021(三百二十四)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

2022 年的图表 ML:我们现在在哪里?

原文:https://towardsdatascience.com/graph-ml-in-2022-where-are-we-now-f7f8242599e0?source=collection_archive---------3-----------------------

思想和理论,最新技术文摘

热门趋势和主要进展

对于 Graph ML 来说,这是不平凡的一年——数以千计的论文、无数的会议和研讨会……我们如何跟上身边发生的这么多有趣的事情呢?嗯,我们也感到困惑,并决定呈现一个结构化的图形 ML 高亮显示🔥趋势和主要进展。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像是由 ruDALL-E 生成的,并带有提示“图形漂浮在太空中”。

无论您正在研究一个更窄的主题,还是刚刚开始使用 Graph ML——我们希望这篇文章是一个很好的参考点。

当然,这个领域是如此之大,以至于任何这样的评论都有点短视,所以如果我们错过了一些重要的东西,请在评论中告诉我们!

目录: 1。图形变形金刚+位置特征
2。等变 GNNs
3。生成模型为分子
4。GNNs +组合优化&算法
5。子图 GNNs:超越 1-WL
6。可扩展和深度 GNNs: 100 层及以上
7。知识图表
8。一般酷研用 GNNs
9。新的数据集、挑战和任务
10。课程和书籍
11。库&开源
12。如何保持更新

图形转换器+位置特征

gnn 在普通(通常是稀疏的)图上操作,而图转换器(GTs)在全连接图上操作,其中每个节点都连接到图中的每个其他节点。一方面,这带来了节点数量 N 的 O(N)复杂度。另一方面,GTs 不会遭受长距离消息传递的常见问题——过度平滑。全连通图意味着我们有来自原始图的“真”边和从全连通图转换中添加的“假”边,我们想要区分它们。更重要的是,我们需要一种方法来赋予节点一些位置特征,否则 GTs 就会落后于 GNNs(如 Dwivedi 和 Bresson 的 2020 论文所示)。

也许今年最引人注目的两个图形转换器模型是(光谱注意力网络)和图形转换器 by 克罗伊泽、比艾尼等人 采用拉普拉斯算子的前 k 个特征值和特征向量,表明仅谱特征就可以区分被 1-WL 检验认为同构的图。由于将光谱特征与输入节点特征连接在一起,SAN 在许多分子任务上优于稀疏 gnn。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: 克罗伊泽、比艾尼等人

英等人https://openreview.net/pdf?id=OeWooOxFwDa的笔形器采用了不同的方法,利用了空间特性。首先,用中心性编码丰富了节点特征——可学习的入度和出度嵌入。然后,注意力机制有两个偏置项:节点 ij 之间最短路径的 1️⃣距离;依赖于一条可用最短路径的 2️⃣边要素编码。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

笔形位置编码方案。来源: 应等人

🏅Graphormer 完成了 2021 年 Graph ML 大满贯:在 OGB 大型挑战赛Open Catalyst 挑战赛的图形回归任务中获得第一名!(下面将详细介绍这些挑战)

🤔未决问题:可扩展性计算开销**。SAN 和 Graphormer 在分子任务上进行了评估,其中图相当小(平均 50-100 个节点),例如,我们可以运行 O(N ) Floyd-Warshall 所有对最短路径。此外,图转换器仍然受到 O(N)注意机制的限制。放大到比分子更大的图形会解决这些问题。你刚才是不是想到了 NLP 的线性变压器?😉是的,他们可能会帮忙,但由于他们从来没有实现注意力矩阵,你需要找到一个聪明的方法来把边缘特征放在这样的模型中。当然,我们会在 2022 年看到更多关于这方面的研究!**

等变 GNNs

Geoffrey Hinton 承认 equivariance 的独特之处是什么?

一般来说,等方差定义在某些变换群上,例如,三维旋转形成的 SO(3)群,三维中的特殊正交群。等变模型风靡了 ML🌪2021 年,在 Graph ML 中,它在许多分子任务中特别具有破坏性。应用于分子,等变 gnn 需要节点特征的额外输入-即,将在 n 维空间中旋转/反射/平移的分子的物理坐标的一些表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有了等变模型,不管变换的顺序如何,我们都会到达相同的最终状态。来源: 萨托拉斯、胡格博姆、韦林

Satorras、Hoogeboom、Welling 提出 EGNN 、E(n)等变 GNNs,其与 vanilla GNNs 的重要区别在于在消息传递和更新步骤中加入了物理坐标。情商。3👇将相对平方距离与消息 m 和 Eq 相加。4 更新位置特征。EGNN 在建模 n 体系统、作为自动编码器以及在量子化学任务(QM9 数据集)中显示出令人印象深刻的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

与普通 GNNs 的重要区别:等式 3 和 4 将物理坐标添加到消息传递和更新步骤中。来源: 萨托拉斯、胡格博姆、韦林

另一种选择是结合原子之间的角度,就像 T2、克利茨佩拉、贝克尔和 T4、T5 在 GemNet 中所做的那样。这可能需要将输入图转换为线图,例如边的图,其中原始图的边成为线图中的节点。这样,我们可以将角度作为边缘特征合并到新的图形中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用角度作为主要坐标。来源: 克利茨佩拉、贝克尔、居内曼

GemNet 在分子动力学任务上显示了强大的结果:COLL、MD17 和 Open Catalyst20。很明显,等方差区只是🛫的起飞,我们将在 2022 年看到更多的进步!

分子的生成模型

药物发现(DD)的整个领域得到了显著的推动🚀2021 年感谢几何 DL。DD 的许多关键挑战之一是生成具有所需属性的分子(图形)。这个领域很大,所以我们只强调模型的三个分支。

  • 规范流程。
    Satorras、Hoogeboom 等人应用上述等变框架创建能够生成具有位置和特征的 3D 分子的 E(n)等变归一化流💪

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

资料来源: Satorras,Hoogeboom 等人

  • 概率模型。石,罗等研究给定一个图,生成三维构象体,即三维结构的问题。模型 ConfGF 估计原子坐标对数密度的梯度场。这些场是旋转平移等变的,作者提出了一种将这种等变性质纳入估计量的方法。Conformer 采样本身是通过退火的 Langevin dynamics 采样完成的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

资料来源:石、罗等

  • RL 方法。用一种非常非科学的方式描述,这些方法通过一步一步地添加“积木”来生成分子。我们可以从某种程度上对这些方法进行分类,它们决定了这个构建过程。

例如,高、梅尔卡多和科利将合成能力作为构建过程的条件,即我们是否能在实验室中实际创造出这种分子。为此,他们首先学习如何创建积木的合成树(一种模板)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:【高、梅尔卡多、科利】

由 Yoshua Bengio 领导的 Mila 和 Stanford 研究人员团队提出了一个更加通用的框架,他们引入了生成流网络(GFlowNets) 。很难用几句话来概括——首先,当我们想要对多样化的候选对象进行采样时,GFlowNets 可以用于主动学习案例中,采样概率与一个奖励函数成正比。此外,他们最近的 NeurIPS’21 论文显示了 GFlowNets 应用于分子生成任务的好处。查看 Emmanuel Bengio 的博客文章,这篇文章更详细地描述了这个框架,并提供了更多的实验证据。

GNNs +组合优化和算法

2021 年是这个新兴子领域的重要一年!

徐等人 在他们杰出的 21 论文中研究了神经网络的外推,并得出了几个惊人的结果。利用算法比对的概念(由相同的作者在聚焦 ICLR 的 20 篇论文中介绍),作者表明 gnn 与动态编程(DP) 很好地对齐(查看图示👇).与 ICLR 20 的论文相比,这里作者讨论了一个更强的外推条件— 线性排列到 DP。事实上,比较寻找最短路径的经典贝尔曼-福特算法的迭代和消息通过 GNN 的聚合-组合步骤,你会发现许多共性。此外,作者表明,在对特定的 DP 算法建模时,为 GNN 选择合适的聚合函数至关重要,例如,对于 Bellman-Ford,我们需要一个min-聚合器。我还推荐看一下斯蒂芬妮·杰格尔卡的一个非常有说明性的演讲,他解释了这项工作在深度学习和组合优化 2021 研讨会上的主要成果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:徐等

为了更全面地介绍这个领域,我想强调一下 Cappart 等人 所做的 IJCAI’21 综合调查,它涵盖了组合优化中的 gnn。这篇文章首次展示了神经算法推理蓝图,该蓝图后来由veli kovi 和Blundell 以 Patterns 的形式在立场文件中进行了描述。****

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:veli kovi 和 Blundell

📘蓝图解释了神经网络如何在嵌入空间中模仿和授权通常离散的算法的执行过程。在编码-处理-解码方式中,抽象输入(从自然输入中获得)由神经网络(处理器)处理,其输出被解码成抽象输出,然后抽象输出可以被映射到更自然的特定任务输出。例如,如果抽象的输入和输出可以用图形表示,那么 gnn 可以是处理器网。离散算法的一个常见预处理步骤是将我们所知道的任何关于问题的信息压缩到标量中,如“距离或“边容量,并在这些标量上运行算法。相反,矢量表示和神经执行使得启用高维输入而不是简单的标量变得容易,并附加了一个用于优化处理器的反向投影。欲了解更多信息,请参见 Petar Velič ković的演讲🎥。

这个蓝图越来越多地被采用——neur IPS ’ 21 展示了一些很酷的作品! Xhonneux 等人 研究迁移学习是否可以应用于将学习到的神经执行器推广到新任务; Deac 等人 发现了强化学习中算法推理和内隐规划之间的联系。2022 年还会有更多!

子图 GNNs:超越 1-WL

🤝如果 2020 年是第一次尝试离开 GNN 的 1-WL-兰迪亚的一年,我们可以确认 2021 年是在beyond-1WL-兰迪亚与外星人建立稳固联系的一年👾。这种联系无疑证明了它们是有用的,因为我们现在已经有了一些强大的和更具表现力的架构,它们将消息传递扩展到更高阶的结构,如单纯复形(、和王等人)、细胞复形( CW 网)或子图。

对于后者,看看这篇由迈克尔·布朗斯坦、莱昂纳多·科塔、法布里齐奥·弗拉斯卡、哈盖·马龙、和赵在子图 GNNs 上发表的 新的精彩博文

如果你想真正深入研究 WL 最近的研究,请查看克里斯多夫·莫利斯、亚龙·李普曼、哈盖·马龙和合著者的最新调查 韦斯费勒和莱曼围棋机器学习:迄今为止的故事

可伸缩性和深度 GNNs: 100 层以上

如果你在使用 2-4 层的 gnn 时,对 100 层以上的深网或巨大的变形金刚感到嫉妒,那么是时候庆幸了🤩!2021 给我们带来了两篇论文,它们随意地训练了100-1000 层的 gnn,以及一篇关于几乎恒定大小的邻域采样的工作。

李等人 提出了两种机制,在训练极深度超参数化网络时,将 GPU 内存消耗从 L 层的 O(L) 大幅降低到 O(1) 。作者展示了如何在 CV 中使用多年的 1️⃣可逆层或高效变压器架构,如重整器;2️⃣在各层之间分享重量(捆绑重量)。然后可以训练多达 1000 层的 gnn👀。下面的图表展示了在 GPU 需求适中的情况下,层的数量的不断扩展。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可逆(Rev)和重量捆绑(WT) GNNs 的良好缩放。来源:【李】等

Godwin 等人 介绍了一种利用递归学习深度 GNNs 的方法——消息传递步骤按块组织,每个块可以有 M 个消息传递层。然后,循环应用 N 个块,这意味着块共享权重。如果你有 10 个消息传递层和 10 个块,你会得到一个 100 层的 GNN。一个重要的组件是噪声节点正则化技术,该技术扰动节点和边缘特征并计算额外的去噪损失。该架构适合更好的分子任务,并在 QM9 和 OpenCatalyst20 数据集上进行了评估。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: 戈德温等人

最后,如果我们想要将任意的 GNN 缩放到非常大的图,除了采样子图,我们没有其他选择。通常,采样 k 跳子图会导致指数的内存开销和计算图大小。

PyG、 的作者 Matthias Fey 等人 创建了 GNNAutoScale ,这是一个在常数时间内扩展 GNNs 的框架,利用了历史嵌入(以前消息传递步骤的缓存的一个奇特版本)和图聚类(在这种情况下是一个众所周知的 METIS 算法)。在预处理过程中,我们将图划分为 B 个聚类(小批量),使得聚类之间的连通性最小化。然后,我们可以在这些集群上运行消息传递,跟踪缓存中更新的节点特性。实验表明,深度网络的 GNNAutoScale(最多 64 层)的性能与整批设置一样好,但内存需求却大大降低(大约小 50 倍),因此您可以在商品级 GPU 上运行深度 gnn 和大型图形💪

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GNNAutoScale。来源: Fey 等人

知识图表

KGs 上的表征学习终于突破了传导型的天花板。

在 2021 年之前,模型被清楚地分为直推式和归纳式,具有不同的归纳偏差、架构和训练机制。换句话说,直推模型没有机会适应看不见的实体,而归纳模型太昂贵,无法在中大型图上训练。2021 年带来了两种架构

  • 在直推式和感应式环境下工作,
  • 不需要节点特征,
  • 可以以与直推模式相同的方式在感应模式中被训练,
  • 可扩展到现实世界的千克大小。

第一个是神经贝尔曼-福特网等人组成。作者找到了一种非常优雅的方式来将经典的贝尔曼-福特推广到更高层次的框架,并展示了我们如何通过用特定的运算符实例化框架来获得其他众所周知的方法,如卡茨指数PPR最宽路径。更重要的是,他们表明广义贝尔曼-福特本质上是一种关系 GNN 架构(GNNs 和动态编程之间的算法一致性的另一个确认)。NBFNet 不学习实体嵌入(只学习关系和 GNN 权重),这使得模型通过设计归纳并推广到看不见的图。该模型在关系图和非关系图上的链接预测任务上工作得非常好。应用于 KGs,NBFNet 从 2019 年起为 FB15k-237 和 WN18RR 提供了最大的性能提升,同时参数减少了 100 倍💪。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从香草贝尔曼-福特到神经贝尔曼-福特 GNN。来源: 朱等

🍰另一种方法由 Galkin 等人 (声明:本文作者之一是该论文的作者)受 NLP 中的标记化算法的启发,该算法具有固定的标记词汇表,能够标记任何单词,甚至是那些在训练时间看不见的单词。应用于 KGs, NodePiece 将每个节点表示为一组 top-k 最近锚节点(可选地在预处理步骤中采样)和围绕该节点的 m 唯一关系类型。锚和关系类型被编码成可用于任何下游任务(分类、链接预测、关系预测等)和任何归纳/直推设置的节点表示。NodePiece 特性可以由 RotatE 等非参数解码器直接使用,或者发送到 GNNs 进行消息传递。该模型在归纳链接预测数据集上的表现与 NBFNet 不相上下,并在大型图上表现出高参数效率——在 OGB 维基 2 上的节点模型需要的参数比浅的纯直推模型少约 100 倍。如果你想了解更多,请查看关于 NodePiece 的完整博文!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

节点标记化。来源: 加尔金等人

用 GNNs 进行总体上很酷的研究👀

这一节提到了几个特别酷的作品,它们使用了 GNNs,但并没有具体归入某一类别。

**黄,何,**等人在 21 上提出了正确&平滑——一种用标签传播改进模型预测的简单方法。与一个 MLP 配对,这种方法在没有使用任何 gnn 和更少参数的情况下,以最高分冲击了 OGB 排行榜!今天,几乎所有在 OGB节点分类赛道上的顶级模特都使用正确的&平滑来多挤一点点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

资料来源:黄、何等

11 月,🪄 克尼亚泽夫等人one forward pass 中预测各种神经网络架构参数的工作震动了 ML 社区。也就是说,不是随机初始化模型,而是有可能立即预测好的参数,并且这样的模型已经比随机模型好得多👀。当然,如果你用 n SGD 步骤优化一个随机初始化的网络,你会得到高得多的数字,但是这篇论文的一个主要贡献是,通常不需要 训练这个特定的架构就可以找到合适的参数。****

参数预测实际上是一项图形学习任务——任何神经网络架构(ResNet、ViT、Transformers 等)都可以表示为计算图形,其中节点是具有可学习参数的模块,节点特征是这些参数,我们有一系列节点类型(例如,线性层、Conv 层、Batch Norm,作者使用了大约 15 种节点类型)。然后,参数预测是一项节点回归任务。用 GatedGNN 对计算图进行编码,并且将其新的表示发送到解码器模块。为了训练,作者收集了一个 1M 架构的新数据集(图)。该方法适用于任何神经网络架构,甚至适用于其他 gnn!

欲了解更多信息,请查看带有示例和 Jupyter 笔记本的官方回购,以及鲍里斯·克尼亚泽夫与扬尼克·基尔彻的采访

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

预测未知模型的参数:管道。来源: 克尼亚泽夫等人

🗺DeepMind 和谷歌通过将道路网络建模为超分段的图形并在其上应用 GNNs,极大地提高了谷歌地图中 ETA 的质量。在 Derrow-Pinion 等人 的论文中,该任务被设计为节点级和图级回归。除此之外,作者描述了为了在谷歌地图规模上部署该系统需要解决的众多工程挑战。一个应用 GNNs 解决数百万用户面临的实际问题的完美例子!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: 德罗-皮恩等人

GNNs 在癌症研究中的另一个潜在应用是最近由转基因和 NEC 宣布的。根据 NEC 首席研究员 Mathias Niepert 的说法,gnn 被用于通过嵌入传播来估算缺失的患者数据(查看最近关于该方法的 Twitter 帖子),以及对候选肽进行评分以引发免疫反应。

最后,来自 DeepMind 的 Davies 等人最近使用 GNNs 来帮助制定关于核心数学问题的猜想(关于他们工作中的🪢结🪢),并且实际上发现并证明了一个新的定理!你看,GNNs 也可以处理相当抽象的事物👏

新的数据集、挑战和任务

如果你厌倦了 Cora、Citeseer 和 Pubmed——我们理解你。2021 年带来了大量不同规模和特征的新数据集。

  • OGB 在 KDD 21 年组织了 大规模挑战赛 ,用 3 个非常大的图进行节点分类(2.4 亿个节点)、链接预测(整个维基数据,9000 万个节点)和图回归(4 百万个分子)。在 KDD 杯比赛中,大多数获胜团队使用 10-20 个模特的组合——查看研讨会录音以了解更多关于他们的方法。新版本的 LSC 数据集现已推出新的排行榜!
  • Meta AI 的 Open Catalyst neur IPS ’ 21 Challenge提供了一个大分子任务——给定一个具有原子位置的初始结构,预测松弛态能量。数据集非常庞大,需要大量的计算,但组织者暗示将发布一个较小的版本,对 GPU 预算有限的小型实验室更友好一些。结果和记录是可用的——等变模型和变压器达到了顶端。事实上,Graphormer 在 OGB LSC 和 OpenCatalyst’21 中都获得了前 1 名,几乎囊括了 2021 年 Graph ML 的大满贯🏅
  • 关于图学习基准的研讨会https://graph-learning-benchmarks.github.io/@ web conf 2021 带来了一系列新的数据集,包括由 Lim 等人非同构图,由 Tsitsulin 等人图模拟,由 Rozemberczki 等人时空图,以及更多****
  • NeurIPS 的 21 个数据集&基准测试跟踪 就像一个新数据集的 SXSW 节日:今年我们有MalNet——图分类,平均图大小是 15k 个节点和 35k 条边,大大大于分子; ATOM3D —新 3D 分子任务集合; RadGraph —从放射学报告中提取信息。最后, Liu 等人报告了创建图学习数据集分类的挑战——这是一项期待已久的工作,社区肯定会从中受益。**

课程和书籍

新的和值得注意的课程和书籍:

  • 几何深度学习原型书 & 课程由迈克尔·布朗斯坦、琼·布鲁纳、塔科·科恩和佩塔尔·韦利奇科维奇主讲。包含 12 个讲座和实践教程&研讨会。如果你喜欢视频记录,迈克尔的 ICLR 21主题演讲是今年发布的关于图表的最佳视频。
  • 关于知识图谱的新开卷由 18(!)作者。整本书在网络上是免费的;它包含了很多关于方法、模式和查询的细节。

威廉·哈密顿《图形表示学》一书。虽然技术上是在 2020 年发布,但从现代深度学习的角度来看,它仍然是对 GML 的最佳简短介绍。

库和开源

2021 年发布的新库:

  • 张量流 GNN —作为张量流世界一等公民的 GNNs。
  • TorchDrug —基于 PyTorch 的 GNN 库,用于分子和 KG 任务

已建立的图形 ML 库得到更新:

  • https://www.pyg.org/PyG 2.0——现在支持异构图、GraphGym 以及一系列改进和新模型
  • DGL 0.7 —在 GPU 上进行图形采样,更快的内核,更多的模型
  • 皮克 EN 1.6 —训练 KG 嵌入的最佳库:更多的模型、数据集、指标和节点件支持!
  • Jraph——GNNs 对于 JAX 的爱好者来说,看看这篇由王俐人(DeepMind)和尼古拉·约万诺维奇(ETH Zurich)关于构建和评估 GNNs 的最新介绍

如何保持更新🤓

2021 年到此为止!很可能,我们忽略了你的图形表示学习子领域中的一些重要的东西——让我们在评论中知道你认为我们错过了什么。

如何及时了解 Graph ML 中出现的所有新的酷东西:

你坚持读完了长篇小说——你应该得到一张迈克尔·布朗斯坦与圣诞老人同构的照片!🎅

感谢 安东·齐苏林 、安瓦尔·库尔穆科夫 谢尔盖·伊万诺夫 对博文内容的帮助,以及 佩塔尔·韦利奇科维奇 对少数不精确提法的修正。

推荐系统的图形神经网络(GNN)结构

原文:https://towardsdatascience.com/graph-neural-network-gnn-architectures-for-recommendation-systems-7b9dd0de0856?source=collection_archive---------3-----------------------

高级建议的 GNN 技术回顾

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

阿丽娜·格鲁布尼亚Unsplash 上的照片

推荐系统无处不在,几乎指导着我们做出的每一个决定。从下一个节目我们将狂吃网飞到下一个我们将尝试的外卖食物,复杂的算法学习我们是谁,并使用这些知识来推动某些结果。在 B2B 领域,推荐系统正在赶上它们的 B2C 姐妹,我们在 Slimmer AI 开发的几个产品都包含推荐组件。

对于我自己的研究,我被图形神经网络(GNN)所吸引,这是最近流行的,许多问题都是用基于 GNN 的模型来解决的。gnn 的吸引力还在于开源工具和库的可用性,如 Pytorch GeometricDeep Graph Library (DGL) ,使得实现这些模型变得容易。

在本文中,我概述了如何使用 GNNs 实现推荐系统,并简要回顾了一些更流行的可用模型。要详细了解推荐系统中的 GNNs,请查看吴、等人的 2020 年调查**【2】**,这有助于我对该领域的理解。在详细介绍 GNN 在推荐中的应用之前,我将从一些关于图和 GNNs 的基础知识开始。

关于“图形”的复习

是由一组代表实体的节点/顶点和一组连接代表实体间关系的节点的组成的结构。它有几个特点,包括:

  • 边缘可以是有向(图 1a)或无向(图 1b)。即,对于有向图,关系是单向的,对于无向图,关系是双向的。
  • 在许多情况下,实体之间的关系具有不同程度的重要性,这可以在图中使用权重来区分(图 1a)。如果未指定重要性,则假设每条边都具有相同的重要性。
  • 在某些情况下,图形可以由多种类型的实体组成。例如,推荐图可以由用户和项目节点组成。这样的图被称为异构图(图 1b),而不区分节点类型的图被称为同构图(图 1a)。
  • 有许多特殊种类的图。对本文特别重要的一个图是二分图(图 1b),这是一个由两个不相交的节点集组成的异构图,边只存在于相对节点集的节点之间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

举例说明图形的不同属性。图片作者。

关于图形神经网络(GNNs)的综述

图形拓扑/结构编码了大量信息。使用传统的学习技术很难捕捉这种隐性知识。因此,将数据表示为图形有助于使底层关系清晰可见。GNNs 关注于利用这些知识的学习机制,以便为下游任务获得更好的性能,如评级预测(推荐系统中流行的任务之一)、相似内容检索等。

GNNs 的目标是使用邻域信息更好地学习实体/节点的表示 / 嵌入。GNNs 也可以用来学习 表示法,但为了简单起见,本文中我将重点介绍节点表示法。说了这么多,让我们简单看看 GNNs 是如何工作的:

  • GNNs 迭代地聚集来自邻居的特征信息,以更新每个节点的当前表示
  • 聚合函数确定如何组合从邻居收集的特征,例如平均池最大池等。
  • 下图显示了流行的 GNN 模型之一的图卷积网络(GCN)**【3】**的更新函数 f ,用于在时间 t+1 更新节点 i 的表示 h
  • 对于每个迭代,节点的当前表示被用作下游任务的输入,其损失函数更新可训练参数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在上面的更新函数中, h 代表节点 it 代表时间步长, N(i) 代表节点 iUW 是训练时更新的参数,c _ ij图片作者。灵感来自 AI 与 Letitia 的茶歇。**

因此,gnn 属于表示学习技术的范畴,该技术除了内容信息之外,还专注于捕获拓扑信息。

总而言之,GNNs 背后的三个主要思想是:

  1. 消息(信号)通过:信息传播
  2. 聚合(更新):处理接收到的信息的功能
  3. 迭代:确定信号的幅度

现在,让我们仔细看看 GNNs 的推荐。

GNNs for recommendation

推荐系统用于为给定用户生成推荐项目的列表。推荐是从可用的项目集合(例如,电影、杂货、网页、研究论文等)中提取的。、)并根据以下内容为个人用户量身定制:

  • 用户的偏好(隐式或显式),
  • 项目功能,
  • 和/或用户项目过去的交互。

用户和项目数据的数量和质量决定了推荐的质量。大多数当前最先进的推荐系统使用深度学习技术。关于这些技术的全面概述,请查看张,帅等人 2019 年的调查论文**【4】**。

根据上面对推荐系统的描述,可以将数据建模为图:用户和项目作为节点,边表示节点之间的关系。这些关系可以从大多数推荐系统的输入数据中提取/推断出来。

有模型可用于处理顺序推荐**【2】**,其中系统试图基于用户与前一时间步中的项目之间的“交互顺序”来推荐下一个项目。为了简单起见,我只关注一般的建议(建议的顺序是独立的)。

根据我们如何将可用数据建模为图形,有几种类型的基于 GNN 的模型可用于解决推荐问题。这些模型可以大致分为 3 种类型:

  1. 使用用户-项目交互信息的 GNNs
  2. 用社交网络信息增强的 GNNs
  3. 用知识图增强的 GNNs

为了说明推荐的三种类型的 GNN 模型,考虑向专家推荐内容的问题,这将在本文中使用。目标是推荐与专家之前撰写的出版物相似的内容。标题简介关键词等信息。,有可能被用作内容的特征。此外,我们可以通过利用专家的研究兴趣、参加的会议等来模拟专家。

仔细观察:使用用户-项目交互信息的 GNNs

在这类模型中,数据被建模为二分图。在我们的示例中,专家构成一组节点,内容构成另一组节点,如果专家是内容的原始作者之一,则节点之间存在边。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上图显示了一个用户-项目交互图的例子,这是一个由专家节点和内容节点组成的二分图,其中表示专家是否是内容的作者之一。图片作者。

首先,下面是使用用户-项目交互的 GNNs 类别中的流行模型,它们的实现是可用的,并且易于实验:

GCN

**【3】【GCN 图卷积网】是 GNN 最早的作品之一。神经图协同过滤(NGCF)【5】**是一种 GCN 变体,它使用用户-项目交互来学习揭示用户之间行为相似性的协同信号,以改进推荐。Yelp2018亚马逊图书数据集上的评分预测被用来衡量模型的性能。

实现 : GCN — PyG ,NGCF: Tensorflow

图表语法

graph sage**【6】是一个提出采样固定大小的邻域,而不是使用每个节点的所有邻居进行聚合的框架。它还提供了 minmax、sum pooling 作为聚合器的选项,并使用串联操作来更新节点/边/图表示。PinSage【7】**是 GraphSage 的一个变种,作为处理 web 级图形的解决方案而提出。Pinterest 的 PinSage 引入了一种采样技术,根据最高访问量对固定大小的社区进行采样。或者,可以用区分节点重要性的任何特征来代替访问计数。

实现 : GraphSage — PyG ,PinSage — DGL

GAT

图形注意网络**【8】使用注意机制来学习邻居的影响力;这个影响用于确定邻居在聚合步骤中的贡献。多分量图卷积协同过滤(MCCF)【9】**就是这样一种方法,它使用注意机制来学习潜在的购买动机,并将其与来自显式用户-项目交互的特征相结合,以获得更好的推荐。作者对 MCCF 在 MovieLens亚马逊产品推荐Yelp 数据集上的表现进行了基准测试。

实现 : GAT — PyG ,MCCF — Pytorch

细看:GNNs 增强了社交网络信息

在这类模型中,数据建模为:

  1. 两个图:一个二分图用户项目图和一个单独的社交网络图,由用户和表示他们之间某种关系的边组成,或者
  2. 由用户和项目组成的异构图,通过用户-用户和用户-项目边相互连接。

回想一下我们将内容与专家匹配的例子。我们可以根据他们的兴趣,他们可能属于的共同群体,或者任何其他社会或职业联系来建立一个社交网络图。以这种方式定义社交网络图,并使用学习到的特征,已经显示出对包括推荐**【2】**在内的许多下游任务是有益的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上图展示了一个社交网络图的例子。图片作者。

以下是这一类别中一些有趣的模型(带有社交网络信息的 GNNs ),其源代码是可用的:

DiffNet++

diff net++**【10】**提出了一种网络,该网络从两个独立的图中更好地学习用户嵌入,其中潜在的用户兴趣信号来自用户-项目图,而用户影响信号来自用户-用户图。在 YelpEpinionsDianping 上进行基准测试。

实现:diff net++—tensor flow

GraphRec

graph rec**【11】**是另一个框架,它利用用户的社交网络来获得更好的推荐。在这种方法中,该模型从同一用户-项目异构(非二分)图中捕获用户-项目交互和用户意见。该框架执行:

  1. 用户建模,丰富用户嵌入,利用用户-项目聚合和用户-用户嵌入(社会关系),以及
  2. 项目建模,其中项目嵌入使用用户-项目嵌入(即多个用户对该项目的看法)来丰富。

对于评级预测的下游任务,用户和项目嵌入的串联被用作输入。在 Epinions 和 Ciao 数据集上的框架基准。

实现 : GraphRec — PyTorch

细看:用知识图增强的 GNNs

该类别中的模型专注于改进项目表示,这进而导致基于用户过去与可比项目的交互的更好的项目推荐。知识图常见于推荐领域,它根据项目的属性对项目进行链接或分组。然而,由于项目之间多类型关系的复杂结构,这些图形的处理可能具有挑战性。

回到我们将内容与专家相匹配的例子,可以使用内容的各种属性(比如共同的主题或题目)来形成知识图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上图展示了一个知识图的示例,其中的节点是通过不同关系相互链接的内容。可以利用这种关系来丰富专家和内容节点的表示。图片作者。

在用知识图增强的 GNNs 类别中,一个特别有趣的模型是 KGAT:

KGAT

推荐用知识图注意力网络(KGAT)**【12】**基于 GAT。它构建了一个异构图,由作为节点的用户项目属性组成。它进一步递归地传播来自节点邻居的嵌入,以聚集和更新每个节点嵌入。邻居可以是任何类型的节点(例如,用户、项目或属性),并使用注意机制来学习邻居的重要性。评分预测任务用于性能分析,并在亚马逊图书Yelp2018Last-FM 数据集上进行测量。

实现 : KGAT — 张量流

选择合适的型号

我选择上面提到的模型来说明各种类别的主要原因是因为在写这篇文章时它们的可访问性(开源实现、数据集的可用性等)。,).因此,我想强调的是,这个列表并不是绝对的,我只是触及了表面。

虽然每种类型的模型都有自己的优势,但选择正确的模型取决于可用数据的多样性。虽然来自社交网络图的信息已经被证明可以改善推荐**【10】**,但是并不是所有的域都可以容易地获得这样的信息。另一方面,在我们的数据时代,知识图谱非常丰富(例如,维基百科DBpedia 等)。),但是维护这样的图是资源密集且耗时的。

由于上述原因,比较不同的模型类型变得困难。在用于基准测试的各种数据集当中,Yelp 数据集是广泛使用的基准数据集,因此我将在下面使用它来比较这些模型。下面是 Yelp 数据集上 NDCG 分数(排名质量的标准衡量标准之一)的对比:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所有上述实验使用 64 的嵌入维数和预处理的 Yelp 数据集,该数据集具有 17237 个用户、38342 个项目和 143765 个交互(边)。吴,乐等实验**【10】**。

从以上结果可以看出,从社交网络图中获取辅助知识的 DiffNet++在比较的模型中表现最好。虽然 KGAT**【12】**也在 Yelp 数据集上进行了基准测试,但它使用了由 45919 个用户、45538 个项目和 1185068 个交互(边)组成的不同的更大版本的数据集,因此,它与上述模型不可比。使用辅助知识源已被证明可以提高推荐的质量,因此,如果使用社交网络和知识图是可行的,应该选择混合模型。

收尾思路

B2C 体验完全重塑了我们对推荐系统的期望,B2B 的门槛也大大提高了。出于这些原因以及更多原因,高级推荐系统需要智能和直观的解决方案,以充分利用可用数据。

推荐数据——由用户和商品组成——可以自然地建模成一个图表,而不需要太多的努力。GNNs 具有从节点信息(个体信息)和边信息(关系信息)学习的优点,并进一步与利用流行的知识图和社会网络图的模型相结合,使得 GNNs 成为推荐的有前途的解决方案。

作为一个非常活跃和动态的研究领域,新技术经常在各种会议上介绍。当然,当我们进一步将 GNNs 应用到我们自己的推荐系统中来取悦用户并提高他们对我们产品的满意度时,我会关注这个空间。

我错过了你最喜欢的 GNN 推荐技巧了吗?或者您在 B2B 软件产品中尝试过以上任何一种吗?我很想收到你的来信!请跟随更苗条的人工智能创新团队:https://medium.com/slimmerai/innovation/home

参考文献

吴,,等图神经网络综述 (2020),IEEE 神经网络与学习系统汇刊 32.1(2020):4–24。

****【2】吴,,等,图神经网络在推荐系统中的应用综述 (2020),arXiv 预印本 arXiv:2011.02260。

****【3】Kipf,Thomas N,和 Max Welling,利用图卷积网络的半监督分类 (2016),arXiv 预印本 arXiv:1609.02907。

****【4】张,帅等,基于深度学习的推荐系统:综述与新视角 (2019),ACM 计算调查()52.1(2019):1–38。

****【5】,王,向等,神经图协同过滤 (2019),第 42 届国际 ACM 信息检索研究与发展会议论文集。

****【6】汉密尔顿,林子幸,Rex Ying,Jure Leskovec,大型图上的归纳表征学习 (2017),第 31 届神经信息处理系统国际会议论文集。

****【7】应,Rex,等,面向 web 规模推荐系统的图卷积神经网络 (2018),第 24 届 ACM SIGKDD 知识发现国际会议论文集&数据挖掘。

****【8】veli kovi,Petar,et al .图注意网络 (2017),arXiv 预印本 arXiv:1710.10903。

****【9】,王,肖等,多分量图卷积协同过滤 (2020),人工智能会议论文集。第 34 卷。№04.

****【10】吴,乐等, Diffnet++:一种面向社会推荐的神经影响和兴趣扩散网络 (2020),IEEE 知识与数据工程汇刊。

****【11】范,,等,面向社会推荐的图神经网络 (2019),环球网大会。

****【12】王,向等, KGAT:知识图注意网络推荐 (2019),第 25 届 ACM SIGKDD 知识发现国际会议论文集&数据挖掘。

图形神经网络:2008 年以来的学习之旅——深度行走

原文:https://towardsdatascience.com/graph-neural-networks-a-learning-journey-since-2008-deep-walk-e424e716070a?source=collection_archive---------23-----------------------

图形神经网络之旅的第三部分。今天,佩罗齐 2014 年论文《深度行走:社会表征的在线学习》的理论背景

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Wladislaw SokolowskijUnsplash 上拍摄

https://medium.com/@stefanobosisio1/membership

在本系列的第一篇文章中,我们学习了图形神经网络模型是如何工作的。我们看到,GNN 返回基于节点和基于图形的预测,它有坚实的数学背景支持。特别地,转移函数和输出函数满足 Banach 不动点定理。然而,尽管成功的 GNN 应用,也有一些障碍,如解释[1]。GNN 模型的主要思想是建立状态转换,函数 f𝓌g𝓌 ,并迭代直到这些函数收敛在一个阈值内。这是一个强约束,可能会限制模型的可扩展性和表示能力。其次,GNN 不能利用表示学习,即如何从低维特征向量中表示图形。第三,GNN 基于迭代学习过程,其中标签是混合的特征。这种混合可能会导致一些级联错误,如[6]所示

为了解决这些问题,DeepWalk [2]在 2014 年出现,作为 GNN 的一个可能的增强。DeepWalk 是第一个实现嵌入方法的图,它基于表示学习和语言建模——skip gram 模型[3]

深度行走模型

定义

DeepWalk 通过对一系列短距离随机行走建模来学习图顶点的社会表现。社会表征是跨越图形顶点的隐藏连接,可以解码为潜在特征。因此,DeepWalk 读取输入图形并输出图形的潜在表示。

如何获得图形的潜在表示?嗯,这里我们有与斯卡塞利的方法的主要区别。斯卡塞利的 GNN 是一种有监督的方法,而 DeepWalk 是一种无监督的方法,因此它必须从图的特征中学习,以理解和捕捉图的结构和目标,独立于节点或图的标签。这种映射方法已被证明比其他社会维度分类器更有效[4,5],将微观 F1 分数的分类性能提高了 5-10%,甚至在训练数据少 60%的情况下也优于“竞争对手”。最后,DeepWalk 框架允许简单的可伸缩性,以处理网络规模的图表,如脸书,Twitter 或 Youtube。

数学洞察 I:定义

DeepWalk 基于节点的社会属性返回输入图的有洞察力的潜在表示。图定义为数学函数 G=(V,E) ,是由 V 顶点和 E 边组成的。顶点可以部分标记, *Y 标记,*并由属性/特征 *X 描述。*属性/特征是实数域的一部分,其维数为 *S,*和标记由实数向量定义。

给定输入真实域,DeepWalk 将节点的特征 X 转换为潜在域,其维度为 d. 这种映射描述了具有较小特征子集的社会现象,这有助于更好地理解底层数据的关系,并在摄取到 PCA 或 t-SNE 算法中时具有即时的视觉答案。

为了理解 DeepWalk 的理论和过程,在处理实际实现之前,我在这里提供了一个空手道俱乐部图的例子。图 1 示出了输入图 G,其中顶点是 34,边是 78。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1 输入空手道俱乐部图表

输入特征矩阵 X 描述了节点之间的关系,我们希望使用 DeepWalk 找到图形的潜在表示,以找到俱乐部中的最佳分组。例如,潜在表示维度可以是 10,因此 DeepWalk 将产生 10 个新特征来将图细分成组。

数学洞察 II:随机漫步的产生

为了实现潜在表示,DeepWalk 开始从输入图创建γ(例如 100)个随机行走。随机游走 Wvᵢ 从顶点 vᵢ 开始,随机选择 k (例如 10 个)其他图的顶点 vₖ (例如见图 2)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:顶点 22 和 31 的截断随机行走的例子。随机漫步允许轻松地同时探索多个图形区域

随机漫步的选择允许算法从网络中提取信息,一方面保证计算的容易并行化,另一方面保证探索图形的动态方式,一旦图形改变,可以封装新的信息。后一方面允许从单个图子集迭代更新模型训练,而没有整个图计算的问题。

数学洞察 III:语言建模

一旦收集了γ(例如 100)“截断的”随机游走,就有可能利用一些语言建模来提取输入社会表征的潜在描述。特别地,随机漫步的集合可以被看作是由 k 单词 w : Wvᵢ = (w₀,w₁,…wₖ).)组成的句子的编码集合(图 3 显示了 10 个随机漫步的例子)从这里,DeepWalk 计算所有输入语料库 G 的单词嵌入或节点嵌入表示。这是一个值得注意的点,因为这是在图形世界中第一次有人写节点嵌入的概念。

图 3:从顶点 22、13、31、16、10、5、17、16、24 和 18 开始的 10 次随机漫步。

单词嵌入可以由一个函数φ来描述,该函数的值位于实数域中。φ是一个矩阵,它的维数是顶点数 V 和潜在维数 d (在这个例子中是 34 x 10)。目标是在给定所有先前访问过的顶点嵌入的情况下,检索观察到顶点 vᵢ 的可能性:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 1:给定所有先前的顶点嵌入,顶点 vi 被观察到的可能性

然而,这种计算取决于图的维数和随机游走的长度,因为它们在增长。等式 1 是计算性的,效率不高。在[7] [8]中提出了一个解决方案,其中问题是相反的。如图 4 所示,我们将计算一个单词在给定上下文中作为邻居出现的可能性,而不是预测一个句子中缺失单词的出现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 SkipGram 方法的直观示例。给定一个句子,我们希望预测一个单词与给定单词相邻的可能性(例如 walk)。

这种方法称为 skip gram[7–11],旨在解决这一优化问题:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 SkipGram 的优化问题。目的是在给定单词 v_i 的映射的情况下,通过估计上下文单词的对数似然来最小化嵌入表示

从等式 2 可以描述 d 维潜在表示中的顶点,使得相似的顶点具有相似的表示。

数学洞察 IV:分层 Softmax

仔细观察 SkipGram 算法,我们可以获得以下“成分”:

  • 尺寸为 w 的窗口滑过输入序列
  • 单词嵌入潜在维度 d
  • 一个 2 层神经网络,接收输入语料库
  • 计算单词概率分布的激活层

对于给定随机漫步中的每个顶点 vᵢ ,我们有一个表示向量φ(vᵢ。给定这个顶点表示,我们希望在随机行走中最大化它的邻居的概率(等式 2)。这样的后验分布可以通过几种算法来学习。在 DeepWalk 中,该模型使用分层的 Softmax 方法[12,13],这减轻了计算成本并加快了训练时间,从而逼近概率分布。计算后验概率可能会导致巨大的工作量,这等于图中顶点的数量(在某些情况下高达数十亿)。

分级 Softmax 基于一个二叉树,即霍夫曼树/编码,它确保了属于任何树节点每一侧的点的分布之间的平衡。来自等式 2 的顶点 vᵢ 是根节点。从那里,我们可以从随机漫步到最后一个顶点创建分支。最终的后验概率是通过从词根开始遍历树来计算我们遇到的每个单词的概率之和。

最后备注:想象嵌入

最后会有什么?一旦 DeepWalk 已经运行,Skipgram Word2Vec模型将返回我们的输入图的潜在空间描述,即一个图嵌入文件:

图 5:空手道俱乐部图的最终嵌入示例。数字 34 和 10 是图的节点数和潜在表示维度。对于每个顶点节点(每行的第一个数字,例如 34,1,33,3,2),我们可以找到相关的潜在表示坐标

对于每个顶点,该文件报告模型的嵌入,即顶点在潜在表示空间中的位置。我们如何使用这种表示法?嗯,我们可以使用至少两种分解算法来获取这样一个空间的“人类”表示。第一个是 t-SNE 方法【14】,第二个是主成分分析(PCA) 。图 6 显示了空手道俱乐部输出嵌入的 PCA 分解。正如你所看到的,根据输入特征/节点间的关系,DepeWalk 可以检索至少 3 个空手道俱乐部细分的主要组。这使得人们可以分析巨大的图表,例如脸书网页,了解网页之间的社会关系,而不用担心处理表示和标签。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6:空手道俱乐部深走嵌入的 PCA 2 维表示

请继续关注我们的下一篇文章:DeepWalk 的两个实际应用,以全面了解 Python 实现:)

如果有任何问题或意见,请随时给我发电子邮件,地址是:stefanobosisio1@gmail.com,或者直接在 Medium 这里。

文献学

  1. 周,解,等,“图形神经网络:方法与应用综述”艾公开赛1(2020):57–81。
  2. 佩罗齐、布莱恩、拉米·艾尔弗和史蒂文·斯基纳。"深度行走:社交表征的在线学习."第 20 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。2014.
  3. 《向量空间中单词表征的有效估计》arXiv 预印本 arXiv:1301.3781 (2013)
  4. 唐、雷、。"通过潜在社会维度的关系学习."第 15 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。2009.
  5. 唐、雷、。“利用社交媒体网络进行分类。”数据挖掘和知识发现23.3(2011):447–478。
  6. 内维尔,詹妮弗和大卫·延森。"使用集体推理的模型偏差/方差分解."机器学习73.1(2008):87–106。
  7. 《向量空间中单词表征的有效估计》 arXiv 预印本 arXiv:1301.3781 (2013)。
  8. 单词和短语的分布式表征及其组合性。神经信息处理系统的进展。2013.
  9. 大卫·格思里等着,〈跳过语法建模的更近距离观察〉。 LREC 。第六卷。2006.
  10. Gittens,Alex,Dimitris Achlioptas 和 Michael W. Mahoney。" Skip-Gram Zipf+Uniform =矢量可加性."计算语言学协会第 55 届年会会议录(第一卷:长篇论文)。2017.
  11. 明诺、大卫和劳雷·汤普森。"负抽样跳跃图的奇异几何."自然语言处理中的经验方法。2017.
  12. Mnih,Andriy 和 Geoffrey E. Hinton。"一个可扩展的分层分布式语言模型."神经信息处理系统进展21(2008):1081–1088。
  13. 莫林,弗雷德里克,还有约舒阿·本吉奥。"分层概率神经网络语言模型."人工智能与统计国际研讨会。PMLR,2005 年。
  14. 辛顿、杰弗里和萨姆·t·罗伊斯。“随机邻居嵌入。”钳口。第 15 卷。2002.

图形神经网络:2008 年以来的学习之旅——图形卷积网络

原文:https://towardsdatascience.com/graph-neural-networks-a-learning-journey-since-2008-graph-convolution-network-aadd77e91606?source=collection_archive---------15-----------------------

图形卷积网络(GCN)在数学上很难理解,但是让我们跟随我的第四篇文章,一步一步地分解 GCN

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

约翰·罗德恩·卡斯蒂略在 Unsplash 上拍摄的图片

https://medium.com/@stefanobosisio1/membership

我以前关于图形和 ML 的帖子:

在我们之前的文章中,我们看到了斯卡塞利的图形神经网络思想[1–4]如何彻底改变了构建典型 ML 问题的方式。自 2008 年以来的几年中,图上的 ML 已经成为一个热门话题,越来越完善和改进了 Scarselli 的第一个开创性方法。上一次我们看到了 Perozzi 的 DeepWalk 方法[5]对 GNN 的改进,社区第一次开始讨论“节点嵌入”[6–8]。

今天要给大家展示一个非常流行的算法:图卷积网络[9]。这篇文章涵盖了 2014 年至 2017 年间的出版物。在这 3 年里,科学家们投入了大量的精力将著名的卷积神经网络方法应用于图形。事实上,为什么卷积在图像上非常有效?为什么不能直接应用到图中?如何将图转化为卷积项?有什么数学方法可以让我们达到这个目的吗?

在这篇文章中,我们将涵盖 GCN 的理论方面,从定义卷积运算到图形卷积。下一次,我们将介绍 Kipf GCN 算法的 Tensorflow 实现。

卷积什么?

神经网络是一个连续的仿射变换【15,16】:给定一个输入向量,网络将其乘以一些矩阵,生成一个输出。输入向量可以是 1D 信号、图像、视频,并且通常是多维数组。该阵列具有不同的轴,例如,图像具有专用于 RGB 通道的轴,另一个轴定义高度,另一个轴定义宽度。仿射变换中不使用轴,这里卷积开始发挥重要作用,以帮助神经网络输出产品。离散卷积[17]是一种线性变换,,其中输入特征图和卷积核相乘

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1:图像卷积的例子。A)3×3 像素大小的核乘以给定图像(输入特征图,例如 10×10)中的重叠区域。橙色阴影区域定义了与卷积(黑色)内核相乘的输入要素地图区域。b)对于重叠的 3x3 区域,点积返回 1 个单值。基于步距值,卷积继续下一个输入区域(例如,这里我们将卷积核移动 3 个像素)。作者图片

每个重叠的输入特征地图片是具有滑动卷积核的点积,返回最终的输出图像/矢量。为了固定一些关于卷积的一般概念,我们可以用数学方法将卷积定义为积分:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 1:卷积积分。在时域中,在输入特征矩阵 f 上执行的卷积是输入 f 的域上的积分

其中 f 为输入特征图,圆星为时域卷积运算, g 为输入卷积核。卷积是在输入特征映射域τ上的积分,由 定义(例如,这可以是立方体、由图像定义的平面、向量等), g(t- τ) 是卷积核,其在输入特征映射上滑动τ步 f(τ) 。这个积分可以转换成一个和,得到一个离散的卷积。这里,内核可以基于以下参数化:

  • n 输出特征地图的数量
  • m 输入特征地图的数量
  • k 轴上定义的ⱼthe 内核尺寸 j

卷积层沿轴 j 的输出大小 oⱼ 受以下因素影响:

  • Iⱼ*t31】输入沿轴尺寸 j*
  • kⱼ 沿轴线的内核尺寸 j
  • sⱼ 沿轴的步幅 j
  • pⱼ 沿轴补零 j

我们可能会发现这些术语不时出现在我们的卷积码中,为了使它更清楚:

  • 步幅是内核的两个连续位置之间的距离
  • 零填充是添加到图像中的零的附加“帧”,通常是为了使图像大小达到 2 的幂

卷积与神经网络配合得很好,提供了输入信号的线性变换。然而,卷积只有且仅当:

  • 可以在网格上描述输入信号(例如向量、图像、3D 立方体)
  • 输入具有主要的局部统计(例如,一组像素主导图像的信息内容)

当处理 3D 网格或社交媒体数据,即图形时,这是一个很大的问题。这些对象没有基于网格的数学域,因此卷积不能将图形作为输入信号进行处理。然而,数学可以帮助我们,提供一个绝妙的解决方案。

图表:数学见解

为了在图上应用卷积,第一个技巧是获得地图位置 [10]的新定义。在图像情况下,局部性可以被认为是主要的局部统计。在图中,G=(N,E) (或 G=(V,E) 根据 Kipf 的论文【9】),给定阈值δ,局部性可以基于节点的邻域来表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 2:图中的局部性。给定节点特征必须满足的阈值,我们可以定义节点 j 的局部性,查看满足给定特征值 Wij 阈值的所有节点 I

在给定一个节点 j 的情况下,邻域局部性可以被表示为其特征 W ᵢⱼare 大于给定阈值的所有那些节点 i

由此,有可能得到该图的紧凑表示,其中节点的邻域平均值可以用作节点特征值,如图 2 所示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:图中的位置。通过等式 2 定义局部性可以通过将其特征与其所有相邻(红色圆圈)特征的值进行平均来获得红色节点的隐藏表示。图片由作者提供,灵感来自吴等人【18】

对于平均局部性,卷积滤波器可以接受邻域主导统计,输入层的大小最大为 O(Sn)* ,其中 S 是给定 n 个节点的邻域大小的平均值。

第二个基本技巧是从图的数学表示中提取属性,拉普拉斯矩阵L【19】。一个拉普拉斯定义为 L = D — A ,其中 D 为度矩阵, A 为邻接矩阵。 D 矩阵指出每个节点有多少个连接,而 A 哪些节点相互连接(图 3)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3 左边的示例图,每个节点的度 D 矩阵,邻接矩阵 A 和拉普拉斯 L,其中 L=D-A。

因此,Laplacian 是描述图以及节点的连接如何影响图的动力学的一种伟大的、简洁的和高度信息化的方式。为了进一步欣赏和理解拉普拉斯在图上的作用,我们可以看到一个经典的例子,它解释了热量如何在给定的图上扩散。给定一个热变量φ,其中φᵢ是节点 i 和节点 jφⱼ的热量,从经典物理学中我们知道从 i 传递到 j 的热量与材料热容 κ 成正比,如κ(φᵢ—φⱼ)。因此,热量随时间在曲线图中的演变可以通过以下等式来描述:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 3:图上的热量方程。节点 I 和 j 之间的热传递可以容易地分解成图的拉普拉斯算子

这个等式可以用 Python 代码实现,我们可以得到热扩散:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4:通过拉普拉斯热方程在图上的热扩散。随着时间的推移,热量在节点的邻居之间平稳地扩散。图片由 Ctralie知识共享许可链接

正如你所看到的,拉普拉斯矩阵 L 告诉我们热量如何从(本例中为三个)起始点均匀地扩散到整个图表中。

填补空白:拉普拉斯和傅立叶变换

L 可以表示为对称正交矩阵(等式 4)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 4:拉普拉斯算子可以表示为对称正交矩阵

其中 I 是单位矩阵, -1/2 是度矩阵 D 的幂, A 是邻接矩阵。对称正交 L 矩阵是半正定的,这保证了它有实的特征向量和特征值。

该条件允许通过频谱分解(等式 5)来表达 L

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 5:拉普拉斯矩阵的频谱分解

其中 U 是正交矩阵基,λ是具有正特征值的对角矩阵, T 幂代表转置。构成实数域中的标准正交基。由此可见, L 的每个特征向量可以与图中的相应节点相关联。如果节点改变位置,那么特征向量将相应地重新排列— *排列不变。*其次, L 的本征函数可以进一步重排为复指数。

此时,你的脑海中应该会响起一个铃声。通过欧拉公式,复指数可视为时域中的一系列正弦曲线。这意味着傅立叶变换和拉普拉斯特征值之间存在关系。在傅立叶域中,卷积(等式 1)是输入信号 x 和卷积核 gϑ:之间的乘法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 6:输入信号的拉普拉斯算子(图)和傅立叶域中的卷积之间的关键关系

其中 F 代表傅立叶变换, U 是归一化图拉普拉斯的特征向量的矩阵(等式 5)。这意味着拉普拉斯算子定义了傅立叶基,因此它返回输入图的傅立叶基视图,因此拉普拉斯算子可用于计算图上的卷积。具体而言,通过计算图的拉普拉斯算子的特征向量,可以在给定图的频谱上计算卷积及其权重[20]。

Thomas Kipf 和 Max Welling 在 2017 年发表的《图形卷积网络》

现在,所有这些数学框架都很棒,我们可以考虑将拉普拉斯谱分解应用于一个图,将其传递给一些神经网络层和激活函数,工作就完成了。不幸的是,通过拉普拉斯算子的卷积在计算上是不可行的,并且非常昂贵。为了解决这个问题,Kipf 和 Welling 以及 Hammond 在 2011 年的论文中提出了傅立叶卷积滤波器 gϑ:的切比雪夫多项式 Tₖ(x) 的截断展开

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 7:用切比雪夫多项式逼近卷积滤波器

其中*θ’*表示切比雪夫多项式系数的向量, Tₖ 是切比雪夫多项式的递归公式,λ是基于图拉普拉斯矩阵的最大特征值的重定标常数。将等式 7 并入等式 7,可以获得卷积的最终切比雪夫近似:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 8:图形卷积的切比雪夫近似

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 9:重新缩放的拉普拉斯算子

其中 tilded L 是重新缩放的图拉普拉斯算子(等式 9)。该表达式是 K 局部化的,即它是拉普拉斯算子中的第K阶切比雪夫多项式,因此它仅依赖于距离中心节点最多 K 步的节点 N (重新定义图的局部性)。然后计算复杂度降低到 O(E) ,所以依赖于边数。

给定等式。8 上图卷积网络可以通过堆叠多个卷积层来实现,每层之后是逐点非线性。因此,对于给定的层 l+1 ,图的逐层传播将是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 10:GCN 的逐层传播规则

其中 H 是第ll+1层的激活矩阵,σ是类似于 ReLu 的激活函数, W 是特定层的可训练权重矩阵。这是图卷积神经网络的核心公式,由 Kipf 在 2017 年提出。现在让我们看看空手道俱乐部的 Python 实现!

空手道俱乐部和 GCN

首先,让我们直接从networkx Python 库加载空手道俱乐部:

图 5:导入库并创建空手道幼崽

其次,我们可以创建图邻接矩阵adj和一个简单的一键编码图特征矩阵X :

图 6:创建空手道俱乐部邻接表和特征(一键编码矩阵)

然后,我们将创建度矩阵deg,通过一个自连接邻接矩阵adj_self,即带有自项连接的邻接矩阵:

图 7:邻接自连接矩阵和归一化度矩阵

现在,是时候实现 GCN 方法了,如图 8 所示。最初,我们需要定义 ReLu 函数,这只是np.maximum(input_value, 0)。其次,我们可以定义 GCN 中的逐层传播规则,即等式 10。该函数将邻接矩阵、度矩阵、图形特征矩阵和第 I 层权重作为输入。最后,初始化层权重,设置 2 层——但是你可以设置任意多的层——给 GCN 一个机会!

图 8: GCN 实现:ReLu 函数、分层传播、权重初始化和模型运行。

请继续关注我们的下一篇文章:我们将深入研究 Kipf 使用 Tensorflow 的 GCN 实现。

如果有任何问题或意见,请随时给我发电子邮件,地址是:stefanobosisio1@gmail.com,或者直接在 Medium 这里。

文献学

  1. 《网页排序的图形神经网络》。2005 年 IEEE/WIC/ACM 网络智能国际会议(WI’05) 。IEEE,2005 年。
  2. 戈德堡,安德鲁 v,和克里斯哈里森。"计算最短路径:搜索符合图论."汽水。第五卷。2005.
  3. 《网页排序的图形神经网络》。2005 年 IEEE/WIC/ACM 网络智能国际会议(WI’05) 。IEEE,2005 年。
  4. 《图形神经网络模型》 IEEE 神经网络汇刊20.1(2008):61–80。
  5. 佩罗齐、布莱恩、拉米·艾尔弗和史蒂文·斯基纳。"深度行走:社交表征的在线学习."第 20 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。2014.
  6. 《向量空间中单词表征的有效估计》arXiv 预印本 arXiv:1301.3781 (2013)
  7. 唐、雷、。"通过潜在社会维度的关系学习."第 15 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。2009.
  8. 唐、雷、。“利用社交媒体网络进行分类。”数据挖掘和知识发现23.3(2011):447–478。
  9. 基普夫,托马斯 n,和马克斯韦林。“图卷积网络的半监督分类.” arXiv 预印本 arXiv:1609.02907 (2016)。
  10. 琼·布鲁纳等着《图上的谱网络和深局部连通网络》第二届学习代表国际会议,ICLR 。第 2014 卷。2014.
  11. 阿特伍德,詹姆斯和唐·陶斯利。"扩散卷积神经网络."神经信息处理系统的进展。2016.
  12. 迪费拉德、米歇尔、泽维尔·布列松和皮埃尔·范德盖恩斯特。"具有快速局部谱滤波的图上的卷积神经网络."神经信息处理系统进展 29(2016):3844–3852。
  13. 学习分子指纹的图形卷积网络。 arXiv 预印本 arXiv:1509.09292 (2015)。
  14. 哈蒙德、大卫·k、皮埃尔·范德盖恩斯特和雷米·格里邦瓦尔。"通过谱图论研究图上的小波."应用和计算谐波分析30.2(2011):129–150。
  15. 学习仿射变换。模式识别32.10(1999):1783–1799。
  16. 李,文静,和唐利。"仿射不变匹配的 Hopfield 神经网络."IEEE 神经网络汇刊 12.6(2001):1400–1410。
  17. 离散傅立叶变换和卷积的算法。斯普林格,1989 年。
  18. 吴,,等,“图神经网络综述” IEEE 神经网络和学习系统汇刊32.1(2020):4–24。
  19. 《拉普拉斯矩阵》 https://mathworld。 沃尔夫拉姆。com/ (1999)。
  20. Singh,Rahul,Abhishek Chakraborty 和 B. S. Manoj。“基于有向拉普拉斯的图形傅立叶变换.” 2016 国际信号处理与通信会议(SPCOM) 。IEEE,2016。

图形神经网络:2008 年以来的学习之旅——第一部分

原文:https://towardsdatascience.com/graph-neural-networks-a-learning-journey-since-2008-part-1-7df897834df9?source=collection_archive---------17-----------------------

图形神经网络获得了越来越多的成功,但它们到底是什么?它们是如何工作的?让我们一起来看看这些故事中的图表吧!今日:斯卡塞利关于图形神经网络的开创性论文

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由张秀坤·施罗德Unsplash 上拍摄

https://medium.com/@stefanobosisio1/membership

数据通常很容易被形象化并解释为图表。除了揭示数据点之间的潜在关系,图表还有助于在复杂的模式中找到隐藏的答案。因此,图形应用无处不在也就不足为奇了,从社交媒体分析[1–5]到神经科学[6,7],页面排名[8–10],最短路径理论[11–14]和化学[15–19]。

自 2006 年以来,随着图形神经网络应用的新概念,图论与机器学习有了密切的联系。Scarselli 和 Gori [20]在 2006 年发表了第一个建议,随后在 2008 年[21]通过论文“图神经网络模型”对其进行了概括。在这里,作者为现代图形神经网络奠定了数学基础。从那以后,文献中出现了 graph ML 作品[22–28]的高峰,这使得图形世界越来越进化,更精确地定义了这些数学结构的关键元素,以及如何将它们与更精确的机器学习算法联系起来。

我认为每一篇关于图论和 ML 的论文都是一次冒险,作者们正在建立他们的术语和数学发展。因此,我想开始这一系列关于图形的教程,用严密的数学和 Python 中的计算例子给出一个简单的解释。今天,我们将从斯卡塞利的主要论文“图形神经网络模型”开始这一旅程。让我们开始吧!

图形神经网络模型

定义

图形神经网络(GNN)源于两种 ML 技术:递归神经网络(RNN)【30–32】和马尔可夫链【33–35】,其中的基本思想是使用图形编码数据,利用节点之间的关系。特别地,RNN 方法是图集中的,其中用户的目标是在用带标签的图训练之后给给定的图加标签。马尔可夫链方法是以节点为中心的,其中每个节点都被标记,用户正在寻找节点级的预测。GNN 模型封装了从这些以前的模型中获得的知识,适用于以图形和节点为中心的应用程序。

此外,GNN 推广了基于图的计算,以处理对称非对称 图,图 1。如果在修改节点位置后,节点之间的属性不变,则该图被定义为对称的,即您总是获得相同的图。相反,在非对称图中,顺序非常重要,因为通过改变节点的位置可以获得不同的图。在不对称的情况下,一对节点定义了一条称为的边,并且该图被称为有向——即,它具有特定的方向。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1:A)对称图形和 B)不对称图形的例子。在前一种情况下,如果改变节点的顺序,图形不会改变,而在不对称情况下,图形在节点中具有特定的顺序。作者图片

计算洞察力

至于计算图,每个节点都被赋予了一些属性,这些属性被收集到一个标签。标签是具有预定义维度的向量,其编码描述每个节点的特征(例如,图像中像素的平均颜色、对象的形状等)和节点-边缘之间的关系(例如,图像识别中感兴趣的点之间的距离等)。).给定基本的特征条件,图结构与简单的神经网络显著不同。事实上,每个节点都可以知道在其邻居中正在发生什么,并且可以看到相邻节点的当前状态(或特征)(图 2)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:让我们检查一个图形网络。所有节点都有它们自己的标签(l1,l2,l3,l4)以及状态向量 x (x1,x2,x3,x4)和边信息(l12,l13,l14,l15)。由于转移函数 fw,每个节点的状态,例如节点 1 x1,是所有相邻节点的状态的函数。作者图片

因此,可以将一个图定义为一个数学对象。每个节点都有一个定义的状态 x ₙ,其中包含节点的特征以及邻居的特征。此外,每个节点具有相关联的局部转移函数 f𝓌 ,其对特征 x ₙ相对于节点 n 的上下文的依赖性进行建模,以及描述每个节点的输出如何产生的局部输出函数 g𝓌

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

情商。1:图形网络的位置形式。节点 n 的状态 x_n 取决于节点标签 ln、边标签 l_co[n]、邻居状态 x_ne[n]和邻居节点标签 l_ne[n]。上的输出取决于本地输出函数 gw,它是通过节点 n 的状态 x_n 和标签 l_n 计算的。

到目前为止一切顺利,但在处理与 f𝓌.的关系时有问题根据邻域大小或邻居集合未排序的情况,可能会有数量可变的自变量。因此 f𝓌.应该是不变量对邻域中节点的排列。为了满足这种数学和技术上的约束,可以将 f𝓌 推广为 h𝓌.的函数这个最后的转移函数对于图中的节点位置和节点数量是不变的,并且它取决于节点 nu 之间的弧线的给定标签

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

情商。2:方程 1 的非正形式。在这种情况下,我们可以通过一般的转移函数 h_w 来定义节点 n 的状态 x_n,该转移函数依赖于节点标号 l_n、节点 n 和节点 u 之间的弧标号 l_(n,u)、节点 u 的状态 x_u 和节点 u 的标号 l_u。

一个要求:Banach 不动点定理

一旦定义了一个图的主要函数和结构,就需要一个状态 x ₙ的计算——我们需要定义 a .斯卡塞利处理 GNN 计算的核心点是 巴拿赫不动点定理 Banach 不动点定理也叫 c *压缩映射定理。*该定理建立了在定义的度量空间中压缩映射函数的不动点的存在唯一性。这是什么意思?

  • 数学中的不动点是给定函数 F 的解,即当函数是恒等式时
  • 然后,考虑距离的概念,即两点 ab 相距多远。给定一组数字 X,,可以计算这些点之间的距离。距离度量定义了一个新的空间,称为度量空间,由集合 X 和距离函数 (X,d) 的结果表示
  • 现在,在这个度量空间中,我们可能有一个数学函数 F ,它可以应用到点 ab 来检索另一个度量。如果结果点 F(a)F(b) 之间的距离小于 ab 之间的真实距离,则 F收缩图
  • 如果 F 是一个压缩映射,那么 Banach 证明了对于这样一个函数存在一个不动点解

这样一个定理的结果是,有可能用迭代方案计算当前节点的状态。我们可以说,基本上每次都更新节点状态,以便找到正确的标签。

此时,我们几乎准备好进入生产阶段。但是,对于 f𝓌/h𝓌g𝓌 要有什么函数才能满足巴拿赫不动点定理呢?惊喜,惊喜,这里是 GNN 的第二个重要部分:这些功能可以是简单的多层感知器(MLP)。事实上,MLP 可以利用通用近似理论,所以他们满足巴拿赫的要求。最初,每个单元都启动了随机状态。 f𝓌/h𝓌 函数将更新这些状态,直到实现收敛,即找到定点解。然后,可以使用 g𝓌 进行最终的 MLP 计算,这将依次返回每个节点或图形本身的输出预测。

既然我们已经从理论上了解了 GNN 是如何工作的,请继续关注下一篇文章,我们将通过计算实现 GNN!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3:图形神经网络(GNN)的最终视图。原始图可以被看作是从时间 T 到时间 T+步骤的时间上的步骤的组合,其中每个功能接收输入的组合。fina 展开图每一层对应一个时刻,并有一个先前步骤的所有单位的副本。

如有任何问题或意见,请随时发送电子邮件至:stefanobosisio1@gmail.com 或直接发送至 Medium。

文献学

  1. 艾索普斯、福蒂斯、乔治·帕帕达基斯和提奥多拉·瓦里古。“使用 n 元图对社交媒体内容进行情感分析。”第三届 ACM SIGMM 社交媒体国际研讨会论文集。2011
  2. 威廉·坎贝尔、查理·k·达格里和克利福德·j·温斯坦。"带有内容和图表的社会网络分析."林肯实验室期刊20.1(2013):61–81。
  3. 《推特对话图的重建和分析》首届 ACM 跨学科社会网络研究热点国际研讨会论文集。2012.
  4. 推特时间演变分析:比较事件和话题驱动的转发图。 IADIS 国际计算机科学杂志&信息系统 11.2 (2016)。
  5. 伊曼纽·罗西等人,《动态图上深度学习的时态图网络》arXiv 预印本 arXiv:2006.10637 (2020)。
  6. 丹尼尔·s·巴塞特、佩里·朱恩和约书亚·I·戈尔德。"网络神经科学中模型的本质和使用."自然评论神经科学19.9(2018):566–578。
  7. 斯波恩斯,奥拉夫。"图论方法:在大脑网络中的应用."临床神经科学对话 20.2 (2018): 111。
  8. 阿贝丁、巴巴克和巴巴克·索拉比。"图论在网站链接结构改进中的应用及网页排序."行为&信息技术28.1(2009):63–72。
  9. 乔治·梅加布。"谷歌的网页排名适用于不同的拓扑网络图结构."美国信息科学与技术学会杂志52.9(2001):736–747。
  10. 《网页排序的图形神经网络》。2005 年 IEEE/WIC/ACM 网络智能国际会议(WI’05) 。IEEE,2005 年。
  11. 戈德堡,安德鲁 v,和克里斯哈里森。"计算最短路径:搜索符合图论."汽水。第五卷。2005.
  12. 盖洛、乔治和斯特凡诺·帕洛蒂诺。"最短路径算法。"运筹学年鉴13.1(1988):1–79。
  13. 博格瓦德,卡斯滕 m,和汉斯-彼得克里格尔。"图上的最短路径核."第五届 IEEE 数据挖掘国际会议(ICDM 05)。IEEE,2005 年。
  14. 网格图的最短路径算法。网络 7.4(1977):323–334。
  15. 图论在化学中的应用。化学信息和计算机科学杂志 25.3(1985):334–343。
  16. 拓扑量子化学的图表理论数据。体检 E 96.2 (2017): 023310。
  17. 拓扑量子化学的能带连接性:作为图论问题的能带结构。体检 B 97.3 (2018): 035138。
  18. 预测化学反应性的图形卷积神经网络模型。化学科学10.2(2019):370–377。
  19. 基于自我注意的信息传递神经网络预测分子亲脂性和水溶性。化学信息学杂志 12.1(2020):1–9。
  20. 《网页排序的图形神经网络》。2005 年 IEEE/WIC/ACM 网络智能国际会议。IEEE,2005 年。
  21. 《图形神经网络模型》IEEE 神经网络汇刊 20.1(2008):61–80。
  22. 佩罗齐、布莱恩、拉米·艾尔弗和史蒂文·斯基纳。"深度行走:社交表征的在线学习."第 20 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。2014.
  23. 李,,等,“门控图序列神经网络” arXiv 预印本 arXiv:1511.05493 (2015)。
  24. 量子化学的神经讯息传递。机器学习国际会议。PMLR,2017。
  25. 基普夫,托马斯 n,和马克斯韦林。“图卷积网络的半监督分类.” arXiv 预印本 arXiv:1609.02907 (2016)。
  26. 图卷积网络的简化。机器学习国际会议。PMLR,2019。
  27. 汉密尔顿、林子幸、Rex Ying 和 Jure Leskovec。"大型图上的归纳表示学习."第 31 届国际神经信息处理系统会议录。2017.
  28. 彼得·w·巴塔格利亚等人,《关系归纳偏差、深度学习和图形网络》 arXiv 预印本 arXiv:1806.01261 (2018)。
  29. 小团体中冲突和分裂的信息流模型。人类学研究杂志 33.4(1977):452–473。
  30. 弗拉斯科尼、保罗、马尔科·戈里和亚历桑德罗·斯佩尔杜蒂。"数据结构自适应处理的通用框架."IEEE 神经网络汇刊 9.5(1998):768–786。
  31. 斯珀杜蒂、亚历山德罗和安东尼娜·斯塔丽塔。"用于结构分类的监督神经网络."神经网络 IEEE 汇刊 8.3(1997):714–735。
  32. 哈根布奇纳,马库斯,亚历桑德罗·斯佩尔杜蒂和阿忠蔡。“自组织映射,用于结构化数据的自适应处理。”IEEE 神经网络汇刊 14.3(2003):491–505。
  33. 布林、谢尔盖和劳伦斯·佩奇。“大规模超文本网络搜索引擎的剖析。”计算机网络和 ISDN 系统30.1–7(1998):107–117。
  34. 《超链接环境中的权威来源》汽水。第 98 卷。1998.
  35. 蔡,阿忠,等,〈网页的适应性排序〉。第 12 届万维网国际会议论文集。2003.

图形神经网络:2008 年以来的学习之旅——第二部分

原文:https://towardsdatascience.com/graph-neural-networks-a-learning-journey-since-2008-part-2-22dbf7a3b0d?source=collection_archive---------34-----------------------

关于斯卡塞利图形神经网络的第二个故事。今天,让我们来实现我们所学的:Python 中的 GNN

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

布雷迪·贝里尼在 Unsplash 上拍摄的照片

https://medium.com/@stefanobosisio1/membership

我们在本系列的第一部分中学习了斯卡塞利图形神经网络的理论背景。特别是,我们了解到:

  • GNN 既适合基于节点的预测,也适合基于图的预测。在前一种情况下,我们希望预测图中的每个节点,在后一种情况下,我们希望预测整个图
  • 每个节点可以用一个转移函数 f𝓌 和一个输出函数 g𝓌 来表示。
  • 为了收敛到一个解,转移函数和输出函数都必须满足 Banach 的不动点解
  • 多层感知器(MLP)确实满足巴拿赫的要求,因此 f𝓌g𝓌 可以实现为简单的神经网络层

记住这几点,让我们一步一步地看看如何用 Python 实现这个框架,并把它应用到一个简单的问题上,这个问题叫做“空手道俱乐部”。

空手道俱乐部

我们以扎卡里的空手道俱乐部问题为例。这个问题可以追溯到 Zachary 的论文“小群体中冲突和裂变的信息流模型”[29],其中对一个空手道俱乐部网络进行了三年(1970–1972)的研究。该网络由 34 名成员组成,包括空手道俱乐部管理员“约翰 A”和教练“嗨先生”,以及在俱乐部外互动的成对成员之间的联系(他们聚在一起喝啤酒,散步……)。在管理者和指导者之间的一场争论之后,俱乐部分裂成两半,因此两个新的组被创建。扎卡里用福特-富尔克森算法正确预测了成员如何重新安排他们的社交网络/每个成员的决定。这个问题引起了图形爱好者社区的注意,它被广泛用于测试 GraphNN。斯卡塞利 2009 年的论文应用图形神经网络正确预测了空手道俱乐部成员在分裂后的决策。

Github 回购和安装

主要脚本存储在此存储库中:

https://github.com/Steboss/learn_graph_ml/tree/master/Scarselli_GNN

在继续之前,我建议您在一个工作目录中创建一个虚拟环境(只需输入您的终端python -m venv venv,就会创建一个venv文件夹)。然后,您可以安装这些软件包:

  • dgl是 Deep Graph Library,一个专门从事图形计算的库。在培训步骤中,我们将使用它来可视化我们的图表。要安装dgl,请在此页面插入您的硬件信息:https://www.dgl.ai/pages/start.html(例如None CUDA、Pip(stable)包、Mac Os 和Python 3.8版本,这样我就可以用下面的命令pip install dgl -f https://data.dgl.ai/wheels/repo.html)安装dgl。如果您在使用pip时遇到问题,只需使用pip install --upgrade pip进行升级,一切都会正常工作。
  • pip install torch
  • pip install tensorflow
  • pip install matplotlib
  • pip install seaborn

脚本和图形介绍

正如你在 Github repo 中看到的,有几个脚本。以下是对它们的简单描述:

  • create_and_visualize.py允许创建初始图形并在训练期间绘制图形
  • prepare_edge_nodes_mat.py提供了边、标签和节点的特征。创建两个矩阵:E边矩阵和图形 id,N节点特征矩阵和图形 id
  • prepare_GNN.py变换EN矩阵作为图形神经网络的输入。输出是一个inp矩阵,其形式为[source_node, destination_node, features of the source node, features of the destination node]arcnode矩阵,一个稀疏矩阵,节点之间有边连接,例如[source_node, destination_node, 1 at source index position 0 otherwise]
  • input_and_output_funcitons.py定义了 f𝓌g𝓌 神经网络,以及验证指标和损失
  • GNN.py主图形神经网络类,其中定义了训练条件,以及收敛性检查。最终输出是训练损失、节点预测、节点在训练期间的位置以及收敛的迭代次数。
  • karate.py是主脚本,创建空手道数据集并训练 GNN。

作为第一步,我们可以运行create_and_visualize.py来可视化空手道俱乐部图。您可以在一个ipyhton shell 中运行这个脚本:

图 1:在 Python shell 中,只需输入上面的命令就可以显示输入的空手道俱乐部图

该图是通过build_karate_club_graph()函数中的dgl.DGLGraph()创建的。visualize_karate_club()通过转换输入图to_networkx()产生输出(图 2)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:作为图表的空手道俱乐部。该俱乐部由 34 个人组成,在分裂后,他们决定根据自己的特点分成两组。

图解说明

图 3 示出了计算步骤的图形研究。从初始图创建两个矩阵:节点特征 N 矩阵和边矩阵 e。然后这两个矩阵被转换为图神经网络的输入。特别地,矩阵 e 和来自矩阵 n 的特征被用作转移函数 f𝓌 的输入。这个神经网络输出与 arcnode one-hot 编码矩阵相乘,以更新节点的状态。最终输出用作函数 g𝓌 的输入,以产生最终预测

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3:计算方法的图示。输入图被细分为矩阵 N 和 e。从那里,GraphNN 的输入矩阵被创建。矩阵 inp 是边矩阵和特征的组合,而 arcnode 将边连接定义为一个一键编码矩阵。然后,inp 矩阵被用作 NN fw 的输入。节点状态由 matmul 用 arcnode 矩阵更新。通过输出函数 gw 产生最终输出

1.输入预处理:边、标签和要素

https://github.com/Steboss/learn_graph_ml/blob/master/Scarselli_GNN/prepare_edge_nodes_mat.py

prepare_edge_nodes_mat.py允许创建两个矩阵:边矩阵E和节点特征矩阵N

为了创建边,我在data/edges.txt中提供了一个输入文件:

图 edges.txt 文件的前 8 行,节点 1 的边

边的矩阵E是从边输入加上定义了graph_id的最后一列创建的,在这种情况下graph_id是 0,因为我们想要节点聚焦的预测。如果您正在执行基于图形的预测,您将添加一个graph_id

矩阵E的最终内容是[source_node, destination_node, graph_id]:

图 5:从输入边创建 E 矩阵并与图 id 值连接

使用sp.eye(np.max(edges+1), dtype=np.float32).tocsr()将节点的特征创建为一个热编码矩阵:

  • sp.eyescipy.sparse矩阵,
  • np.max(edges+1)定义了我们想要的索引的值为 1、
  • tocsr()是压缩稀疏行格式

将特征与graph_id连接,以创建最终节点的特征矩阵N,其内容为[ node's features, graph_id],维度为[number_of_nodes, number_of_nodes+1]:

图 6:前 3 个节点的矩阵 N 内容

在这种情况下,标签(0 或 1)被分配为:

图 7:为每个节点分配标签的代码

最后,脚本随机选取 4 个节点作为监督训练的标记节点。

2.从矩阵到 GNN 输入

https://github.com/Steboss/learn_graph_ml/blob/master/Scarselli_GNN/prepare_GNN.py

prepare_GNN.py帮助从EN矩阵创建神经网络的输入。

第一个输出是inp矩阵。第 22–36 行显示了如何创建输入矩阵,它是边矩阵E和节点特征N.的串联,最终内容是[source_node, destination_node, source_features, destination_features]。例如,对于第一条边,在节点 0 和 1 之间,inp的内容是:

图 8:节点 0 和 1 的 GNN 的输入矩阵。前两个数字指的是节点 0 和 1,接着是节点 0 的功能[1,0,0,…]和节点 1 的功能[0,1,0,…]

第二个输出是 [arcnode](https://github.com/Steboss/learn_graph_ml/blob/9f4868264d41f44495f0acf7e8a8d6d890d4e2c4/Scarselli_GNN/prepare_GNN.py#L46),以SparseMatrix格式对边缘信息进行编码,其尺寸为[number_of_nodes, number_of_edges](本例中为 34x78)。稀疏格式允许节省内存,并且只标识值为 1 的行列索引对,否则为 0。

3.定义输入和输出函数

https://github.com/Steboss/learn_graph_ml/blob/master/Scarselli_GNN/input_and_output_functions.py

input_and_output_functions.py将底层转换和输出函数定义为 MLP。class Net的核心函数是netStnetOut,分别为 f𝓌g𝓌 创建神经网络,定义了一个 2 层神经网络。netSt接收维数为 70 的节点特征,并使用tanh激活函数,用 3 个隐藏节点重新映射这些特征。netOut具有类似的架构,它接收 2 维输入,通过 3 个节点重新映射,并在softmax应用后返回最终预测输出:

图 9:图形 NN 的转换和输出函数。

4.几乎准备好了:主 GNN

https://github.com/Steboss/learn_graph_ml/blob/master/Scarselli_GNN/GNN.py

最后一步是GNN.py,我们将定义神经网络架构应该如何工作。功能convergenceconditionLoop是整个架构的核心部分,在这里更新节点的状态

训练环节从行 293 开始,Loop功能封装在self.loss_op中。在【T23、线 221 ,被称为运行conditionconvergence。最后一个函数更新当前节点的状态:

图 10:更新节点状态的函数收敛

图 10 中的a[:,1]是输入矩阵inp[:,1],即所有的destination_node索引。tf.gather返回每个目的节点的所有old_state值,得到一个 78x2 的矩阵,其值在第一次迭代时为零——因为old_state最初被初始化为一个零矩阵,np.zeros((ArcNode.dense_shape[0], self.state_dim)) ( [行 261](http://self.state: np.zeros((ArcNode.dense_shape[0], self.state_dim)),) )。

sl = a[:, 2:]返回所有的source_nodedestination_node特征(尺寸 78x68),然后连接为inp用于转换神经网络功能。通过矩阵乘法sparse_tensor_dense_matmul用边缘连接更新来自 f𝓌 的输出状态。新状态被传回Loop功能(行 237 ),然后被用作 g𝓌 输出功能的输入:out=self.net.netOut(stf)

空手道俱乐部在行动

您现在可以运行karate.py了!!!

https://github.com/Steboss/learn_graph_ml/blob/master/Scarselli_GNN/karate.py

最终的输出没有什么意义,但它是一个显著的例子,可以看到图形神经网络的力量以及图形如何被用作我们预测的输入。

karate.py脚本的主要部分在第 61 行,在此执行训练步骤。如果您想将最终结果保存为gif,如果您想在tensorboard中可视化神经网络结果,这是打开tensorboard的命令,带有最终输出:

venv/bin/tensorboard --logdir tmp/path/to/folder_with_out.tfevents

将您的浏览器连接到http://localhost:PORT,这里端口被定义为终端中的输出,以充分工作tensorboard

主输出形式g.Trainloop_val。此变量报告:

  • loop_val[0]节点的预测值
  • loop_val[1]为更新状态而执行的迭代次数
  • loop_val[2]当前节点的位置
  • loop_val[3]节点的特性

图 11 将训练运行动画化,从没有节点预测的初始猜测,直到节点之间有线性间隔的结束。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 11:基于来自 GraphNN 的预测,通过时期的节点细分

今天就到这里吧!请继续关注关于图形和 ML 的新帖子!!!!

如果有任何问题或意见,请随时发送电子邮件至:stefanobosisio1@gmail.com 或直接发送至 Medium。

图形神经网络:2008 年以来的学习之旅——Python 和 Deep Walk

原文:https://towardsdatascience.com/graph-neural-networks-a-learning-journey-since-2008-python-deep-walk-29c3e31432f?source=collection_archive---------31-----------------------

实践教程

本系列的第四部分。今天,深度行走的实际实现🐍看看脸书的大型页面数据集👍

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由弗朗西丝卡·霍钦Unsplash 上拍摄

https://medium.com/@stefanobosisio1/membership

欢迎回到我们在图形机器学习世界的旅程的第四部分。在之前的帖子中,我们看到了deep walk 算法如何工作及其数学背景。今天,我们将深入研究该算法的 Python 实现,从一个简单的例子(空手道俱乐部)开始,在Numpy中有一个简单的 DeepWalk 版本,然后我们将跳转到一个更有趣的场景,使用脸书大型页面数据集。

以下是前几集的列表:

串联所有深走数学步骤

生成“序列”的语料库

现在我们知道了 DeepWalk 在数学上是如何工作的,让我们一起一步一步地看看空手道俱乐部将会发生什么,在跳到更大的应用之前修正我们的想法。当前的应用程序基于一个简单的numpy嵌入式神经网络应用程序。代码和输入文件可在以下位置找到:

https://github.com/Steboss/learn_graph_ml/tree/master/Perozzi_DeepWalk

输入数据集是data/karate.adjlist,空手道俱乐部的邻接表,graph.py是读取输入文件的实用程序,karate.py是我们的主要 DeepWalk 算法文件。这些计算远非正确,但它们是具体理解正在发生的事情的一个很好的方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1 空手道俱乐部图表。该俱乐部由 34 名成员组成,我们可以定义 78 种相互之间的交互。

在这个例子中,我们有 34 个节点和 78 条边。对于每个节点,随机行走的次数是number_walks=5,因此总共 170 次随机行走,即从一个起点开始探索一个walk_length=5顶点。在第 378 行,我们正在创建初始语料库:

图 2:长度为 5 的随机游走的“句子”语料库的生成

从这里我们会有一个随机漫步的列表:

图 3:从顶点 22、17、13、18、11 和 15 开始的长度为 5 的随机行走的例子。

Skipgram 模型

一旦生成了语料库,我们就可以继续使用 SkipGram 模型。在这个例子中,我没有实现层次化的 Softmax,但我只是使用了一个简单的 softmax 层,因为问题很小。这些是我们需要的步骤:

  • 生成训练数据:对于每个输入序列,我们需要为训练阶段生成一对 (X,y)X 是当前顶点,而 y 是来自 X 的一个window_size内的字
  • *参数初始化:*随机初始化一个单词嵌入矩阵,并执行 2-隐层神经网络的前向步骤
  • *神经网络:*更新权重和返回训练成本的函数,以向正确的嵌入收敛。

生成训练数据

训练数据强调了 SkipGram 模型的目标:X是输入单词,并且该模型预测在最大window_size距离处的单词成为X的邻居的可能性。最终的训练数据集将是一组对(X, y)。例如,给定输入序列22, 1, 13, 4, 3wind_size=5,对(X,y)将是(例如):(22, 1), (22, 13), (22, 4), (22, 3), (1, 22), (1, 13), (1, 4), (1, 3), (13, 22), (13, 1), (13, 4)等。函数 [generate_training_data](https://github.com/Steboss/learn_graph_ml/blob/e0c7f6e319919c7a9a75edd8204f8c4163ef2d9c/Perozzi_DeepWalk/karate.py#L105) 完成了这个目标,循环遍历所有输入random_walks及其元素,选择左右索引idxs_leftidxs_right

图 4:生成训练数据功能。Skipgram 模型的对(X,y)是通过迭代所有随机行走及其元素,每次选择相对于起始顶点 I 的左和右索引

最终向量Xy的大小为(1, 3400),其中3400来自随机漫步的总数(170)乘以每次随机漫步的配对数,即20

参数初始化

第二步是初始化以下参数:

  • representation_size这是潜在特征尺寸,即 SkipGram 应该返回多少潜在“坐标”。在本例中,该值固定为 2
  • vocab_size、词汇大小,即图中顶点的总数(vocab_size=34+1=35)
  • 目标y的一键编码矩阵。热编码矩阵的大小为35, 3400,每次目标词出现时,其值为 1:

图 5:将目标向量转换为热编码矩阵,其大小来自词汇大小(+1)和目标大小。

  • epochs为 SkipGram 模式。记住 SkipGram 是一个神经网络,所以我们必须指定我们想要循环通过整个数据集的次数(在本例中是epochs=2)
  • batch_size,神经网络训练的每次迭代应该使用多少数据块(这里batch_size=4096,因为我想立即处理整个数据集)
  • learning_rate,设置为0.001
  • 神经网络的嵌入和权重矩阵,通过函数param_init初始化。在该函数中,我们为单词嵌入创建一个随机矩阵,其大小为vocab_sizerepresentation_size——即对于每个节点,我们将有representation_size坐标。其次,神经网络权重被随机初始化为:np.random.randn(out_size, inp_size)其中inp_size是图顶点的数量,out_sizerepresentation_size

神经网络

至此,我们可以通过以下步骤旋转嵌入神经网络:

  • 从输入数据中定义一块batch_size
  • 运行神经网络的正向传播部分(forward_propagation)
  • 通过反向传播计算梯度(backward_propagation)
  • 更新参数、嵌入矩阵和权重矩阵(update_parameters)
  • 通过交叉熵计算成本(cross_entropy)

SkipGram 的这个numpy实现可以帮助我们理解主 DeepWalk 中隐藏了什么。

图 5:对于每个时期,我们从训练数据集中导出组块,我们执行正向传播、反向传播,并且我们更新所有参数。

首先,forward_propagation检索每个单词的嵌入,node_to_embedding返回训练数据集的所有 3400 个X输入的初始随机嵌入表示。然后,调用linear_dense函数,更新神经网络权重:

图 6:神经网络计算的核心。在每次正向迭代中,单词嵌入与网络权重进行点乘

核心神经网络仅将乘以神经网络权重的单词嵌入作为输入:np.dot(weights, node_vector)最后一步是通过softmax函数计算前一产品的 softmax 层。图 7 示出了输入单词嵌入如何通过网络计算而改变。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 7:正向传播。让我们花点时间来看看输入数据的演变。随机初始化的单词嵌入通过神经网络。在输入嵌入和网络权重之间计算点积。最后一层是对网络输出的 softmax 计算。

计算出的嵌入和权重需要通过反向传播来更新。函数 [backward_propagation](https://github.com/Steboss/learn_graph_ml/blob/e0c7f6e319919c7a9a75edd8204f8c4163ef2d9c/Perozzi_DeepWalk/karate.py#L308) 计算 softmax 层梯度、神经网络权重梯度和嵌入梯度,因为我们想要训练神经网络和单词嵌入表示。

最后,反向传播输出用于更新输入参数,即单词嵌入和网络权重

图 8:反向传播的更新过程。基于在嵌入层计算的学习速率和梯度来更新单词嵌入和网络权重。

干得好!这些是 deep walk skip program 部分包含的所有步骤。

一个大图数据集分类:脸书大页面-页面网络

为了证明 DeepWalk 获得社会潜在表征的能力,在这个例子中,我们将使用一个大规模数据集,即脸书大型页面-页面网络,可以在这里免费下载[1]。这是包含 22470 个脸书页面的数据集,根据它们的内容被标记为tvshowgovernmentcompanypolitician以及 171002 个边。边缘描述了社会互动,例如一个页面喜欢另一个页面的内容。处理这个图的代码可以在这里找到:https://github . com/ste boss/learn _ graph _ ml/blob/master/Perozzi _ deep walk/Facebook . py

图 9:脸书数据集一瞥。id 定义节点 id,facebook_id 是唯一的脸书标识符,page_name 是页面的名称,page_type 用作定义节点所属的类的目标。

代码的第一部分打开[1]中提供的所有输入文件,并将边信息转换为networkx图:

图 10:用 networkx 打开输入数据并转换成图形

其次,我们将从输入图中创建 80 个长度为 10 的随机行走。输出是 224’700(节点*行走长度)次随机行走,这将是 SkipGram 的输入序列:

图 11:在给定输入图、要创建的步数及其长度的情况下,创建随机步的函数。

一旦建立了语料库,我们就可以开始制作[gensim](https://github.com/Steboss/learn_graph_ml/blob/58454b34333cb7c470ae47425bab1947f2801280/Perozzi_DeepWalk/facebook.py#L66)skip program 模型——已经有一个模型多好?—如图 12 所示

图 12:深度行走的核心,一旦随机行走的语料库被创建,我们可以从 Gensim 运行 Word2Vec 算法

Word2Vec接收输入:

  • 句子语料库walks
  • 潜在维度的大小representation_size=100
  • 为给定单词寻找邻居的窗口大小window_size=5
  • 在训练过程中考虑一个单词的最少次数。在这种情况下,0 意味着Word2Vec将把所有的单词作为输入
  • 触发 skip program 模式的选项sg=1
  • 触发分级 softmax hs=1的选项
  • 我们想要运行的迭代次数,可选。在这个例子中是 1
  • CPU 的数量
  • 再现性的随机种子seed=42

这将需要一点时间来运行,但最终我们将得到给定输入图的最终嵌入,可以很容易地保存在文件中,如下所示:

图 13:word 2 vec 的嵌入输出 sved 的例子。22470 表示节点数,100 表示潜在维度。第 2–4 行的第一列是节点索引,而后面的数字是嵌入表示

从这里,我们可以直接询问模型,寻找与给定页面相似的页面。例如,让我们使用索引14,即页面Nasa's Marshall Space Flight Center,并使用model.wv.most_similar()查询模型。model.wv_most_similar(14)返回与页面14相似页面的所有索引及其概率得分

图 14:找到所有与第 14 页相似的页面,美国宇航局马歇尔太空飞行中心

查询输出将是:

图 15:给定页面的 Word2Vec SkipGram 模型的输出

值得注意的是,该模型返回与给定页面高度相似的页面,而没有关于页面正在处理什么的信息。令人印象深刻的是,DeepWalk 可以利用单词模型的简单相似性来询问大输入图!

今天就到这里吧!请继续关注关于图形和 ML 的新帖子!!!!

如有疑问或意见,请随时发送电子邮件至:stefanobosisio1@gmail.com 或直接发送至 Medium。

文献学

  1. Rozemberczki,Benedek,Carl Allen 和 Rik Sarkar。"多尺度属性节点嵌入."复杂网络杂志 9.2 (2021): cnab014。

作为神经扩散偏微分方程的图形神经网络

原文:https://towardsdatascience.com/graph-neural-networks-as-neural-diffusion-pdes-8571b8c0c774?source=collection_archive---------7-----------------------

思想和理论,重新思考 GNNs

图神经网络(GNNs)与控制图上信息扩散的微分方程密切相关。将 gnn 视为偏微分方程(PDEs)会产生一类新的 gnn,它们能够以原则性的方式解决当前图 ML 模型的一些突出问题,如深度、过度平滑、瓶颈和图重布线。

这篇博文与本·张伯伦(Ben Chamberlain)和詹姆斯·罗博顿(James Rowbottom)合著,基于我们的论文 b·张伯伦(B. Chamberlain)、j·罗博顿(J. Rowbottom)等人的论文GRAND:Graph Neural Diffusion(2021)ICML。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“Scala graduum Caloris”的第一页,这是艾萨克·牛顿爵士于 1701 年匿名发表在《皇家学会哲学会刊》上的论文。图中显示的是一个温标,0 表示“冬天空气中的水开始结冰时的温度”(aqua incipit gelu rigescere),12 表示“与人体接触时”测得的温度(contactum corporis humani)。210 的最高温度是“风箱催灶火”的温度。

1701 年3 月,英国皇家学会的哲学会刊发表了一篇匿名的拉丁文笔记,题为“热度的等级”【1】。虽然没有指明名字,但艾萨克·牛顿是作者已经不是秘密了(四年后他将成为“艾萨克爵士”)。在一系列实验中,牛顿观察到

热物体在给定时间内失去的温度与物体和环境之间的温差成正比

—今天以他的名字命名的法律的现代表述[2]。从数学上来说,牛顿冷却定律产生了热扩散方程,这是一个偏微分方程(PDE ),其最简单的形式如下

x .

这里, x ( ut )表示某一区域上时间 t 和点 u 的温度,lhs(时间导数 )是“温度变化率”,rhs(空间二阶导数或拉普拉斯δx)表示某一点与其周围温度的局部差异该 PDE 是线性的,其解可以封闭形式给出,作为初始温度分布与时间相关的高斯核的卷积[3],

x ( ut)=x(u,0)﹡exp(−|u|/4t)。

更一般地说,必须考虑物体不同的热传导特性,从而得到形式如下的偏微分方程

( ut)= div(a(ut)∇x(ut ))

编码更一般的傅立叶传热定律【4】。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据牛顿冷却定律(上),物体的温度变化率( )与自身温度和周围温度之差成正比。所得微分方程的解具有指数衰减的形式。傅立叶热传递定律(底部)提供了一个更细粒度的局部模型:温度是一个标量场 x ,它的(负)梯度是一个矢量场−∇ x,代表热量从较热的区域(红色)流向较冷的区域(蓝色),散度 div( −∇ x)是矢量场 −∇ x 通过一个点周围无限小区域的净流量。

扩散偏微分方程出现在许多物理过程中,包括“物质”(无论是能量还是物质),或者更抽象地说,信息的转移。在图像处理中,可以利用上述扩散解释作为图像去噪的线性低通滤波。然而,在去除噪声的同时,这种滤波器也不希望地模糊了不同颜色或亮度的区域(“边缘”)之间的过渡。Pietro Perona 和 Jitendra Malik [5]的一个有影响力的见解是考虑一个与图像梯度|∇x的范数成反比的自适应扩散系数:这样,扩散在“平坦”区域(其中|∇x|≈0)很强,而在亮度不连续的情况下很弱(其中|∇x|很大)。结果是一个非线性滤波器能够从图像中去除噪声,同时保留边缘。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

左图:原始图像,中图:高斯滤波器,右图:非线性自适应扩散(图中所示为 Q. Yang,“递归双边滤波” (2012)【的概念上类似的滤波器)。

佩罗娜-马利克扩散和类似的方案创造了一个完整的基于偏微分方程的技术领域,它也从几何学、变分法和数值分析中获得了灵感和方法[6]。对我个人来说,Ron Kimmel 关于图像的数值几何的著作[7]是我爱上微分几何并以此为主题攻读博士学位的原因。变分法和基于偏微分方程的方法统治了图像处理和计算机视觉领域近二十年,在 2000 年代的第二个十年让位于深度学习[8]。

在我们最近在 Twitter [9]的工作中,我们依靠同样的哲学来重新审视图形神经网络。gnn 通过以消息传递的形式在相邻节点之间交换信息来运行,这个过程在概念上等同于扩散。在这种情况下,基础空间是图表,扩散沿着边发生,其中空间导数的类比是相邻结点要素之间的差异。

从形式上看,将扩散过程推广到图形几乎是简单明了的:方程看起来是相同的,

(t)= div(a(x(t))∇x(t))

其中X(t)现在是在时间 t 的节点特征的 n × d 矩阵,梯度是给每个边 u ~ v 分配各自节点特征向量的差的算子, (∇x**)ᵤᵥ=xx节点 u 处的散度是从其发散出来的边的特征的总和,(div(x)ᵤ=ᵥ**wᵤᵥ 扩散率由形式为a**(x)= diag(a(xx )的矩阵值函数表示,其中,如前所述, a 是确定沿边缘扩散强度的函数****

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

节点和边特征分别类似于图上的标量场和矢量场。渐变产生形状的边缘特征(∇x*)ᵤᵥ=x-xᵤ.发散产生形式为(div(x)ᵤ=wᵤᵥxᵤᵥ.的节点特征*

图形扩散方程可以方便地写成如下形式的矩阵微分方程

(t)=(a(x(t)—I)x(t)。

在大多数情况下[12],这个微分方程没有封闭形式的解决方案,必须数值求解。有大量的数值技术用于求解非线性扩散方程,主要区别在于空间和时间离散化的选择。

T 最简单的离散化用正向时差代替时间导数*,***

x(k+1)x(k)]/𝜏=[a(x(k)**Ix**(k)**

其中 k 表示离散时间指数(迭代次数),𝜏是步长,使得 t = k 𝜏.将上面的公式重写为

x(k+1)=[(1−𝜏)I+𝜏a*(x(k)】x(k)=q(k)x()***

我们得到一个显式前向欧拉 方案的公式,其中下一次迭代 X ( k +1)是通过应用线性算子Q*(k)【13】从某个 X (开始)从前一次迭代 X ( k )计算出来的只有当时间步长足够小时,𝜏 < 1,该方案在数值上稳定(在某种意义上,输入 X (0)的小扰动会导致输出 X ( k )的小扰动)。***

用后向时差离散时间导数得到(半) 隐式 格式,**

【(1+𝜏)I−𝜏a*(x(k)】x(k+1)=b(k)x(k+1)=x(k【k***

这样命名是因为从前一个迭代推导下一个迭代需要求解一个线性系统,相当于 B 的逆(在大多数情况下,通过线性解算器的几次迭代近似实现)。这个方案是无条件稳定的,这意味着我们可以使用任何𝜏 > 0 而不用担心迭代会失败。**

这些是概念上最简单的离散化技术,在实践中不一定是最好的。在 PDE 文献中,通常使用多步方案,例如龙格-库塔【14】,其中后续迭代被计算为几个先前迭代的线性组合。显式和隐式情况都可以是多步骤的。此外,步长可以根据近似误差【15】进行自适应**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形扩散方程不同离散化方案的框图表示(从左到右:单步显式欧拉,多步四阶龙格-库塔,单步隐式)。a 表示扩散算子;𝜏是时间步长。

具有针对给定任务优化的参数扩散函数的扩散方程定义了一大类类似图形神经网络的架构,我们称之为图形神经扩散(或者,不客气地说,简称为 GRAND)。输出是扩散方程在某个结束时间T的解 X ( T )。许多流行的 GNN 架构可以被形式化为大参数离散图形扩散方程的实例。具体来说,上面提到的显式方案具有图形注意力网络[16]的形式,其中我们的扩散性扮演了注意力的角色。**

绝大多数 GNN 使用显式单步欧拉方案,其中离散时间索引 k 对应于图形神经网络的卷积或注意力层,并且多次迭代运行扩散相当于多次应用 GNN 层。在我们的形式中,扩散时间参数 t 充当层的连续类比【17】——这种解释允许我们开发更有效和稳定的数值方案,这些方案使用时间上的自适应步骤。特别是,GRAND 允许解决广泛认可的问题深度 gnn 中的性能下降。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在图形神经扩散中,显式 GNN 层被扩散时间的连续模拟代替。该方案允许训练深度网络(长时间运行扩散)而不会经历性能下降。

T21:有限方案允许使用更大的时间步长和更少的迭代(“层”),代价是迭代的计算复杂性,这需要扩散算子的反演。扩散算子(我们方程中的矩阵 A 与图的邻接矩阵(1 跳滤子)结构相同,而它的逆通常是稠密矩阵,可以解释为 多跳滤子

由于矩阵求逆的效率主要取决于矩阵的结构,因此在某些情况下,将用于扩散的图与输入图分离可能是有利的。这些技术统称为图重布线,已经成为 GNNs 中处理可伸缩性或信息瓶颈的流行方法。扩散框架通过将图形视为某个连续对象(例如流形)[18]的空间离散化,提供了图形重新布线的原则观点,并且某些离散化在数值上更有利。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2D 拉普拉斯算子的不同离散化(这些离散化的任何凸组合也是有效的)。选择一个离散化,可能在每一点都不同,这是一个欧几里得的“图形重新布线”的类比。

G 图神经扩散为研究许多流行的图形深度学习架构提供了一个原则性的数学框架,也为开发新的架构提供了蓝图。这种思维方式为 GNNs 的一些常见问题提供了新的思路,如功能过度平滑和设计深度神经网络的困难,以及启发式技术,如图形重新布线。更广泛地说,我们相信探索图 ML、微分方程和几何之间的联系,并利用这些主题的大量文献,将在该领域产生新的有趣的结果。

[1]无名氏, Scala graduum Caloris。calorum descriptions et signa(1701)Philosophical Transactions22(270):824–829 描述了一种新的温标和一种测量它的油基装置,称为“温度计”。在整篇论文中,牛顿使用了 calor (“热”,在现代物理学中具有热能流动的含义,以焦耳为单位测量)一词,而不是更合适的术语“温度”(分子的平均动能,以开尔文度为单位测量),后者尚未被创造出来。S. Maruyama 和 s .御名方守矢,牛顿冷却定律:跟进和探索 (2021) 国际传热传质杂志 164 最近准确地再现了牛顿的实验工作,并认为作者无法解释的多个因素可能是匿名发表论文的原因。

[2]很明显,牛顿不了解温度和热量之间的区别,因此基于传热系数概念的“冷却定律”的现代形式是错误的。E. F. Adiutori,传热系数的起源 (1990) 机械工程激烈地争辩说,牛顿不应该被归功于以他的名字命名的定律的发现,而应该将荣誉授予约瑟夫·布雷克约瑟夫·傅立叶

[3]通过将 x 展开成傅立叶级数,并将其代入等式的两边,这很容易看出。事实上,解热方程是 j . Fourier(1824 年)开发这个仪器的动机之一,这个仪器今天以他的名字命名。我们公式中的热核还应该有一个额外的依赖于维数的归一化系数,为了简单起见,我们省略了它。

[4]根据傅立叶定律,热梯度∇ x 产生一个热通量h*=-ax满足连续性方程**ẋ=-div(h),这编码了一个假设,即温度的唯一变化是由于热通量(由发散算子测量的),即这个原理在化学上也被称为菲克定律,源自 a .菲克über 扩散(1855)Annalen der Physik94。有趣的是,阿道夫·弗利克的职位被称为“苏黎世的专业人员”,这是一个值得怀疑的职位,他在成为教授之前的前三年里一直担任这个职位,先是在苏黎世,然后在维尔茨堡。***

[5] P .佩罗娜和 j .马利克,“使用各向异性扩散的尺度空间和边缘检测” (1990),12(7):629–639 是一篇开创性的论文,提出了一种基于偏微分方程的自适应图像滤波,错误地命名为“各向异性”严格地说,佩罗纳-马利克非线性扩散方程= div(a(u)∇x),其中 a 是位置相关的扩散系数常数,是非均匀的(意味着扩散系数是非恒定的)但是各向同性的(与方向无关,因为 a 是简单缩放梯度的标量);真实的各向异性扩散方程具有形式= div(a(u)∇x)其中 A ( u )是位置相关的 2×2 矩阵(扩散张量),其根据方向对梯度进行不同的缩放。****

[6]参见 J. Weickert 的《图像处理中的各向异性扩散》一书 (1998) Teubner 对这些方法的教学介绍。遵循佩罗娜和马利克的类似范例的一些有影响力的图像处理框架是由 N. Sochen 等人介绍的 Beltrami 流将图像建模为嵌入式流形,低级视觉的通用框架 (1998) IEEE Trans .图像处理7(3):310–318;c . Tomasi 和 R. Manduchi 的双边滤波器灰度和彩色图像的双边滤波(1998)ICCV;而非局部指的是 A. Buades 等人的一种图像去噪的非局部算法 (2005), ICCV 。这些方法的各种版本在图像处理硬件中实现;我甚至在英特尔实感相机的早期版本中自己开发了一个。基于 PDE 的低级计算机视觉方法包括图像完成技术,如 M. Bertalmio 等人的图像修补 (2000) 计算机图形和交互技术活动轮廓分割技术,如 V. Caselles 等人的测地线活动轮廓(1997)IJCV22(1):61–79 和 T. F. Chan 和 l 图像处理 10(2):266–277。****

[7] R. Kimmel, 图像的数值几何 (2004)施普林格。

[8]基于偏微分方程的方法和变分方法之间的联系源于这样一个事实,即许多偏微分方程可以作为一些泛函的最优性条件(称为 欧拉-拉格朗日方程 )导出,例如测量结果图像的“质量”。例如,齐次扩散方程是狄利克雷能量的最小化流(粗略地说,是变分问题中梯度下降的连续类比)。设计一个泛函,导出一个最小化它的偏微分方程,并在图像上运行它的范例在概念上非常吸引人;然而,大多数这种“手工制作”的泛函往往是理想化的,与深度学习相比表现较差,这是过去十年基于偏微分方程的方法消亡的主要原因。然而,一些想法仍然存在(通常没有适当的归属):例如,从概念上讲,人们可以考虑佩罗娜-马利克方案中的自适应扩散性,该方案根据像素之间的关系聚集像素中的信息,作为注意机制的先驱。

[9] B. Chamberlain,J. Rowbottom 等人, GRAND:图形神经扩散 (2021) ICML 。历史上公平地说,不同风格的图扩散方程以前在过多的应用中使用过,所有这些都被命名为hanc marginis exi guitas non caperet在计算机图形学中,由于流形上的扩散方程的基本解(热核)与其高斯曲率之间的关系,离散流形(网格)上的热方程长期以来被用作形状描述符(例如,参见我以前的 EUROGRAPHICS 2012 教程,其中我提到了扩散在几何处理和图形学中的许多应用)。在图形信号处理中,低通滤波器可以用扩散过程来识别(例如,L. Stankovi 的综述论文,《图形信号处理简介》 (2019)提到了这种关系),并且已经用于从数据中恢复图形(例如,参见 D. Thanou 等人,学习热扩散图 (2017) IEEE Trans。网络上的信号和信息处理3(3):484–499)。P. Milanfar,现代图像滤波之旅(2013)IEEE Signal Processing Magazine30(1):106–128 中介绍了从图形的角度对经典图像滤波器的解释,包括一些概括。在机器学习中,一类称为扩散图的流形学习(非线性降维)技术由 R. R. Coifman 等人引入,几何扩散作为调和分析和数据结构定义的工具:扩散图(2005)PNAS102(21):7426–7431 实现了扩散度量的欧几里德嵌入,与图中一对节点之间的热传播相关。最后,在 GNN 文献中,扩散方程已经在 F. Scarselli 等人的经典论文《图形神经网络模型(2009)《IEEE Trans。神经网络27(8):61–80 以及最近 m .等人的图神经常微分方程 (2019) arXiv:1911.07532,j .庄的图网络上的常微分方程 (2019) arXiv:1911.07532,f .顾等人的隐式图神经网络 (2020)【神经网络**

[10]我们使用一个标准的符号:图 Gn 个节点和 m 条边, W 是具有 wᵤᵥ= 1 的 n × n 邻接矩阵,如果 u ~ v 则为零。给定 d 维节点特征排列成 n × d 矩阵 X ,梯度∇ X 可以表示为大小为 m × d. 的矩阵,类似地,给定大小为 m × d 的边缘特征矩阵 Y ,散度这两个运算符是伴随 w.r.t .适当的内积,⟨∇ XY ⟩=⟨ X ,div( Y )⟩.我们稍微滥用了用xt54】ᵤ表示节点特征(类似于连续情况下的标量场)和用xt58】ᵤᵥ表示边缘特征(类似于矢量场)的符号;从上下文来看,区别很明显。

[11]我们假设 a 是归一化的,∑ aᵤᵥ =1。

[12]对于一个常数 A ,扩散方程的解可以封闭形式写成X(t)= exp(t(AI)X(0)= exp(t【T80)拉普拉斯δ图的指数被称为热核,并且可以被解释为具有低通滤波器的广义(频谱)卷积。**

[13]注意 Q 依赖于 X (因此每次迭代都会改变),但是它对 X 的应用是线性并且采用矩阵乘积的形式。这与 GNNs 的“注意力”味道有着精确的相似之处。**

[14]以 C. Runge,über die numerische auflsung von differentialgleichungen(1895)Mathematische Annalen46(2):167–178 和 W. Kutta,Bei trag zur naherungsweisen integration totaler differentialgleichungen(1901)z . Math。Phys 。46:435–453,龙格-库塔法实际上不是一种单一的方法,而是一类数值格式。具体来说,在我们的论文中,我们使用了流行的 Dormand-Prince 方案。

[15]通常,近似误差计算为两个后续近似级之间的差异。

[16]p . veli kovi 等人,图注意网络 (2018) ICLR 。更具体地说,我们假设层之间没有非线性,并且跨层共享注意参数(对应于与时间无关的扩散率)。后者是一个很大的优势:在我们的实验中,我们在大多数情况下获得了优于 GAT 的结果,而使用的参数却少了 20 倍。

[17]“神经微分方程”,或将残差神经网络解释为常微分方程的欧拉离散化,由几个小组提出,包括 E. Haber 和 L. Ruthotto,深度神经网络的稳定架构(2017) 逆问题 34 (1),Y. Lu 等人,超越有限层神经网络:桥接深度架构和数值微分方程(2018),以及可能是其中最著名的 R. Chen 等人,【T10 我们的方法可以被认为是“神经偏微分方程”。**

[18]这当然是无标度图的情况,例如社会网络可以在具有双曲几何的空间中实现。图作为连续空间的几何解释是网络几何学领域的主题,参见例如 m .博古纳等人的网络几何学 (2021) 自然评论物理学3:114–135。将图解释为一些空间的采样是证明谱图滤波器一般化的中心机制,例如在 R. Levie 等人的谱图卷积神经网络的可转移性 (2019) arXiv:1907.12972 中。

我们感谢 Nils Hammerla 校对了这篇文章,也感谢 Peyman Milanfar 从图形的角度指出了对图像滤镜的解释。有关图形深度学习的其他文章,请参见 Michael 在《走向数据科学》中的 其他帖子 订阅他的帖子 YouTube 频道 ,获取 中等会员资格 ,或关注 Michael 在 Twitter 上的

从微分几何和代数拓扑的角度看图形神经网络

原文:https://towardsdatascience.com/graph-neural-networks-through-the-lens-of-differential-geometry-and-algebraic-topology-3a7c3c22d5f?source=collection_archive---------0-----------------------

重新思考 GNNs

微分几何和代数拓扑在主流机器学习中不是很经常遇到。在这一系列的文章中,我将展示如何使用这些领域的工具来重新解释图形神经网络,并以有原则的方式解决它们的一些常见困境。

对称,无论你如何定义它的含义,都是一种观念,古往今来人类一直试图通过它来理解和创造秩序、美和完美。

赫尔曼·魏尔[1]对对称性的描述颇具诗意,强调了对称性在科学中的基石作用。费利克斯·克莱因 1872 年的"埃尔兰根计划 " [2]通过对称群刻画几何图形。这不仅是数学上的一个突破,统一了“几何动物园”,而且导致了现代物理理论的发展,这些理论可以完全从对称性的第一原理中推导出来[3]。在几何深度学习的保护伞下,类似的原则也出现在机器学习中,这是一个通过群不变性和等方差推导出大多数流行神经网络架构的通用蓝图【4】。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形神经网络可以被认为是几何深度学习蓝图的一个特例,它的构建块是一个具有对称群的域(在这种情况下是具有置换群的图形),域上的信号(节点特征),以及这些信号上的群等变函数(消息传递)。

几何深度学习蓝图可以应用于不同的领域,如网格、网格或图形[5]。然而,虽然前两者有明确的连续类比对象(网格可以被认为是欧几里德或更一般的均匀空间(如球体)的离散化,网格是二维流形的常见离散化),但对于图形没有直接的连续类比*【6】。这种不平等有点令人不安,并促使我们更仔细地研究图形学习的连续模型。*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网格、网格和图形是几何深度学习蓝图中处理的域的示例。然而,虽然前两者有连续的相似性(例如,网格可以被视为欧几里得空间的离散化,而网格是二维流形或表面的常见离散化),但图形没有直接的连续相似性。

***神经扩散图。*图形神经网络(GNNs)通过在图形上执行某种形式的消息传递来学习,由此特征通过边从节点传递到节点。这种机制与图上的扩散过程有关,可以用称为“扩散方程的偏微分方程(PDE)的形式来表示。在最近的一篇论文[7]中,我们表明,这种具有非线性可学习扩散函数的偏微分方程的离散化(称为“图形神经扩散”或非常谦虚地说,GRAND)概括了一大类 GNN 架构,如图形注意力网络(GAT) [8]。

PDE 思维模式提供了多种优势,例如可以利用高效的数值解算器(例如隐式、多步、自适应和多重网格方案),并保证稳定性和收敛性。这些解算器中的一些在流行的 GNN 架构动物园中没有直接的类比,潜在地承诺新的有趣的图形神经网络设计。由于我们考虑的扩散偏微分方程可以被视为一些相关能量的梯度流[9],这样的结构可能至少比典型的结构稍微更容易解释。

同时,虽然 GRAND 模型提供了连续时间来代替传统 GNNs 中的层,但是方程的空间部分仍然是离散的并且依赖于输入图。重要的是,在这个扩散模型中,域(图)是固定的,在其上定义的一些属性(特征)是演化的。

微分几何中常用的一个不同的概念是几何流*,演化出域本身的属性【10】。这个想法是我的博士导师 Ron Kimmel 和他的合著者在 20 世纪 90 年代在图像处理领域采用的[11]。他们将图像建模为嵌入在联合位置和颜色空间中的流形,并通过最小化嵌入谐波能量的偏微分方程对其进行演化[12]。这种称为 Beltrami 流的 PDE 具有各向同性非欧几里德扩散的形式,并且产生边缘保持图像去噪。*

我们将这一范式应用于“Beltrami 神经扩散”(BLEND)框架中的图表[13]。图中的节点现在由位置坐标和特征坐标来表征,都是演化的,并且都决定了扩散率属性。在这种思维模式中,图本身变成了一个辅助角色:它可以从位置坐标中生成(例如作为一个k*-最近邻图)并在整个进化过程中重新布线。下图说明了这种同步进化过程:*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过重新布线的 Beltrami 流,Cora 图的位置和特征分量的演变(颜色表示特征向量)。动画:詹姆斯·罗博特姆。

S 在最近的工作中,图形神经网络的表达能力受到了极大的关注。消息传递 gnn 等同于 Weisfeiler-Lehman 图同构测试【14–16】,这是一种试图通过迭代颜色细化来确定两个图在结构上是否等价(“同构”)的经典方法。这个测试是一个必要但不充分的条件:事实上,Weisfeler-Lehman 可能认为一些不同构的图是等价的。下图说明了消息传递 GNNs“看到”了什么:两个突出显示的节点看起来没有区别,尽管图形显然具有不同的结构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Weisfeiler-Lehman 测试不能区分的两个不同构图的例子。图改编自 Sato [18]。

***位置编码。*解决这个问题的一个常用方法是给节点“着色”,给它们分配一些额外的特征,代表节点在图中的角色或“位置”。位置编码方法在 Transformers [17](这是注意力 GNNs 在完整图形[4]上操作的一种特殊情况)中得到普及,已经成为增加图形神经网络表达能力的一种常用方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

位置编码为图的节点分配额外的特征,允许消息传递获得比 Weisfeiler-Lehman 测试更高的表达能力。然而,在位置编码的多种可能选择中,没有“规范的”选择。图改编自 Sato [18]。

也许最直接的方法是赋予每个节点一个随机特征[18];然而,虽然这种方法更具表达性,但它的泛化能力很差(因为不可能在两个图中重现随机特征)。图拉普拉斯算子[19]的特征向量提供了图的邻域保持嵌入,并且已经被成功地用作位置编码。最后,我们在与乔尔戈斯·布里特萨斯和法布里齐奥·弗拉斯卡[20]的论文中表明,图形子结构计数可以用作一种位置或“结构”编码的形式,可以证明这种编码比基本的魏斯费勒-雷曼测试更有效。

然而,对于位置编码有多种选择,对于如何选择一个没有明确的方法,对于哪种方法在哪种情况下更好的问题也没有明确的答案。我相信像 BLEND 这样的几何流可以根据这个问题来解释:通过非欧几里得扩散来进化图的位置坐标,位置编码适合于下游任务。因此,答案是“视情况而定”:最佳的位置编码是手头数据和任务的函数。**

高阶信息传递。**另一种表达方式是停止用节点和边来思考图形。图是称为细胞复合体的对象的例子,细胞复合体是代数拓扑领域的主要研究对象之一。在这个术语中,节点是 0 单元,边是 1 单元。我们不必就此打住:我们可以构建如下图所示的 2 单元格(面),这使得上一个示例中的两个图形完全可以区分:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在最近与克里斯蒂安·博德纳尔和法布里齐奥·弗拉斯卡合著的两篇论文[21–22]中,我们证明了构建一个“提升变换”是可能的,这种“提升变换”用这种更高阶的单元来扩充图形,在此基础上可以执行更复杂形式的分层消息传递。该方案可以证明比 Weisfeiler-Lehman 测试更具表达性,并在计算化学中显示出有希望的结果,在计算化学中,许多分子显示出更好地模拟为细胞复合体而不是图形的结构。

AGNNs 的另一个常见困境是“过度压制现象,或由于输入图的某些结构特征(“瓶颈”)导致消息传递无法有效传播信息【23】。过度平息通常发生在具有指数体积增长的图中,例如小世界网络[24]以及依赖于长程信息的问题中。换句话说,GNNs 运行的输入图对于消息传递并不总是友好的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“小世界”图中快速增长的邻居数量通常是在 GNNs 中观察到的过度挤压现象的来源。

过度挤压、瓶颈和图形重布线。**从经验上看,将输入图与计算图分离,并允许在不同的图上传递消息有助于缓解问题;这种技术通常被称为“图形重布线”。

公平地说,许多流行的 GNN 架构实现了某种形式的图重连,它可以采取邻域采样(最初在 GraphSAGE 中提出以应对可扩展性[25])或多跳过滤器 [26]的形式。上面讨论的拓扑消息传递也可以被看作是一种重新布线的形式,由此远距离节点之间的信息流可以通过更高级别的单元而被“捷径”化。Alon 和 Yahav [23]表明,即使像使用全连通图这样简单的方法也可能有助于改善图 ML 问题中的过度挤压。克利茨佩拉和合著者热情地宣称“扩散改善了图形学习”,提出了 GNNs 的通用预处理步骤(命名为“DIGL”),包括通过扩散过程对图形的连通性进行去噪[27]。总的来说,尽管有重要的实证研究,过度挤压现象一直难以捉摸,也没有得到充分的理解。

最近的一篇论文【28】中,我们表明导致过度挤压的瓶颈可以归因于图的局部几何属性。具体来说,通过定义一个瑞奇曲率的图形类比,我们可以表明负弯曲的边是罪魁祸首。这种解释导致了类似于“逆向 Ricci 流”的图重新布线过程,该过程通过外科手术去除了有问题的边,并产生了一个在结构上类似于输入图的更有利于消息传递的图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用基于扩散的方法(DIGL,中)和基于曲率的方法(Ricci,右)重新布线康奈尔图(左)的示例。基于曲率的方法更显著地减少了瓶颈,同时更忠实于原始图形结构。

T 这些例子表明,微分几何和代数拓扑为图形机器学习中的重要和具有挑战性的问题带来了新的视角。在本系列的后续文章中,我将进一步详细展示如何使用这些领域的工具来解决前面提到的图形神经网络问题。第二部分将讨论拓扑空间上的消息传递如何改进 GNNs 的理论和计算。第三部分将处理 GNN 公式作为梯度流,导致几何扩散偏微分方程。第四部分将展示过度挤压现象如何与图形曲率相关联,并提供受瑞奇流启发的图形重布线的几何方法。[第五部分](http://and topological message passing)将处理细胞束上的学习,以及这种形式主义如何解决 gnn 倾向于遭受的嗜异性设置。

[1] H .韦勒,《对称性》(1952),普林斯顿大学出版社。

[2]F .克莱因,Vergleichende Betrachtungenüber neuere geometrische for schungen(1872 年)。

[3] J. Schwichtenberg,来自对称性的物理学(2018),施普林格。

[4] M. M .布朗斯坦,j .布鲁纳,t .科恩,p .韦利奇科维奇,几何深度学习:网格、群、图、测地线和量规(2021);见随附的帖子项目网站

[5]在上面的 GDL 原型书中,我们将这些称为几何深度学习的“5G”。

[6] 几何图形自然产生于生活在连续空间中的物体的离散模型。一个突出的例子是分子,建模为图形,其中每个节点代表一个具有 3D 空间坐标的原子。另一方面,有可能将嵌入一般的图到一个连续的空间中,从而利用某个空间的度量结构(近似)实现它们的连通性。

[7] B. Chamberlain,J. Rowbottom 等人,GRAND:Graph Neural Diffusion(2021)ICML。

[8]p . veli kovi 等人,图形注意网络 (2018) ICLR。

【9】一个梯度流可以看作是变分问题中梯度下降的连续类比。它源于泛函的最优性条件(变分法中称为欧拉-拉格朗日方程)。

【10】几何流是定义在流形上的泛函的梯度流。其中最著名的可能是格里高里·佩雷尔曼在证明百年庞加莱猜想时使用的瑞西流。Ricci 流发展了流形的黎曼度量,并且在结构上类似于扩散方程(因此,通常经过粗略简化,表示为“度量的扩散”)。

[11] N. Sochen 等人,低层视觉的一般框架 (1998) IEEE Trans。图像处理 7(3):310–318 使用一个几何流最小化一个流形的嵌入能量作为图像去噪的模型。得到的 PDE 是线性非欧几里德扩散方程ẋ*=δx(这里δ是表示为嵌入流形的图像的拉普拉斯-贝尔特拉米算子),与 P. Perona 和 J. Malik 早先使用的非线性扩散= div(a(x)∇x),尺度空间和使用各向异性扩散的边缘检测(14*

[12] Beltrami 流将弦理论中称为 波利亚科夫作用 的泛函最小化。在欧几里得的例子中,它简化为经典的狄利克雷能量 T21。

[13] B. P. Chamberlain 等人, Beltrami 流和图上的神经扩散 (2021) NeurIPS。

[14] B. Weisfeiler,A. Lehman,将一个图简化为标准形式以及其中出现的代数(1968)Nauchno-Technicheskaya informatisia 2(9):12–16。

[15] K. Xu 等,图神经网络到底有多强大? (2019) ICLR。

[16] C. Morris 等人, Weisfeiler 和 Leman go neural:高阶图神经网络 (2019) AAAI。

[17] A. Vaswani 等人,注意力是你所需要的一切 (2017) NIPS。

[18] R. Sato,关于图形神经网络表达能力的调查 (2020)。arXiv: 2003.04078。使用随机特征进行位置编码。

[19] V. P. Dwivedi 等人标杆图神经网络 (2020)。arXiv: 2003.00982。使用拉普拉斯特征向量作为位置编码,尽管谱图嵌入的思想更为古老,并且已经广泛用于非线性维度减少,例如 M. Belkin 和 P. Niyogi 的经典工作,拉普拉斯特征图和用于嵌入和聚类的谱技术 (2001),NIPS。

[20] G. Bouritsas 等,通过子图同构计数提高图神经网络表达能力 (2020)。arXiv:2006.09252。使用图形子结构计数作为位置编码;参见随附的帖子

[21] C .博德纳尔,f .弗拉斯卡等,魏斯费勒和雷曼 go 拓扑:消息传递单纯网络 (2021) ICML。

[22] C .博德纳尔、f .弗拉斯卡等人,魏斯费勒和雷曼 go cellular:CW Networks(2021)neur IPS。

[23] U. Alon 和 E. Yahav,关于图神经网络的瓶颈及其实际意义 (2020)。arXiv:2006.05205

[24]在这样的图中,随着k的增加,达到k跳的邻居的大小增长得非常快,导致“太多的邻居”必须将它们的更新发送到一个节点。

[25] W. Hamilton 等人,大型图上的归纳表征学习 (2017) NIPS。

[26] F .弗拉斯卡等人, SIGN:可扩展的初始图神经网络 (2020)。ICML 图形表示学习研讨会。使用多跳筛选器;见一个随行的帖子

[27] J .克利茨佩拉等人,扩散改善图形学习 (2019) NeurIPS。通过计算个性化页面等级(PPR)节点嵌入,然后在嵌入空间中计算一个 k -NN 图,来重新连接该图。

[28] J. Topping,F. Di Giovanni 等人,通过曲率理解图的过度挤压和瓶颈 (2021) arXiv:2111.14522。参见附带的博文

感谢克里斯蒂安·博德纳尔、本·张伯伦、法布里齐奥·弗拉斯卡、弗朗切斯科·迪·乔瓦尼和尼尔斯·哈默拉校对了这篇文章。关于图的深度学习的附加文章,参见《走向数据科学》中我的 其他帖子 订阅我的帖子 ,获取 中等会员 ,或者关注我的Twitter。**

DWave 量子退火机上运行的离散二次模型图划分

原文:https://towardsdatascience.com/graph-partitioning-with-discrete-quadratic-model-running-on-dwave-quantum-annealer-6c2e821d646e?source=collection_archive---------37-----------------------

思想和理论

量子退火器是一类量子计算机,可以帮助解决 NP 难和 NP 完全问题。这里有一个对社交网络、推荐系统等有实际意义的例子。

是由一组通过边连接的节点组成的数据结构。图形无处不在:它们可以代表友谊的网络,工厂和商店、机场等等之间的联系。在可以应用于图形以提取有用信息的许多操作(其本身就是一个巨大的兔子洞)中,可能最明显的一个是分割,,即基于一些相似性或距离标准将 N 节点分成 K 组。主要思想是,一旦组被识别,属于给定组的节点彼此之间的关系比属于其他组的节点之间的关系更紧密。

一种成熟的聚类方法被称为无监督的 K-means ,其中每个观察值被分配到质心最近的(簇的多维平均)。在 scikit-learn python 库中可以找到该算法的一个常见实现。

然而,K-means 并不是故事的结尾。我想在这篇文章中讨论的方法是基于一种叫做 二次无约束二元优化 (曲波)的优化方法,这是用量子绝热退火程序解决 NP 难题的主力,这要归功于它与伊辛能量函数的联系,后者反过来描述了这种计算机背后的物理学。在曲波公式中,问题由一组二元变量 q_i ( 例如 0 或 1,-1 或 1)、常数权重的方阵 C 以及我们希望通过找到最优的 q_i: 来最小化的目标(成本、损失)函数来描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二次无约束二元优化 (曲波)的数学公式。图片作者。

在图划分方面,权重 C_ij 是预先计算的,例如它们表示[地理距离](http://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.haversine_distances.html#:~:text=The%20Haversine%20(or%20great%20circle,the%20longitude%2C%20given%20in%20radians.)或余弦相似度TF-IDF 文档嵌入之间。 q_i 是在最小化过程中找到的,代表解。人们经常不得不处理退化解,不同组的 q_i 同样好地最小化 y

这些讨论的一个关键点是“无约束”这个词。无约束意味着目标函数…不受约束。举个例子,一个约束看起来像( q_i — 1) =1。在 Glover 等人的臭名昭著的曲波模型指南中可以找到一长串的例子。无约束意味着人们必须在原始方程中添加一项以纳入约束,乘以常数拉格朗日乘数 β,例如y’ = y + β(x — 1)* 。问题是,*y’的最终方程必须仍然是曲波方程,使得约束可以被重新吸收到更新的权重矩阵C’*的定义中。

要用曲波术语建立图划分问题,第一步是确定二进制变量代表什么。在这种情况下,一种常见的方法是将 K 个二进制变量分配给每个节点,并将它们解释为一个热码向量,也就是说,如果对于第 i 个节点,第 j 个比特为 1,而所有其他比特为 0,则该节点被分配给集群( j +1)。

Node | q_i0 | q_i1 | q_i2 |
 1   |  0   |  1   |  0   |
 2   |  1   |  0   |  0   |
 3   |  0   |  1   |  0   |
 4   |  0   |  0   |  1   |

首先,我们需要定义要最小化的目标函数。在一种常见的方法中,它被证明是不同集群之间连接 的简单数量。我们会让集群内连接的数量不受限制。这简单地通过询问对于一对节点 ij ,它们两个必须属于集群 k 或者不属于集群k来实现,这是一个 XOR 逻辑门。在曲波的世界里,相当于异或门的东西有点棘手。我们想要最小化由两个变量 q_ikq_jk 构成的量。它们的和不是 2 就是 0,它们的积不是 0 就是 1。因此,以下组合满足要求:

y = q_ik + q_jk - 2 * q_ik * q_jkq_ik | q_jk | sum | -2*prod | y
  0  |   0  |  0  |     0   | 0
  1  |   0  |  1  |     0   | 1
  0  |   1  |  1  |     0   | 1
  1  |   1  |  2  |    -2   | 0

然后,我们需要定义约束。

首先,我们希望 K 集群是平衡的每个集群必须包含相似数量的节点,大约等于 N/K

其次,如果我们正在进行二元二次模型设置,我们需要进一步的约束来确保在 q 变量中,只有 1 被设置为 1,而所有其他的都是 0。对于每个节点 i ,该约束将简单地是𝚺_ j q_ij = 1。然而,这是这篇文章的重点,DWave 在他们的软件中引入了一个新的功能来处理这种情况,作为一个离散的类索引(例如红色、绿色或蓝色),而不是二进制。有趣的是,这种模型的解算器混合类型的,这意味着它利用量子计算来改进对目标函数最小值的经典搜索。根据他们的声明:

这种混合求解器接受多达 5,000 个离散变量的问题,每个变量可以表示多达 10,000 个值的集合,以及 20 亿个线性加二次偏差

因此,总的目标函数+约束如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用离散二次模型的图划分问题的曲波目标函数。图片作者。

这个表达式可以扩展然后简化为从二次项(乘积 C_ij * q_i * q_j )中分离线性项(每次涉及一个 C_ii * q_i ),这是一个繁琐但却是定义权重矩阵 C 的系数所必需的操作。感兴趣的读者可以在 DWave 网站上的这个例子中找到更多细节。

作为一个实际的用例,我使用了一个大学空手道俱乐部的社交网络扎卡里的空手道俱乐部图,在韦恩·w·扎卡里的论文“小团体中冲突和分裂的信息流模型”中有所描述。这个由 34 个人组成的小型网络的结构可以在 python 库中找到。成对成员之间的联系代表了俱乐部之外的互动,他们最终分成两个独立的小组。为了展示如何从networkx中读取图形结构,然后用 DWave ocean 库对其进行分析,我们将把可能的子组数量增加到 2 个以上。

完整的代码可以在我的 GitHub 库中找到。简而言之,以下是解决问题所必需的一系列操作:

然而,为了运行它,需要访问闰 DQM 解算器,所以基本上需要访问。别担心,这是免费的,但使用量仅限于每月一定的数量。

一旦您获得了 Leap 的访问权,您就可以使用 LeapIDE 开发环境了。要启动一个工作区,你只需将浏览器指向一个以*https://ide.dwavesys.io/#*开头的地址,然后是 GitHub 库的地址。例如:

https://github.com/rdisipio/classify_dqm_qubo/blob/main/karate.py

*https://ide.dwavesys.io/#*[https://github.com/rdisipio/classify_dqm_qubo](https://github.com/rdisipio/classify_dqm_qubo)

如果一切正常,它应该是这样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后,您可以打开一个终端窗口(终端>新终端)并键入命令python karate.py。输出将显示为新的。名为graph_partitioning_result.png的 png 文件,看起来应该类似于用于 K =4 个集群的文件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将空手道俱乐部图分成 4 组的结果。图片作者。

总之,图划分是一个突出的问题,有许多不同的方法可以解决它。曲波方法已经存在有一段时间了(也可参见 Ushijima-姆维西瓦等人的这篇好论文),但是它们的定义对我来说似乎总是很麻烦,因为必须处理簇变量的方式,尤其是因为在某些情况下缺乏唯一的赋值。这通过使用具有离散二次模型的混合方法得到了很好的解决,这允许用户通过利用经典和基于量子的计算之间的相互作用来解决大型问题。

图表查询和影院预订

原文:https://towardsdatascience.com/graph-queries-and-cinema-bookings-cfb8fe02db25?source=collection_archive---------38-----------------------

知识图商业语言子查询变得简单

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由 Myke Simon 拍摄的照片。皇家自由形象。

我的业务被称为 FactEngine,这是一项从根本上改变人们对数据库和知识图查询语言的看法的举措。

假设您想在一家电影院预订一个座位,该影院使用一个数据库来跟踪这些预订。如果你想找到那个座位,你应该问:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FactEngine 查询语言中的图形查询。图片作者。

以上是 FactEngine 中的图表查询,对以下图表进行操作:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示电影院中会话属性的属性图模式。图片作者。

子查询

对于 initiated,该查询包含一个子查询,该子查询将首先找到那些已经预订的座位,并返回该集合之外的座位,或者相反地使用一个相关子查询,其中“座位的预订计数为零”针对电影院中的每个座位进行操作。

由于 FactEngine 查询引擎位于将所有数据库概念模型首先视为对象-角色模型(如下)的架构内,因此该查询既是图形查询又是自然语言查询。

在我们的对象-角色模型中,会话是“电影日期时间电影院上映”的地方,这允许在我们的子查询中进行简单的图形横切,即:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用对象-角色模型的事实类型读数的图遍历。图片作者。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击放大。电影院订票的对象-角色模型。图片作者。

也就是说,在我们的模型的图形表示中,日期时间是一个 属性 ,在我们的图形查询中,日期时间成为一个有效的 节点 ,其中对象角色建模中的对象类型是超图中的有效节点。

我们示例中的子查询受单词“NO”的影响。即哪个座位没有预订。

一个词彻底改变了查询

与自然语言一样,FactEngine 查询中的一个单词就可以从根本上改变查询的含义。

将“无预订”更改为“有预订”,将返回所有已预订的座位:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过更改查询中的一个单词来删除子查询需求。图片作者。

也就是说,我们已经有效地去除了对任何子查询的需求,现在我们的查询变成了简单的图遍历。

我觉得这很有趣。人类自然明白,句子中的一个单词就能从根本上改变他们处理信息的方式。让一台计算机在没有机器学习的情况下做那件事是我的动力所在。

为什么是图形查询?谁在乎呢。

事实引擎目前在关系数据库上运行,关系数据库通常使用 SQL 进行查询。如果您必须为本文顶部的查询编写 SQL,您将会遇到一些麻烦。这是:

选择[座位]。Cinema_Id,[座位]。RowNr,[座位]。字母,[行]。Cinema_Id,[Row]。RowNr
从【座位】,
【Row】
那里【座位】。Cinema_Id = [Row]。Cinema_Id
和【座位】。RowNr = [Row]。RowNr
和 1 >(从【预订】、
【场次】、
【电影】、
【影院】
、bookinghaseat
中选择 COUNT(
)
)其中【bookinghaseat】。person _ Id =[预订]。Person_Id
和【BookingHasSeat】。film _ Id =[预订]。Film_Id
和【BookingHasSeat】。日期时间=[预订]。日期时间
和【BookingHasSeat】。CinemaId =[预订]。Cinema_Id
和【BookingHasSeat】。RowNr = [Seat]。RowNr
和【BookingHasSeat】。Cinema_Id = [Seat]。Cinema_Id
和【BookingHasSeat】。字母=[座位]。信
和【预订】。Film_Id = [Session]。Film_Id
和【预约】。日期时间=[会话]。日期时间
和【预约】。Cinema_Id = [Session]。Cinema_Id
和【会话】。Film_Id = [Film]。Film_Id
和【会话】。Cinema_Id=[Cinema]。Cinema_Id
和【电影】。Name = ‘Rocky’
和[Session]。DateTime = ‘12/08/2020 10:00’
和【影院】。CinemaName = ‘大西部电影院’
)*

可能只有我,但我更愿意这样写查询:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实引擎中的自然语言查询。图片作者。

我觉得关系数据库供应商有很大的机会通过使关系数据库的查询更容易来夺回图形数据库的失地。

下一步是实现机器学习和复杂的机制不一定是计算机解释和理解大量自然/商业语言查询所必需的。

对于门外汉来说,子查询总是一个学习曲线,所以我觉得,任何可以使生活变得简单的工具都是好东西。

感谢您的阅读。如果时间允许,我会写更多关于图形查询、图形数据库、关系数据库和对象角色建模的文章。

NB 本文表达的模型的原始版本版权归 DataConstellation 所有,在 GitHub 上的 ActiveFacts 项目下共享:https://github.com/cjheath/activefacts

——————End————

图形表示学习——网络嵌入(上)

原文:https://towardsdatascience.com/graph-representation-learning-network-embeddings-d1162625c52b?source=collection_archive---------18-----------------------

GraphEDM 系列

主要概念的热身

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

节点嵌入的表示—作者修改的来自 Excalidraw 库的图像

这个系列总结了一个关于图的机器学习的综合分类法,并报告了 GraphEDM(横山雅美等。al),一个统一不同学习方法的新框架

图是建模关系数据的通用结构。从社会网络连接到蛋白质相互作用,图结构强调数据点之间的联系,使新一代基于网络的系统的开发成为可能。考虑到图在真实场景中的广泛应用以及最近表征学习技术的成功,图表征学习(GRL)方法已经大量涌现。因此,鉴于这种令人印象深刻的增长,有一个在一个可理解的框架内总结和统一 GRL 方法的巨大需求。因此,在这一系列中,我报告了我个人对以下论文的综合:

I .横山雅美、s .阿布埃尔海贾、b .佩罗齐、réc .、k .墨菲(2020 年)。图的机器学习:一个模型和综合分类法。arXiv 预印本:2005.03675。

这份手稿为理解 GRL 方法背后的主要直觉提供了坚实的基础。此外,所提出的分类法对于获得可用应用程序的广泛概述和支持为给定问题选择最佳工具特别有用。在这个新系列中,我将重点关注Graph Encoder Decoder Model(graphe DM)的一般思想,它能够描述一系列监督和非监督的方法,用于学习图形数据的表示(有关单一方法的详细信息,可以直接参考该论文)。

该系列的结构如下:

  1. GRL 背景下的嵌入问题概述(本文有报道)。
  2. GraphEDM 框架的 描述 ,包括其主要组件的摘要。
  3. A 详细解释 框架中定义的目标(或损失)函数、编码方法和监督应用。

图形表示学习中的嵌入

GRL 方法的主要目标是从离散图形数据中学习低维连续表示,即所谓的嵌入。图的属性必须保留在嵌入空间中:例如,在原始图中由相似连接表征的节点在学习过程结束时实现了接近的向量表示(在几行中,我们将看到这对于结构嵌入是如何正确的)。从另一个角度来看,节点嵌入学习可以被视为用于可伸缩性目的的降维过程。事实上,学习向量的维数严格低于原始图中的节点数。

以下小节提供了直观的定义,以便清楚地说明 GRL 的问题设置。特别是,这些小节讨论了以下各项之间的重要差异:

  1. 欧几里得与非欧几里得几何。
  2. 位置嵌入与结构嵌入。
  3. 直推式学习与归纳式学习。
  4. 无人监督和有人监督的任务。

欧几里得几何与非欧几里得几何

在大多数表示学习方法中,嵌入使用欧几里德空间中的向量建模。2000 多年来,直到 19 世纪,这是唯一已知的物理空间的概念,它仍然是最适合模拟日常世界的方式。根据大英百科全书,欧几里得空间被定义为:

欧几里得几何的公理和假设适用的二维或三维空间;也指任何有限维数的空间,其中的点用坐标来表示(每一维一个坐标),两点之间的距离由距离公式给出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从第 0 维到第 4 维欧几里得空间—作者图片

《大英百科全书》在其定义的开头解释说,欧几里得空间通过定义满足欧几里得几何的公理。欧几里得几何的独特公理之一是平行公设。为了清楚直观地理解这一假设,请看下图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

平行公设的图示—作者的图像

在这幅图中,一条线段与两条直线相交。这个交点在同一边形成两个内角 αβ ,内角之和小于两个直角之和(<180°)。根据公设,如果这两条线无限延伸,它们将在α和β边上的某一点相交。平行公设可以通过等价陈述来定义,这对于更好地理解网络嵌入表示是更有趣的。例如,这些陈述包括公平竞赛公理:

至多有一条线可以通过一个外部点平行于另一条给定的线

三角形假设:

每个三角形的角之和是 180 度

虽然欧几里得嵌入对于表示网格结构或顺序数据特别有效,但是对于图形来说,人们对非欧几里得表示学习的兴趣越来越大。在这种情况下,主要目标是学习非欧几里得空间中的嵌入,例如球面和双曲空间。在非欧几里得空间中,平行公设及其等价陈述不成立:例如,在双曲空间中, Playfair 公理被反驳,因为:

至少有两条线可以通过一个外部点平行于另一条给定的线

通过观察三角形公设在非欧几里得空间中如何不被满足,可以获得清楚的直觉:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

球面、欧几里德和双曲空间中三角形公设的图形表示—图片由作者提供

在 GRL 的背景下,非欧几里得方法似乎很有前途。这些方法背后的主要思想是在连续的嵌入空间中映射图形数据表示,这能够类似于输入的底层图形结构(例如,双曲空间表示树的连续版本)。例如,称为知识图(KGs)的语义网络的特定实现展示了分层和逻辑模式,这些模式可以通过双曲嵌入高保真地保留。以下文章和相关系列中提供了有关 kg 的更多信息:

位置嵌入与结构嵌入

RL 技术旨在学习保持输入图结构的低维表示。矩阵分解或随机行走等技术倾向于保留全局结构,重建图中的边并保持距离,如原始网络中的最短路径。关注全局结构的方法的目标是学习所谓的位置嵌入。

包括图形神经网络(GNNs)在内的其他技术旨在捕捉局部图形结构:图形中具有相似邻居的中心节点应该具有相似的嵌入,而不管原始网络中节点的距离。这些结构感知方法的目标是学习所谓的结构嵌入。

直推式学习与归纳式学习

对嵌入方法进行分类的一种特定方式与它们对未知数据的泛化能力有关。直推式设置假设在训练过程中观察到所有的图节点:该设置的要求是固定的图,不考虑新节点、边或子图结构形式的新实例。直推式方法允许我们在训练过程中推断分析的节点之间的新信息。例如,给定部分标记的节点,我们可以对未标记的节点进行分类。或者,在其他情况下,我们可以预测在训练期间观察到的图节点之间的新边。

在归纳设置中,我们期望模型能够推广到在训练过程中没有看到的节点和边。因此,归纳学习可能特别适合于动态的和时间演化的图。节点特征在归纳图表示学习方法中起着至关重要的作用。事实上,与直推式方法不同,这些特征可以用来学习参数映射的嵌入。通过优化这种参数映射而不是直接优化嵌入来实现学习目标。这意味着学习映射可以应用于任何节点,甚至是那些在训练过程中没有看到的节点。

无人监督与有人监督的任务

无监督的任务中,图结构是唯一可用的信息。因此,嵌入学习过程的目标是保持图形结构,优化重建损失。这个损失函数测量学习的嵌入能够多好地逼近原始图。

在监督任务中,提供了有关节点或图形标签的附加信息。在这些情况下,嵌入学习过程旨在处理下游任务,包括节点、边或图属性的预测。因此,该模型被优化以达到这一特定目的。正如我在下面的文章中已经报道的,在 GNNs 的情况下,您可以向网络架构添加一个预测层,以便达到您的学习目标,从节点分类到链路预测。

下一步是什么

在本系列的下一篇文章中,我将提供 GraphEDM 的细节,这是一个通用框架,封装了无监督和有监督的方法、图正则化和 GNNs。

对于 GraphEDM 框架上的所有文章,你可以使用下面的链接:【https://towardsdatascience.com/tagged/graphedm-series】T4。

关于图形表示学习的进一步阅读,你可以通过以下链接关注我的系列:https://towardsdatascience.com/tagged/grl-series

如果你喜欢我的文章,你可以支持我使用这个链接https://medium.com/@giuseppefutia/membership成为一名中等会员。

图形表示学习——目标函数和编码器(第三部分)

原文:https://towardsdatascience.com/graph-representation-learning-objective-functions-and-encoders-aef3a65bbf81?source=collection_archive---------19-----------------------

GRAPHEDM 系列

让我们了解如何优化 GRL 模型以及它们整合不同网络功能的能力

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Graph Vis —原图来自 NYU 上海网站

这个系列总结了一个关于图的机器学习的综合分类法,并报告了 GraphEDM(横山雅美等人)的细节,这是一个统一不同学习方法的新框架。

最近几年,图形表示学习(GRL)技术有了大规模的发展。这些技术的主要目标是学习将图形数据的离散结构映射到向量空间中的连续表示的函数。在之前的文章中介绍的 GraphEDM 框架能够在 GRL 环境中统一 30 多种方法来学习这些连续的表示,也称为嵌入

在无监督的设置中,GRL 技术的学习目标是保持图形结构。在监督设置中,目标是解决特定的下游任务。不同的学习方法意味着不同的优化方法和不同类型的编码器来生成节点嵌入。因此,本文的第一部分致力于 GraphEDM 中实现的目标函数。第二部分关注不同类型的基于图形的编码器。要简要回顾 GraphEDM 框架,我建议阅读本系列的前几篇文章。

横山雅美等人在文章中报道了所有的框架细节:

横山雅美岛、阿布-埃尔-海贾岛、佩罗齐岛、雷岛、&墨菲岛(2020 年)。 图的机器学习:一种模型和综合分类法 。arXiv 预印本:2005.03675。

目标函数

在机器学习中,目标函数,或标准,是我们在模型参数优化过程中想要最小化(或最大化)的一般函数。如果我们要最小化输出,对于单个训练示例,目标函数被表示为损失函数,而当考虑整个训练集时,它被称为成本函数。

因此,损失函数是在数据点上定义的:它将来自模型的预测标签与目标标签进行比较,并计算惩罚。成本函数可以是单个惩罚加上复杂性惩罚的总和或平均值,定义为正则化。正则化允许模型稳定学习过程并增强其泛化能力。在正则化中,模型参数被约束(或正则化),阻碍噪声信号的学习并避免过拟合。

正如我们将很快看到的,在 GRL 的具体情况下,图结构也可以在学习过程中作为正则项使用。

损失函数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GraphEDM 框架中的损失函数(经许可后发布)

在 GraphEDM 框架中包含 GRL 技术的情况下,我们希望优化三个不同的参数类(参见本系列的上一篇文章了解更多详细信息):

  • θ^e 代表编码器网络的参数;
  • θ^d 代表解码器网络的参数;
  • θ^s 代表分类网络的参数。在这种特定情况下, S 是包括节点、边和图的特征和标签的监督信号的集合: S ∈ {N,E,G}。

所有这些参数都通过组合监督损失项、图形正则化损失项和权重正则化损失项来优化。

监督损失

监督损失项计算预测标签和目标标签之间的损失。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形表示学习——监督损失项(转自横山雅美等人的手稿)

该损失项中涉及的图形信号 S 与涉及模型训练阶段的下游任务严格相关。如果要执行的任务是节点分类,那么 *S = (N)。*对于任务集中于链路预测的情况, S = (E) 。否则,在图级别执行任务的情况下, S = (G) 。在这个数学形式化中, ŷ^S 代表预测空间,而 y^S 代表标签空间。

图正则化损失

图正则化损失项的目标是通过利用网络结构来正则化 GRL 模型的参数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形表示学习——图形正则化损失项(来自横山雅美等人的手稿)

惩罚计算基于重构的相似性矩阵ŵT4 和目标相似性矩阵 s(W) 之间的距离。矩阵ŵW 的维数都等于|V|×|V|,其中|V|是节点数。 d 执行ŵs(W)之间的距离计算。

为了更好地理解 GRL 相似矩阵的一般概念,考虑下面的说明。图正则化最简单的用法是重构邻接矩阵,它的维数是|V|×|V|。正如我在关于 GNNs 的介绍性文章中用一个例子描述的那样,邻接矩阵描述了节点之间的(加权)边。

我们可以说邻接矩阵决定了两个节点之间的一阶接近度。为了澄清这个方面,考虑两个不同的节点 vᵢvⱼ :这些节点的局部相似性值,根据一阶接近度,由边权重 wᵢⱼ.定义因此,一阶近似能够捕获两个不同节点之间的边的存在和有效性。

然而,我们可以扩展这个一阶邻近概念,尝试从图结构中封装进一步的信息。例如,两个节点之间的二阶接近度不考虑基于它们的加权边的两个节点之间的一致性,而是基于它们的相邻节点的同质性。换句话说,如果两个节点倾向于具有许多共同的邻居,则它们根据二阶接近度实现更接近的表示。

节点邻近的概念对于学习图嵌入是至关重要的,因为许多 GRL 模型的训练目标是保持一个或多个邻近顺序。

重量规则化损失

权重正则化损失项是一种传统方法,用于在训练步骤中一般正则化模型参数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形表示学习——权重正则化损失项(来自横山雅美等人的手稿)

权重正则化概念背后的主要思想是在模型中注入少量的偏差,以获得方差的显著下降。因此,在拟合稍差的情况下,我们可以用真实数据提供更好的预测。最常见的正则化是 L2 ,其中 θ 参数的平方值使得预测对训练数据的变化不太敏感。

损失项组合

正如本节开头所解释的,为 GraphEDM 框架中封装的模型定义的损失包括所有前面的组件。为此,损失计算如下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形表示学习—损失项组合(转自横山雅美等人的手稿)

αβγ 是可以在训练过程中学习的超参数。可以猜测,在图嵌入学习的监督设置中 α ≠ 0,而在非监督设置中 α = 0 以排除监督损失项的贡献。

GraphEDM 编码器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GraphEDM 编码器(经许可后发布)

编码器网络的主要目标是将图中的每个节点映射到低维向量中。基于生成节点嵌入的编码器,不同的 GRL 方法显著不同。GraphEDM 框架总结了四个主要类别:浅层嵌入方法、图正则化方法、图自动编码方法和邻域聚合方法。

浅层嵌入方法

在浅嵌入方法的情况下,编码器功能是简单的投影操作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

浅层编码器网络(转自横山雅美等人的手稿)

因此,模型的参数被直接用作节点嵌入(在数学公式中, |V| x d 对应于模型参数的数量)。

考虑到它们的性质,这些方法在直推式设置中特别有用,直推式设置假设在训练过程中观察到所有的图节点。与归纳设置不同,直推设置的要求是一个固定的图形,不会随着时间的推移而演变。要具体理解投影步骤,你可以看我在 GNNs 上的介绍相关的文章(“输入层”一节)。

图正则化方法

在图正则化方法的情况下,编码器仅利用节点特征和标签。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形正则化编码器网络(张贴自横山雅美等人的手稿)

即使它不直接用于传播到编码网络中,图结构也被用作正则化约束( β ≠ 0 以保留图正则化损失项)。作为主要结果,使用训练步骤来学习节点特征,但是同时,使用图结构来正则化它们。

图形自动编码方法

在图形自动编码方法的情况下,编码器组件只利用图形结构。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形自动编码网络(转自横山雅美等人的手稿)

与浅层嵌入方法相比,图形自动编码器能够利用深度学习架构来学习非线性特征。在这种特定情况下,图结构没有被用作图正则化项,而是作为邻接矩阵 W 被直接注入(使用自动编码器)编码器组件中。

邻域聚合方法

在邻域聚合方法的情况下,在传播步骤中利用了节点特征( X )和图结构( W )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

邻域聚合编码器网络(转自横山雅美等人的手稿)

这些 GRL 方法利用消息传递框架(参见我以前的一篇文章以获得清晰的直觉)用其邻居的特性更新节点特性。在这种情况下,邻居特征通过边作为消息传递到目标节点。作为主要结果,嵌入能够编码图的局部结构。值得一提的是,图卷积网络(GCNs)是邻域聚合方法的一个有效示例。

对于 GraphEDM 框架上的所有文章,可以使用以下链接:https://towardsdatascience.com/tagged/graphedm-series

关于图形表征学习的进一步阅读,你可以通过以下链接关注我的系列:https://towardsdatascience.com/tagged/grl-series

如果你喜欢我的文章,可以支持我使用此链接https://medium.com/@giuseppefutia/membership成为一名中等会员。

图形表示学习——编码器-解码器模型(下)

原文:https://towardsdatascience.com/graph-representation-learning-the-encoder-decoder-model-part-2-ed8b505af447?source=collection_archive---------13-----------------------

GraphEDM 系列

深入探究 GraphEDM 架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GraphEDM 框架的表示——作者修改的原始纸质图像(经允许后发布)

*这个系列总结了一个关于图的机器学习的综合分类法,并报告了关于 GraphEDM 的细节(*横山雅美等人。al ,一个统一不同学习方法的新框架。

图是无处不在的结构,能够编码不同领域中不同元素之间的关系,从社交网络到金融交易。图嵌入是来自网络结构化数据的低维连续表示,可以通过应用图表示学习(GRL)技术来学习。

在本系列的前一篇文章中,我从不同的角度提出了对网络嵌入的讨论,进行了不同的比较,包括欧几里德几何与非欧几里德几何,位置嵌入与结构嵌入,以及直推式学习与归纳式学习。

[## 图形表示学习——网络嵌入(上)

towardsdatascience.com](/graph-representation-learning-network-embeddings-d1162625c52b)

在第二篇文章中,我们将详细介绍 GraphEDM 架构,从编码器-解码器的角度来看,它在一个独特的框架中连贯地包含了不同的 GRL 技术。横山雅美等人在文章中报道了所有的框架细节。艾尔:

I .横山雅美、s .阿布埃尔海贾、b .佩罗齐、réc .、k .墨菲(2020 年)。图的机器学习:一个模型和综合分类法。arXiv 预印本:2005.03675。

编码器的目标是将数据点的特征转换成低维表示。解码器将该表示作为输入,并试图重建原始数据。如果在训练过程中计算的嵌入能够捕获核心信息,该核心信息能够编码数据中的最高方差,则该架构的性能增加。因此,编码器-解码器架构的学习目标是在重建过程中最小化信息损失。

在网络的情况下,该重建过程旨在恢复原始图形结构(无监督设置)或实现解决特定任务的表示,例如节点或边分类(有监督设置)。与现有的研究工作相比,GraphEDM 定义了一个端到端的模型,能够封装监督和非监督学习方法。以下各节描述了该框架的主要组成部分,该框架能够在 GRL 的背景下归纳出 30 多种方法。

投入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GraphEDM 框架的输入

GraphEDM 框架认为输入是一个无向加权图, G=(N,E) ,其中 N 是节点集,而 E 表示边集。这个无向图是使用两种不同类型的矩阵定义的:邻接矩阵 W 和描述节点特征的可选矩阵 X

邻接矩阵 W 是一个维数为|N|x|N的方阵,它对图中节点之间的关系进行编码。在未加权图形的情况下, W 包括 0 和 1 之间的值。否则,对于加权图,这些值对应于边权重。 X 矩阵的行数对应于图中的节点数| N |,列数对应于特征尺寸 d ₀.以下文章提供了此类维度的示例:

对于(半)监督设置,我们需要包括目标标签,用于在特定的下游任务上训练模型。为节点 NE 和/或整个图形 G 提供训练目标标签。监控信号的集合在 GraphEDM 论文中表示为 S∈{N,E,G}

图形编码器网络

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GraphEDM 编码器

属于 GraphEDM 架构的第一个组件是图形编码器网络,表示为 *ENC(W,X;θ^e).*编码器将以下内容作为输入:

  1. 图的结构形式为邻接矩阵W→|N|x|N|;
  2. 该节点特征以特征矩阵 X →| N | x d₀.的形式出现

该输入由θ^e参数化,以便产生节点嵌入矩阵 Z = ENC(W,x;θ^e)Z 的维数为| N | x d ,其中 d 对应节点嵌入维数。根据编码器的类型,在训练过程中生成并在矩阵 Z 中编码的节点嵌入可能捕获不同的图形属性。例如,在本系列的前一篇文章中报道的,矩阵分解和随机漫步等技术旨在学习低维表示,以保持输入图的全局结构。包括图形神经网络(GNNs)在内的其他技术旨在捕捉局部图形结构:具有相似局部表示的节点应该具有相似的嵌入,而不管原始网络中节点的距离如何。

图形解码器和分类网络

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图形解码器网络

解码器组件DEC(Z;θ)将捕捉到的图形特征作为输入,并将其转换成由θ参数化的低维表示。对于无监督的任务,图解码器网络的目标ŵ=dec(z;θ^d)是从节点嵌入 Z 中重建邻接矩阵ŵ,以计算所有节点对的相似性(或不相似性)得分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分类网络

在监督设置中,分类网络产生标签值*ŷs=dec(z;θs)*对应于与下游任务相关的输出。如输入部分所介绍的, S 包括被监控信号的采集 {N,E,G}

输出

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GraphEDM 框架的输出

GraphEDM 框架能够根据具体的问题设置产生双重输出。事实上,模型的输出对应于训练无监督嵌入算法的邻接矩阵,以及有监督任务的输出标签。直观来看,ŵ的维数与w(|n|x|n|)的维数相同。另一方面, ŷ^S 的维数为|n|x|υ|,其中 Y 为标签空间。取决于受监督的应用,标签输出空间可以不同,以表示节点标签空间、边标签空间和图标签空间。

损失函数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GraphEDM 框架中的损失函数

不同类型的损失项用于优化 GRL 环境中的模型,包括监督损失图正则化损失权重正则化。GraphEDM 模型能够通过学习前面章节中提到的参数组合这些术语θ∈{θe、θd、θ^s}

监督损失项 Lₛᵤₚ^S 将预测标签 ŷ^S 与目标标签 y ^S 进行比较,这取决于下游任务(例如节点分类)。

图正则化损失项 L 𝓰 ᵣₑ利用图结构对模型的权重施加正则化约束。与监督损失不同,图正则化比较解码的邻接矩阵ŵ和地面真实邻接 W 。这种类型的正则化施加了例如相邻节点共享相似嵌入的约束。

权重正则化 L ᵣₑ传统上包括一套技术,可以防止神经架构中的过拟合,提高它们的泛化能力。这使得能够学习正则化系数,其在最小损失函数的方向上定义约束边界。因此,在训练阶段,优化被阻止达到损失函数的最小值,这可能导致过拟合。

下一步是什么

在本系列的下一篇文章中,我将详细介绍 GraphEDM 架构的不同组件,包括不同类型的编码器和损失函数。

对于 GraphEDM 框架上的所有文章,您可以使用以下链接:https://towardsdatascience.com/tagged/graphedm-series

关于图形表征学习的进一步阅读,可以关注:https://towardsdatascience.com/tagged/grl-series的相关系列。

图形搜索,对遍历和搜索行为的直观介绍。

原文:https://towardsdatascience.com/graph-search-an-intuitive-introduction-to-both-traversal-and-search-behaviour-e9c5f4dd230?source=collection_archive---------20-----------------------

我们几乎不知道,遍历和搜索的行为,以及它们在算法方面的差异,都可以通过使用图搜索从概念上学习!

说到算法和图论,人们首先想到的不是硬核编程,就是复杂的数学。如果你问一个非程序员或普通的平民,他们会把一个算法描绘成一些复杂的计算过程,需要聪明的人来开发。然而,他们不知道他们实际上被误导了。在过去的几十年里,电影、电视节目、游戏和故事都把算法描绘成只有擅长数学的人才能理解的东西。但现实中,事实并非如此。当然,随着越来越多的在线课程出现在网络上,如 Coursera 或 Youtube 上的视频,越来越多的人接触到了算法开发。然而,大多数程序员或开发人员仍然认为算法是最有声望的程序员和数学家的专利。

IT 行业的多个职业都涉及算法开发,比如机器学习(正在兴起)、后端开发等。然而,尽管多种职业(其中许多正在上升)涉及数据结构和算法的工作,但仍然没有足够的兴趣,因为尽管如前所述,职业在上升,但前端开发仍然存在。职业之间的工资仍然保持不变;技能组合可能会因公司和职业而异,但在某些方面对所有开发人员/程序员来说都是一样的,所有程序员都必须经历面试过程(取决于公司,但大多数都是如此)。不同部门的方案编制似乎没有什么不同。公司可能不需要很多算法或者机器学习开发者,但真正的问题是对算法的误解。由于对算法“复杂”的误解,没有多少开发人员像前端开发这样对机器学习或人工智能领域感兴趣。

然而,对许多人来说,是什么让算法变得“难”了呢?让人们理解起来乏味的不是数学或编程;它更多的是关于算法的概念行为。换句话说,人们很难了解算法在概念上是如何工作的,而不是所有编程和数学的理论部分,具有讽刺意味的是,这总是在好莱坞电影中涉及算法的编程场景中描绘,以显示“硬核编程”。

在编程世界中有许多类型的算法,每种算法都有自己的目的和应用。例如,您不能应用冒泡排序算法而不是二分搜索法算法,并期望它在每种情况下都以相同的速度和相同的效率运行。这是不可能的,因为它们被创造的方式和它们的目的。然而,如果我们扩大算法的范围,并根据它们的行为在一般尺度上比较它们,我们会得到三种类型的算法;排序、遍历和搜索。由于排序遵循相同的遍历协议,但只是比较前一个或下一个值,对于这种情况,由于我们是在谈论一般情况,我们将假设排序行为模仿遍历算法的相同行为(在某些方面确实如此)。因此,当学习和试图理解算法的工作方式时,归结起来更多的是关于它们如何遍历为参考或比较而存储的某些值,并在给定的数据集中搜索某些值。

如果你知道这两个基本行为,并理解它们是如何工作的,学习任何算法对你来说都会容易得多。但是对于那些还没有的人,不用担心。使用两种图搜索算法(是的,我们将通过算法本身学习基本的算法行为),我们将了解它们的工作和应用。我决定使用图形,因为它最容易直观地理解,这最终会导致更好的概念理解。

参考文献中使用的两种图搜索算法是广度优先搜索和深度优先搜索。那些读过我之前关于著名的编码问题的文章的人(如果你还没有读过的话,看看),或者知道树遍历的人,可能对这两个基本的,但是高效的算法很熟悉。它们都以线性时间运行,并且可以使用递归或迭代来实现。它们都使用数据结构作为参考(广度优先使用队列,深度优先使用堆栈),最重要的是,它们都可以用于搜索和遍历。但是你可能会想,如果这两个算法都有那么多相似之处,那么用两个算法而不是一个算法有什么意义呢?这些算法可能有许多相似之处,但它们的工作和行为方式是不同的,这将有助于我们理解不同类型的算法如何在更广泛的范围内工作。

对于那些首先不知道什么是图数据结构的人来说,它本质上像树一样工作,但是没有通用的遍历顺序,直到开发人员或用户声明。它们由保存数据的节点或顶点和连接两个顶点的组成。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有向图示例|作者图片

图有不同程度的联系。边与顶点的比率越高,图的连通性越好。在这种情况下,根据上面的例子,我们可以说该图是高度连通的,因为顶点与边的比率是 6:9,相当于 2:3。图表的酷之处在于你可以给每条边添加权重。使用权重,您可以创建高效的搜索和寻路算法,我们将在后面讨论。然而,加权图是具有边的典型图,这些边具有与在顶点之间行进相关联的特定数量或成本。通常,在大多数应用中,需要此成本来评估两个特定对象的最有效路径或距离。最后但同样重要的是,关于本文中的图,您需要知道的最后一件事是图的类型。图的两种最基本的类型是有向和双向的。有向图是边限制顶点之间移动方向的图。看一下上面的图表。边缘只通向一个方向。然而,另一方面,如果它是一个双向图,边可能会导致两条路径。例如,一个从边 A 到边 B,另一个从边 B 到边 A。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

双向图示例|作者图片

这两种图都有自己的应用,但是在本文中,为了简单明了,我们将使用有向图。

在继续学习算法行为之前,我们将设置的下一个基本定义是广度优先算法更深入的内容,以及它在图中的工作方式。广度优先被认为是一种强力算法,它在移动到另一个深度级别之前检查所有相邻顶点的值。当顶点被搜索或遍历时,它们的子节点被添加到被称为边界的队列中。该队列遵循 FIFO 结构(先入先出)来跟踪当前顶点和仍有未访问邻居的顶点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

BFS 第一次迭代|作者图片

当某个顶点的所有相邻顶点都被访问过时,队列将退出队列。广度优先是查找两点间任意路径的一种非常低效的方法,但它是比较两个顶点间路径的一种很好的方法。正因为如此,BFS 有助于找出从一个地方到另一个地方的方向。而且说到这个算法的性能,它运行在O(no. vertices + no.edges)。由于性能取决于顶点的数量和图形的大小,因此输入,我们可以考虑这个线性时间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

BFS 第二次迭代|作者图片

最后但同样重要的是,我们需要设置的最后一个定义是什么是深度优先搜索以及它是如何工作的。深度优先搜索算法在横向移动到另一条路径之前检查沿着顶点路径的值。这些类型的算法有利于确定两个顶点之间是否存在路径。为了完成这个路径查找任务,深度优先算法使用堆栈数据结构,或者更常见的是使用递归来跟踪搜索的路径和当前顶点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DFS 首次迭代|作者图片

如果我们已经到达路径的末端,那么堆栈将继续弹出,直到有一个顶点有未访问的边。这个过程将继续,直到堆栈为空。性能与O(no. vertices + no. edges)时的 BFS 相同,我们已经在线性时间考虑过了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DFS 第二次迭代|作者图片

为了在本文的其余部分反映算法及其行为,我们将使用这两个函数来反映上面定义的算法:

现在我们有了基本的定义,让我们从谈论搜索行为开始。搜索算法本质上是不断遍历数据直到找到所需值的算法。当然,可以考虑各种参数,但这是基本的通用定义。以线性搜索为例。它将不断遍历列表,直到找到所需的值。如果没有,它将不会返回或打印任何内容。大多数图搜索算法在线性时间运行,因为它们是蛮力算法(这意味着它们易于实现,但性能效率低),但有些运行在日志时间,如二分搜索法。作为一名程序员,让搜索算法在日志时间运行可能是你能做的最好的事情,因为在每个数据集中找到一个普遍的重要模式对我们的眼睛来说是不可见的。然而,让我们来看看搜索是如何更直观地在代码中工作的。以上是深度优先和广度优先搜索图的代码。先说深度优先搜索。我们的算法将不断添加顶点(根据它们在上面定义深度优先搜索时所遵循的路径),直到我们到达期望的顶点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度优先搜索递归搜索值为 4 的顶点|按作者排序的图像

如果我们没有到达期望的顶点,那么我们递归地调用顶点的边,直到我们找到顶点的“位置”如果根本没有位置,意味着两个顶点之间没有路径,算法会返回None

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度优先搜索递归尝试查找值为 0 的顶点|按作者排序的图像

请注意该算法如何遍历和评估不同的路径,但仍然无法找到值为 0 的顶点。这是因为从来没有值为 0 的顶点!然而,我们可以注意到算法的排列和算法在每个深度遍历的顺序。

模拟自己的图形搜索或深入了解:【https://github.com/GEEGABYTE1/GraphSearch

既然我们现在知道了搜索在概念上是如何工作的,我们就可以继续遍历了。如果我用一句话来总结遍历,那就是它和搜索一个值是一样的,但是,没有一个实际的目标值来搜索。当试图直观地找出一些东西或发现未来的可能性时,遍历算法是很棒的。大多数遍历算法以不同的方式遍历数据集,直到它们到达数据集的末尾或者满足特定的条件,例如,只遍历路径特定的次数。例如,让我们用深度优先搜索和广度优先搜索来考虑我们的遍历。

我们一直走,直到我们到达了路的尽头,或者已经访问了每一个可能的边缘。在广度优先搜索中,当我们的 BFS 队列为空时,我们知道我们已经到达了终点;对于深度优先搜索,当路径为None(意味着没有更多可能的边要遍历)并且函数自身返回None,结束递归。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

BFS 穿越|作者图片

请注意,该算法如何穷尽我们图形中的每个可能的边,直到它达到一个新的深度。深度优先遍历遵循相同的打印和遍历过程,但根据其定义。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度优先遍历|作者图片

注意深度优先遍历,就像 BFS 一样,遍历相同的路径,就好像它试图搜索一个值。然而,遍历版本不是只打印或返回一条路径,而是打印它们已经走过的每一条不同的路径,直到它们到达终点(在这种情况下,如果它们到达了没有边的顶点)。但是,我们是如何得到不同的抽象路径的呢?信不信由你,获取抽象路径是非常直观的。从根顶点开始,在每次递归和迭代之后,我们弹出在当前路径中从根顶点开始遍历的边。

随着遍历的进行,我们不断弹出已经使用过的根顶点的边,确保没有任何重复的路径。这也可以被认为是另一种结束情况,其中我们继续弹出并遍历图,直到根顶点不再是图的一部分,或者换句话说,不再有根顶点的边需要遍历。

查看更深入的遍历算法:https://github.com/GEEGABYTE1/GraphSearch-Traversal

现在,就应用而言。遍历和排序算法有很多应用。作为人类,我们知道算法是我们今天使用的技术的基本组成部分。它们让我们的任务变得更容易,更容易完成,等等。想一想,仅广度优先搜索和深度优先搜索就有多种应用,从寻路、GPS 系统、文件系统、跟踪优步等等!例如,让我们更深入地看看 GPS 系统,以及遍历和搜索是如何使用我们之前使用的两种算法工作的。

我已经创建了一个名为 SkyRoute 的 GPS 模拟系统,它对温哥华的车站和地标进行采样,以及哪个车站通向哪个地标。用户可以输入起点和终点,程序将使用广度优先和深度优先输出需要作为最佳路径的站点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SkyRoute 输出从伯纳比湖到萨姆森五世博物馆的最佳路径|图片由作者提供

深度优先算法用于查看是否存在对应于地标的站。SkyRoute 的另一个特点是用户可以添加正在建设中的相应站点(查看下面的 GitHub 链接了解更多信息)。因此,由于用户可以添加正在建设中的电台,电台仍然运行并成为一个选项没有任何意义。因此,为了使程序流适应这些变化,如果有一个车站正在建设中,我们将使用 DFS 来查看从起点到终点是否有另一条路径。如果有,程序会将可能的路线作为路径返回;否则,程序将断定没有可能的路径。本质上,我们的结论是 DFS 不返回路径,因为每个地标至少有一个站。当一个车站正在建设中时,程序会将该车站从每个地标中移除(这个过程相当于我们从一个顶点(如根顶点)中弹出一条边来打印抽象路径)。因此,在起点和期望的目的地之间可能没有路径。

但是如果车站不在建设中呢?这就是 BFS 算法的用武之地。由于我们的 BFS 版本附加了每个可能路径的列表(也是一个数组),我们希望返回最短路径,因为这是当今高效 GPS 或地图应用程序的全部要点。在程序在两个目的地(起点和终点)运行 BFS 后,它将比较路径的每个长度,并返回长度最短的一个,假设选择最少的站点意味着快速和容易的路线。然而,就像 DFS 一样,如果它们之间没有可能的路径,那么算法将返回None,这将向用户指示没有找到路径。

就遍历而言,也许添加一个用户可以看到两点的多条路径的功能对这个项目的未来来说是一个很好的想法,因为它允许用户看到不同的路径,以防碰撞,天气,乘客数量等。遍历算法也将与上面遍历模拟中所示的相同。

不过,这就是地图应用和 GPS 系统的工作方式。使用遍历和搜索算法,GPS 系统和地图应用程序可以在不到一秒钟的时间内输出到达目的地的不同路径!例如,Google Maps 可以基于某些变量(如燃料、交通、运输方式等)输出不同路径的唯一方法是使用遍历和搜索算法。当然,由于效率和性能的原因,他们可能不会使用广度优先或深度优先,但他们的算法基于相同的逻辑运行。

亲自体验一下 sky route:https://github.com/GEEGABYTE1/SkyRoute

所以,算法看起来并没有那么难懂。当然,理解它们是如何工作的可能需要一些时间,但它们并非完全不可能。最重要的是,它们不适合那些只擅长数学的人;任何人都能理解他们。学习和理解算法就像在学校学习一门新的学科或参加烹饪课程。学习一天,你不会有你想象的那么好。不断的练习和学习会使你提高对这门学科的知识和理解。这就是学习数据结构和算法的方式。没有一些基础的数学背景,不能只学算法。如果你想真正理解它们,你必须有时间和耐心去研究它们(概念上的和编程中的)并实践它们。你要记住的是,如果一个人能做到,那么你也能做到!我本人非常喜欢算法和数据结构,因此,它对我来说很容易。然而,如果你现在没有,不要担心,我会继续写算法以及我们如何更好地学习它们,因为开发算法和开发前端一样有趣。

图论基础

原文:https://towardsdatascience.com/graph-theory-basics-88a89863e3c1?source=collection_archive---------24-----------------------

随着图论应用的不断发展,你需要知道的是

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

诺德伍德主题公司在 Unsplash 上拍摄的照片

在编程和数学术语中,图论真的不是什么新东西,但是它在代码中的实现和使用随着机器学习和人工智能的进步而增长。一个很大的原因是大规模模型的计算能力的进步允许开发复杂的模型来表示任何事物之间的关系。图论技术中最著名和最早的实现之一是 Google 的页面排名算法。页面排名算法是谷歌搜索算法的最初版本,植根于图论,基于一种有效的方法来衡量互联网网页如何通过链接和用户点击/流量连接,以及哪些网页最受欢迎。此外,近年来,图论已被应用于知识图,以帮助理解系统内变量的相互联系(例如,工厂和其中的所有机器和因素,以及它们如何相互影响)。此外,图论已被应用于经济模型,以了解股票市场如何表现,以及区块链的内部工作是由图论支持的。因此,通过图形方式计算和创建极其复杂的模型的广泛能力只会继续增长,学习和理解基础知识对于将其应用于其他用例至关重要。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由劳伦·里奇蒙Unsplash 拍摄

图论基础和术语

在数学中,图论是对图形的研究,图形是用于建模对象之间成对关系的数学结构。这个上下文中的图由个顶点(也称为个节点个点)组成,这些顶点由条边(也称为条链接条线)连接。—维基百科

快速的维基百科搜索会给你这个图论的定义,下面我们将开始分解它是什么以及它是如何工作的

定义:

  • 顶点/节点——这些对象通常具有自身的属性,然后连接到图形中的其他对象。对象可能具有的属性的一个简单示例是权重或值,在更复杂的对象中,这还可能包括成本、描述性属性(颜色、大小、重量)、能力、概率等。这都取决于图网络是如何构建的以及它试图完成什么
  • 边缘/链接-边缘本质上是对象之间的关系或连接它们的道路。相互之间有边的对象有关系,而没有连接的对象没有关系。
  • 有向/无向图-理解有向图和无向图之间的区别的最简单的方法是将对象之间的边视为双向道路或单向道路。有向图显示了从一个对象到另一个对象的关系,这种关系传递了与另一个对象的关系中的任何东西,并且不是对等的。无向图是两个对象之间的连接,但关于其关系的信息可以在它们之间双向流动。需要指出的一个关键点是,在有向图中,一对节点之间可以有两条边来模拟这两个节点之间的“无向”性质。
  • 循环/无环图形-循环图形是一种具有一组连接成闭环的节点的图形,无环图形不具有闭环属性。

图形在计算机中是如何表示的?

计算机图形表示中两个最常见的主题是邻接矩阵(有时称为关联矩阵)或邻接表。

邻接矩阵——在这种方法中,图形被转换成图形的矩阵表示。该矩阵将是一个 n×n 形状的矩阵,其中 n 表示节点的数量,矩阵中的值表示节点之间的边,如下所示。值得注意的是,无向图的矩阵表示将是其自身沿对角线的镜像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

无向图邻接矩阵的可视化表示。图片作者。

邻接表——这个版本的图被表示为顾名思义的列表。它是一个无序列表,描述了图中顶点(或边)的邻居。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

无向图的邻接表的可视化表示。作者图片

将图形放入这两种形式,允许我们对图形进行计算编程,这样我们就可以设置图形的规则、关系、属性和变化。

有了这些基本术语和概念,我们可以探索一些用图论来解决基本问题的例子,并希望用它们作为更复杂系统的构建模块的例子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

苏珊·尹在 Unsplash 上的照片

最短路径

关于图网络,您可能想知道的最基本的事情之一是路径之间的距离以及它们之间的最佳或最短路径。这可能有用的一些例子是查看电网或寻找社会网络中的分离度(凯文·贝肯)。

BFS(广度优先搜索)和 DFS(深度优先搜索)

在几乎所有的学习平台中,图论引入的前两个算法是 DFS 和 BFS。它们都是遍历图形的算法。从本质上讲,DFS 和 BFS 都在努力实现相同的目标,只是方式略有不同。

从 BFS 开始,该算法背后的原理是在移动到下一个节点之前,从一个起点调查所有相邻节点。队列用于帮助指示哪些节点已经被访问,一旦该路径完成,它将转到下一个未被访问的节点,并像以前一样开始遍历图,标记所有被访问的节点。这个循环将对整个图形重复,直到所有节点都被访问过。在队列中,可以确定从起点到目标端点的最短路径。下面是 BFS 搜索算法的伪代码示例。

 1  procedure BFS(G, root) is
 2      let Q be a queue
 3      label root as discovered
 4      Q.enqueue(root)
 5      while Q is not empty do
 6          v := Q.dequeue()
 7          if v is the goal then
 8              return v
 9          for all edges from v to w in G.adjacentEdges(v) do
10              if w is not labeled as discovered then
11                  label w as discovered
12                  Q.enqueue(w)

DFS 或深度优先搜索是一种非常类似于 BFS 的算法,但它的行为略有不同。当遍历该图时,一旦到达 DFS 中的死胡同,该算法将回溯到与未被访问的节点相连接的前一个节点,并在该路径上继续。然后,它将只去一个随机的节点,如果它没有从图的原始网络连接。这两种方法都是最先教授的沿着图遍历并找到最短路径的方法。潜在的应用将是将其应用于社交网络的图表,以确定具有相似背景、朋友或爱好的人的潜在建议。下面是一个 DFS 伪代码的例子。

1 procedure DFS_iterative(G, v) is
2    let S be a stack
3    S.push(v)
4     while S is not empty do
5        v = S.pop()
6         if v is not labeled as discovered then
7             label v as discovered
8             for all edges from v to w in G.adjacentEdges(v) do
9                 S.push(w)

还有更高级的图遍历方法,例如 Bellman-Ford、Djikstra 和 Kruskal。每一种方法都尝试并解决在 BFS 或 DFS 中使用的方法无法解决的额外问题,例如,具有负权重/长度的边、循环图等…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由艾米-利·巴纳德Unsplash 拍摄

其他图论问题:

  • 枚举——换句话说,就是对满足特定条件的图形进行评估和计数,或者换句话说,就是解决组合数学问题。
  • 子图——查看图形以确定一个图形的组件是否是另一个图形的子组件,或者查看图形之间的“遗传”特征
  • 图表着色—类似于枚举,但是将着色应用于图表问题,这样您就不会在图表的着色顶点上碰到相似的颜色
  • 统一——评估约束更多(或信息更多)的图表,以及它们如何汇总成约束更少(或更一般化)的图表或模型
  • 网络流量——这类问题的一个例子是评估一个能源网格,以确定整个系统的能量流量
  • 可见性问题——尝试解决一个类似于博物馆警卫问题的问题,这样你可以计算出参观整个博物馆画廊的最少警卫人数。
  • 分解——查看特定条件下的分解图。
  • 路线问题——最短路径就是一个这样的问题,另一个是旅行推销员问题或哥尼斯堡七桥问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由吕山德·袁Unsplash

为什么学习这个很重要

如前所述,图论正慢慢成为一种更有效的方式来表示现实世界的问题。解决任何系统的极其复杂的关系和细节的计算能力现在可以通过编程的方法来完成。本文旨在真正充当图论的初级读本,并鼓励您继续学习评估和实现图来解决现实世界问题的不同方法。

我个人最喜欢的课题之一是区块链,在某种程度上,你可以从图论的角度来看待区块链。

如果您对本文有任何问题或意见,请留下您的评论。

图变换器:图变换器的推广

原文:https://towardsdatascience.com/graph-transformer-generalization-of-transformers-to-graphs-ead2448cff8b?source=collection_archive---------2-----------------------

这篇博客是基于 Xavier Bresson2021 年 AAAI 关于图的深度学习:方法和应用研讨会(DLG-AAAI’21)上发表的论文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们提出了 Graph Transformer,这是一个可以对任意图形进行操作的转换器神经网络。

博客大纲:

  1. 背景
  2. 目标
  3. 图形转换器的关键设计方面
  4. 提议的图形转换器架构
  5. 来自实验的评论

1.背景

让我们从两个关键词开始,变形金刚图形作为背景。

变形金刚(电影名)

基于 Transformers [1]的神经网络是自然语言处理(NLP)中表示学习的最成功的架构,克服了顺序处理引起的递归神经网络(RNNs)的瓶颈。作为变压器的核心构件,存在多头关注机制,由以下公式表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5:使用多头注意机制的单词“I”的特征更新等式。这些符号代表通常的含义。

使用多头注意力,一个单词关注句子中的每个其他单词,并组合接收到的信息以生成其抽象特征表示。

图表

图是无处不在的数据结构。数据集可以用图形来表示的应用领域非常广泛。比如化学中的分子图,物理中的粒子间相互作用,医学中的药物蛋白质相互作用,社交媒体中的用户及其社交和商业联系,组合优化中的问题等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:具有图结构数据集的代表性领域.链接

对于图上的学习,图神经网络 (GNNs)已经成为深度学习中最强大的工具。

简而言之,GNNs 由几个参数化的层组成,每个层接受具有节点(和边)特征的图,并通过考虑可用的显式连接结构(图结构)来构建节点(和边)的抽象特征表示。这样生成的特征然后被传递到下游分类层,通常是 MLPs,并且目标属性被预测。

2.目标

现在,目标是将 transformer 神经网络推广到图形,以便它可以学习具有任意结构的图形和数据集,而不仅仅是顺序的(可以解释为由 NLP Transformers 完成)。

为了实现目标,我们着重于将变压器的关键设计原则从 NLP 扩展到一般的图形。

3.图形转换器的关键设计方面

我们发现,使用图稀疏性和位置编码的注意力是将转换器推广到任意图的两个关键设计方面。

现在,我们从 NLP 和图的上下文来讨论这些,以使 Graph Transformer 的扩展更加清晰。

图形稀疏性

在 NLP 中,转换器在构建单词的特征表示时考虑全部注意力。也就是说,转换器将一个句子视为一个单词的全连接图。这种全神贯注的选择是合理的,原因有两个*😗

首先,很难在一个句子中的单词之间找到有意义的稀疏交互或联系。例如,一个句子中的一个单词对另一个单词的依赖性会随着上下文、用户的视角和手边的应用而变化。在一个句子中的单词之间可能存在许多似是而非的基本事实联系,因此,句子的文本数据集通常不具有显式的可用单词交互。因此,让模型决定单词如何依赖于其他单词是有意义的。

第二,NLP 中如此解释的全连通图,节点往往少于几十上百个(句子往往少于几十或几百个单词)。在这种大小的图中,关注每个节点在内存和时间上是可行的。

由于这两个原因,可以在 NLP 转换器中进行充分的关注,随后的工作[2,3,4]表明它在语言建模和几个 NLP 任务中卓有成效。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3:全神贯注的注意力被限制在本地附近。

然而,在实际的图数据集的情况下,图具有基于应用领域的任意可用连接结构,并且具有高达数百万甚至数十亿的节点大小。在神经网络中学习时,可用的结构为我们提供了丰富的信息源,而节点大小实际上使得不可能有这种数据集的完全连接的图。

基于这些原因,拥有一个图转换器是实际的*(为了可行性)和有利的(为了利用稀疏结构信息),其中一个节点关注本地节点邻居,类似于图关注网络(GATs)[5]。*

事实上,局部信息聚集是 GNNs 的核心,表明稀疏性是泛化的良好归纳偏差。

位置编码

Transformer 中的注意机制对于节点的排序是不变的。它不知道单词在序列(或句子)中的位置。这意味着,转换器考虑多组单词,而不是 NLP 中的单词序列,如下面的比较所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图:对于多头注意机制,输入可以解释为多组单词。

那将意味着丢失一些关于单词排序的信息,不是吗?

为了避免这种情况并使 transformer 知道顺序信息,在 Transformer 中需要某种位置编码。Vaswani 等人[1]的原始变换器使用正弦位置编码,在输入端添加到每个单词的特征向量。这有助于将单词之间必要的普遍(顺序)关系编码到模型中。

我们扩展了图形转换器位置信息编码的关键设计模块。事实上,GNNs [6,7,8]中的一系列研究最近表明,位置信息改善了 GNNs,并克服了 GNNs 在几个基本任务中的失败。

因此,我们利用了 GNNs 中位置信息的最新成果,并在 Graph Transformer 中使用拉普拉斯位置编码[8]。我们使用预先计算的拉普拉斯特征向量[9]来添加到第一层之前的节点特征中,类似于在原始变换器中如何添加位置编码[1]。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图:原始转换器 v/s 建议的图形转换器中的位置编码(PEs)

拉普拉斯 PEs 是原始变压器中使用的正弦 PEs 的自然推广,因为正弦 PEs 可以被解释为线图的特征向量,即 NLP 中的句子。

因此,在将转换器推广到任意图时,注意力期间的稀疏图结构和输入处的位置编码是我们考虑的两个重要因素。

4.提议的图形转换器架构

现在,我们将介绍所提出的架构——图形转换器层和具有边缘功能的图形转换器层。如下所示的层示意图由主要组件组成——带 PEs 的输入、关注限于本地邻居的多头关注机制以及前馈模块。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

与 Vaswani 等人[1]的标准转换器相比,将 transformer 概括为图形以产生图形转换器的关键区别(或扩展)是:

I)注意机制是每个节点的邻域连接性的函数,由公式表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ii)位置编码由拉普拉斯 PEs 表示。特别地,在训练之前为每个图预先计算图拉普拉斯的特征向量,并且将节点的k-最小非平凡特征向量指定为该节点的 PE。

iii)前馈模块使用批量归一化【10】代替原始变压器[1]中使用的层归一化【11】。我们的经验证据支持了这一点,即使用批标准化代替层标准化会产生更好的性能。

iv)图形转换器扩展为具有边缘表示(参见架构图右侧的具有边缘特征的图形转换器层)。这种架构对于具有丰富信息的数据集至关重要,例如,分子图中沿边缘的键信息,或者知识图中的关系类型。在这种边缘扩展架构中有两件事需要注意:边缘特征被融合到相应的成对隐式注意力分数,并且在每一层都有指定的边缘特征流水线,如以下层更新等式所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这结束了对所提出的图形转换器的描述。关于完整的层更新方程,我们参考该论文。

5.来自实验的评论

我们在基准数据集上评估了 Graph Transformer,并验证了我们的设计选择,同时试图回答一些公开的研究问题:I)对于将 Transformer 推广到图形,是局部注意还是完全注意,ii)如何编码稀疏结构信息?iii)位置编码候选。

我们备注以下结果:

a)如已经讨论的,图稀疏性是关键的,并且与使用完全注意相比,在注意机制中使用图稀疏性总是给出更好的性能。GNNs 在几个应用领域的成功已经证明了稀疏度对于图形数据集是一个很好的归纳偏差。

b)在注意力、PEs 使用、标准化候选等设计选择的几种组合中。架构使用 i)关注本地邻居、ii)拉普拉斯 PEs 和 iii)前馈模块中的批量归一化层,在用于评估的所有数据集上具有最佳性能。这从经验上验证了使用这些组件来有针对性地推广变压器的选择。

c)由于拉普拉斯 PE 具有期望的属性,具有 I)距离感知信息,ii)可区分的节点特征,以及 iii)原始变换器的 PE 对一般图形的概括,因此与用于研究图形变换器的文献中使用的 PE 候选相比,根据经验,它是用作图形变换器的合适的 PE 候选,甚至(论文中详细讨论了相关工作)。

d)总体而言,与评估数据集相比,Graph Transformer 在 gnn 中实现了有竞争力的性能。所提出的架构性能明显优于基线 GNNs (GCNs [12]和 GATs [5]),并有助于缩小原始转换器和图形转换器之间的差距。因此,图形转换器作为一种新的强大的基于注意力的 GNN 基线出现,我们希望它可以很容易地扩展到未来的研究中,只要它简单明了,并能从转换器中直接概括出来。

数值实验的表格在论文里,代码实现在 GitHub 上开源,附带的视频演示在 YouTube 上,对应链接如下:

论文:【https://arxiv.org/abs/2012.09699
GitHub:https://github.com/graphdeeplearning/graphtransformer
视频:https://youtu.be/h-_HNeBmaaU?t=240

[1] 瓦斯瓦尼,a .,沙泽尔,n .,帕尔马,n .,乌兹科雷特,j .,琼斯,l .,戈麦斯,A.N .,凯泽,日,和 Polosukhin,I. (2017)。你需要的只是关注。

[2] Devlin,j .,Chang,M.W .,Lee,k .和 Toutanova,k .(2018 年)。Bert:用于语言理解的深度双向转换器的预训练。

[3]拉德福德、纳拉辛汉、萨利曼斯和苏茨基弗(2018 年)。通过生成性预训练提高语言理解能力。

[4] Brown,T.B .,Mann,b .,Ryder,n .,Subbiah,m .,Kaplan,j .,Dhariwal,p .,Neelakantan,a .,Shyam,p .,Sastry,g .,Askell,a .,Agarwal,s .(2020 年)。语言模型是一次性学习者。

[5]韦利奇科维奇、库库鲁勒、卡萨诺瓦、罗梅罗、莉雅和本吉奥(2018 年)。图形注意力网络。

[6]斯里尼瓦桑和里贝罗(2019 年)。位置节点嵌入和结构图表示的等价性。

[7] You,j .,Ying,r .和 Leskovec,j .(2019 年)。位置感知图形神经网络。

[8] Dwivedi,V. P .,Joshi,C. K .,Laurent,t .,Bengio,y .,和 Bresson,X. (2020 年)。基准图神经网络。

[9] Belkin,m .和 Niyogi,P. (2003 年)。用于降维和数据表示的拉普拉斯特征映射。

[10] Ioffe,s .和 Szegedy,c .(2015 年)。批量标准化:通过减少内部协变量转移加速深度网络训练。

[11] Ba,J.L .,Kiros,J.R .和 Hinton,g . e .(2016 年)。图层规范化。

[12]基普夫和韦林(2016 年)。基于图卷积网络的半监督分类。

使用 D3 的图形数据可视化

原文:https://towardsdatascience.com/graphical-data-visualization-using-d3-ae0ee82ae2e2?source=collection_archive---------27-----------------------

使用 MPLD3 创建交互式数据可视化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

粘土银行Unsplash 拍摄的照片

D3 是一个基于 Javascript 的数据可视化库,用于在浏览器中创建交互式数据可视化。它基于 HTML5 和 CSS,使得可视化更加动态和吸引人。它支持 2D 和三维可视化。因为它是一个 Javascript 库,我们可以在任何框架上使用它,比如 Angular。JS 反应过来。JS 等。

使用某些库可以在 Python 中创建基于 Javascript 的可视化。其中一个库是 MPLD3,这是一个基于 D3 的开源 Python 库。JS 并构建在 Matplotlib 之上。它用于创建交互式数据可视化。

在本文中,我们将探索 MPLD3 并使用它创建一些可视化。

让我们开始吧…

安装所需的库

我们将从使用 pip 安装来安装 MPLD3 开始。下面给出的命令将使用 pip 安装 MPLD3。

pip install mpld3

导入所需的库

在这一步中,我们将导入创建交互式数据可视化所需的所有库。

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import mpld3
from mpld3 import plugins 

创建图表

现在我们将开始创建不同类型的图表。默认情况下,如果我们希望使用 mpld3 生成每个图表,我们需要运行下面给出的命令。

mpld3.enable_notebook()
  1. 泡泡剧情
# Scatter points
fig, ax = plt.subplots()
np.random.seed(0)
x, y = np.random.normal(size=(2, 200))
color, size = np.random.random((2, 200))
ax.scatter(x, y, c=color, s=500 * size, alpha=0.9)
ax.grid(color='lightgray', alpha=0.3)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

泡泡图(来源:作者)

创建的图具有高度的交互性,可以使用图表下方提供的不同选项进行控制。

2.直方图

fig = plt.figure()ax = fig.add_subplot(111, facecolor='#EEEEEE')
ax.grid(color='white', linestyle='solid')x = np.random.normal(size=1000)
ax.hist(x, 30, histtype='stepfilled', fc='lightblue', alpha=0.9);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

直方图(来源:作者)

3.折线图

# Draw lines
fig, ax = plt.subplots()
x = np.linspace(-5, 15, 1000)
for offset in np.linspace(0, 3, 4):
    ax.plot(x, 0.9 * np.sin(x - offset), lw=5, alpha=0.9,
            label="Offset: {0}".format(offset))
ax.set_xlim(0, 10)
ax.set_ylim(-1.2, 1.0)
ax.text(5, -1.1, "Here are some curves", size=18, ha='center')
ax.grid(color='lightgray', alpha=0.3)
ax.legend()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

折线图(来源:作者)

4.支线剧情

fig, ax = plt.subplots(3, 3, figsize=(6, 6))
fig.subplots_adjust(hspace=0.1, wspace=0.1)
ax = ax[::-1]X = np.random.normal(size=(3, 100))
for i in range(3):
    for j in range(3):
        ax[i, j].xaxis.set_major_formatter(plt.NullFormatter())
        ax[i, j].yaxis.set_major_formatter(plt.NullFormatter())
        points = ax[i, j].scatter(X[j], X[i])

plugins.connect(fig, plugins.LinkedBrush(points))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

次要情节(来源:作者)

在这里,您可以清楚地看到我们使用 MPLD3 创建的不同图表和图形。所有这些图表都具有高度的互动性和视觉吸引力。继续尝试不同的数据集,创建不同的可视化效果,并让我知道您在回复部分的评论。

本文是与 Piyush Ingale 合作完成的。

在你走之前

感谢 的阅读!如果你想与我取得联系,请随时通过 hmix13@gmail.com 联系我或我的 LinkedIn 个人资料 。可以查看我的Github简介针对不同的数据科学项目和包教程。还有,随意探索 我的简介 ,阅读我写过的与数据科学相关的不同文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值