| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 解决‘GNN’中‘over—smoothing’问题(通俗易懂) -> 正文阅读 |
|
[人工智能]解决‘GNN’中‘over—smoothing’问题(通俗易懂) |
一:'over-smoothing'问题的提出:如下图: 按照我们以往学习‘CNN’等其他层时,我们通常会有这么一个概念,就是加入越多层,我们的神经网络的表达能力也就越强。这种观念在‘GNN’层中是不合理的,为什么这么说呢? 再解释这问题之前我们要引入一个概念--‘receptive field’(接受域)如下图: ? 接受域简单来讲就是假如有1层GNN层,那么我们是不是就是从要嵌入节点(图中黄色节点)的一阶邻居(图中红色的点)那里拿信息?那对于有K层GNN层来讲是不是从要嵌入节点的1-k阶邻居那里拿信息?对的,接受域就是指你具体要到哪些邻居那里拿信息,那些邻居的总和就是接受域 知道了接受域的概念后我们就可以定义‘over-smoothing’问题了,如下图: ? 假如现在你想进行链路预测,那你就需要对一对节点进行嵌入,如果GNN层很深的话,这两个节点所共享的邻居就会非常多,导致这两个节点的嵌入非常相似(如图中的红点部分为两个节点的接受域的共享部分)(黄色节点是需要嵌入的两个节点),这就是‘over-smoothing’问题了 二:'over-smoothing'问题的产生:所以我们可以这么归纳‘over-smoothing’问题的产生: 我们知道节点嵌入是取决于它的接收域范围的,如果两个节点的接收场高度重叠,那么他们的节点嵌入也可能十分相似,所以会有以下逻辑:我们堆叠过多的GNN层—节点具有高度重叠的接收域—节点的嵌入变得十分相似—这就是我们所说的over-smoothing问题 三:'over-smoothing'问题的解决:lesson1:? 在增添GNN层的时候要小心添加(不像是其他如CNN网络那样,过多的添加GNN层对节点精确嵌入没有好处): lesson2:我们知道层数小意味着我们神经网络的表达能力会下降,那我们如何能做到让少层数的GNN还能增强GNN的表达能力呢? ? solution2:(常用)我们可以添加不传递消息的图层(比如linear层等),这里意味着,我们不必全是GNN层在神经网络模型的构建中如下图:你可以把它们看作预处理(preprocess)层和后处理(postprocess)层,来增加神经网络的表达能力,这也意味着我们将经典的神经网络也结合了进来。 ? lesson3:如果我需要解决的问题就是需要很多GNN层,那该怎么办呢? ? 那为什么skip connection有用呢? (拿普通的GCN层为例)就可以简单理解为走正常GNN层更新的得到的最终节点的嵌入(如下图黄色部分)会参考之前层更新后的节点嵌入(如下图蓝色部分),使得减轻‘over-smoothing’的问题。 四:参考视频:1:属于视频的7.3部分内容: ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:31:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |