GAT
GAT–Graph Attention Networks 文献地址
GAT 产生背景神经网络在图数据上的应用需求:
随着深度学习技术在图像、语音、自然语言处理等领域的成功应用,研究人员开始尝试将神经网络方法扩展到图结构数据上。图数据广泛存在于社交网络、生物网络、通信网络等实际应用中,处理这些数据需要专门的算法。
现有方法的局限性:
传统的图神经网络(Graph Neural Networks, GNN)和图卷积网络(Graph Convolutional Networks, GCN)在处理图结构数据时遇到了一些挑战,例如:
固定权重分配:GNN 和 GCN 通常使用固定的权重或预定义的方法来处理邻居节点的重要性,难以灵活地处理不同邻居节点的重要性差异。
计算复杂度高:一些基于光谱的方法需要进行复杂的矩阵分解或逆操作,在大规模图数据上计算成本较高。
依赖全局图结构:许多方法需要预先知道整个图的结构,在处理从未见过的新图时存在局限性。
注意力机制的发展:
注意力机制在自然语言处理领域(如机器翻译)取得了显著的成功,它能够动态地为输入序列的不同部分分配不同的权重,显著提升了模型的性能和灵 ...
GCN
SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
基于图卷积网络的半监督分类
文献参考
引言(INTRODUCTION)我们考虑在图(如引文网络)中对节点(如文档)进行分类的问题,其中只有一小部分节点有标签。这一问题可以被框架化为基于图的半监督学习,其中标签信息通过某种形式的显式图正则化(如使用图拉普拉斯正则化项)在图上进行平滑。然而,这种假设可能会限制模型的容量,因为图边不一定编码节点相似性,还可能包含其他信息。
在本工作中,我们使用神经网络模型直接编码图结构,并对所有有标签的节点进行监督目标训练,从而避免在损失函数中显式的图正则化。通过条件化神经网络模型于图的邻接矩阵,我们的模型能够从监督损失中分布梯度信息,并能够学习有标签和无标签节点的表示。
我们的贡献有两方面。
首先,我们介绍了一种简单且行为良好的逐层传播规则,用于直接在图上操作的神经网络模型,并展示了其可以从频谱图卷积的一阶近似中得到动机。
其次,我们展示了这种图神经网络模型可以用于快速且可扩展的图中节点的半监督分类。在多个数据集上的实验表明,我 ...
图综述
A Comprehensive Survey on Graph Neural Networks
文献地址
摘要
传统深度学习任务中的数据通常在欧几里德空间中表示。然而越来越多的数据从非欧几里得域生成,并表示为具有复杂关系和对象之间相互依赖关系的图形。图数据的复杂性给现有的机器学习算法带来了重大挑战。
提出了新的分类方法,将最先进的 GNN 模型分为四类:递归图神经网络(RecGNNs)、卷积图神经网络(ConvGNNs)、图自动编码器(GAEs)和时空图神经网络(STGNNs)。
探讨了 GNN 在各种领域中的应用,如推荐系统、化学分子分析和引文网络分类。
总结了开源代码、基准数据集和模型评估方法。
提出了 GNN 领域的潜在研究方向,如模型深度、可扩展性、异质性和动态性等。
简介深度学习在欧几里得空间成功深度学习在图像分类、视频处理、语音识别和自然语言理解等领域的成功,这些领域的数据通常表示在欧几里得空间中。然而,越来越多的应用中,数据来自非欧几里得领域,并表示为图,这些图数据具有复杂的关系和依赖性。这种复杂性对现有的机器学习算法提出了重大挑战。
图数据的复杂性与欧几里得数据不同,图数据是非结构 ...
代码随想录 day14 || 二叉树 2
226. 翻转二叉树 (优先掌握递归)题目链接思路:交换每个节点的左右子树即可,尝试使用递归法
递归法提示:递归三部曲
1. 确定递归函数的参数和返回值
TreeNode* invertTree (TreeNode* root)
2. 确定终止条件
if (root == NULL) return root;
3. 确定单层递归的逻辑
123swap (root->left,root->right);intvertTree (root->left);invertTree (root->right);
代码如下:
123456789class Solution {public: TreeNode* invertTree (TreeNode* root){ if (root == NULL) return root; swap (root->left,root->right); intvertTree (root->left); invertTree (root->right); return r ...
代码随想录 day13 || 二叉树 1
二叉树的定义 123456struct TreeNode {int val; TreeNode *left; TreeNode *right; TreeNode (int x) : val (x), left (NULL), right (NULL) {}};
二叉树的递归遍历写递归需按照这三要素来写:
确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。
确定终止条件: 写完了递归算法,运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。
确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。
前序遍历:
123456void traversal (TreeNode* cur, vector<int>& vec) { ...
代码随想录 day11 || 栈与队列 2
150. 逆波兰表达式求值题目链接状态:错一次错误原因:stoi 不会使用
1234567891011121314151617181920212223242526272829class Solution {public: int evalRPN (vector<string>& tokens) { stack<int> st; int a, b; for (int i = 0; i < tokens.size (); i++) { if (!st.empty () && (tokens [i] == "+" || tokens [i] == "-" || tokens [i] == "*" || tokens [i] == "/")) { b = st.top (); ...
代码随想录 day10 || 栈与队列 1
介绍栈和队列是 STL(C++ 标准库)里面的两个数据结构。
HP STL 其他版本的 C++ STL,一般是以 HP STL 为蓝本实现出来的,HP STL 是 C++ STL 的第一个实现版本,而且开放源代码。
P.J.Plauger STL 由 P.J.Plauger 参照 HP STL 实现出来的,被 Visual C++ 编译器所采用,不是开源的。
SGI STL 由 Silicon Graphics Computer Systems 公司参照 HP STL 实现,被 Linux 的 C++ 编译器 GCC 所采用,SGI STL 是开源软件,源码可读性甚高。
栈和队列也是 SGI STL 里面的数据结构
stack
push (): 在栈顶添加一个元素。
pop (): 移除栈顶元素。
top (): 返回栈顶元素的引用,但不移除它。
empty (): 检查栈是否为空。
size (): 返回栈中元素的数量。
queue
empty (): 检查队列是否为空。
size (): 返回队列中的元素数量。
front (): 返回队首元素的引用。
back (): 返回队尾元素的引用。
push (): 在队尾添加一个元素。
...
代码随想录 day9 || 字符串 2
151. 翻转字符串里的单词题目链接状态:一遍过思路:使用栈,先进后出,除去空格
12345678910111213141516171819202122232425class Solution {public: string reverseWords (string s) { stack<string> stack; int n=s.size (); for (int i=0;i<n;i++){ string tmp; while (i<n&&s [i]!=' '){ tmp+=s [i++]; } if (tmp!=""){ stack.push (tmp); } } string ans = stac ...
代码随想录 day8 || 字符串 1
344. 反转字符串题目链接状态:一遍过思路:基础题
1234567891011class Solution {public: void reverseString (vector<char>& s) { int n=s.size (); for (int i=0;i<n/2;i++){ char tmp=s [i]; s [i]=s [n-i-1]; s [n-i-1]=tmp; } }};
简洁版本
12345678class Solution {public: void reverseString (vector<char>& s) { for (int i = 0, j = s.size () - 1; i < s.size ()/2; i++, j--) { swap (s [i],s [j]); ...
代码随想录 day7 || 哈希表 2
454. 四数相加 II 题目链接状态:一次过但耗时长思路:和两数加和思路一样
12345678910111213141516class Solution {public: int fourSumCount (vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { unordered_map<int, int> mp; int res = 0; for (int i : nums1) for (int j : nums2) mp [-(i + j)]++; for (int i : nums3) for (int j : nums4) res += mp [i + j];// 如果 m ...
代码随想录 day6 || 哈希表 1
哈希表理论基础目的:快速判断一个元素是否出现集合里常见的三种哈希结构数组、set (集合)、map (映射)(偷懒直接截图了)
242. 有效的字母异位词题目链接状态:两遍过错误原因:为考虑两字符串长度不同可直接返回 false 思路:之前在《904. 水果成篮》中学到的 unordered_map 可直接用
12345678910111213class Solution {public: bool isAnagram (string s, string t) { int m = s.size (), n = t.size (); if (m != n) return false;// 第一次未考虑到 unordered_map<char, int> ans; for (int i = 0; i < m; i++) ans [s [i]]++; for (int j = 0; j < n; j++) if (--ans [t [j]] < 0) ...
公告
欢迎来到我的博客!