怎么在网站上添加广告代码公众号小程序商店
2026/1/21 2:49:06 网站建设 项目流程
怎么在网站上添加广告代码,公众号小程序商店,网站建设注意哪些问题,新主题 老版本 wordpress#x1f4d6;目录1. 前言#xff1a;为什么你的模型“看不见关系”#xff1f;2. 什么是图#xff1f;大白话 数学定义2.1 日常类比#xff1a;快递网络 vs 社交圈2.2 数学定义3. 为什么 CNN/RNN 处理不了图#xff1f;4. GNN 的核心思想#xff1a;邻居聚合#xff0…目录1. 前言为什么你的模型“看不见关系”2. 什么是图大白话 数学定义2.1 日常类比快递网络 vs 社交圈2.2 数学定义3. 为什么 CNN/RNN 处理不了图4. GNN 的核心思想邻居聚合大白话版4.1 类比小区业主群投票5. 数学公式消息传递框架MPNN6. 三大经典GNN模型对比6.1 GCNGraph Convolutional Network6.2 GATGraph Attention Network7. 架构图GNN 消息传递流程8. 工程实现PyTorch GeometricPyG实战8.1 数据表示edge_index 格式8.2 用 PyG 实现 GCNCora 分类8.3 自定义 GAT 层展示稀疏注意力9. 工业落地超大图怎么办9.1 邻居采样Neighbor Sampling9.2 批处理Batching技巧10. 经典论文与实用资源10.1 开山之作 必读论文10.2 实用工具11. 结语GNN 不是魔法是关系建模的工程12. 往期精彩博客推荐1. 前言为什么你的模型“看不见关系”作者xiezhiyi007CSDN适用读者AI工程师、算法研究员、准备大厂图算法面试的开发者关键词GNN、图神经网络、消息传递、GCN、GAT、PyTorch Geometric、稀疏计算、图嵌入你有没有遇到过这些场景用户 A 和 B 买了完全相同的商品但你的推荐系统却给两人推了不同的东西欺诈团伙用新注册账号批量下单但风控模型因为“没见过这个ID”而放行知识库中有“北京是中国首都”但问答系统回答“中国的首都是哪里”时却答错。问题出在哪传统深度学习模型CNN/RNN/MLP只能处理“独立同分布”数据却对“关系”视而不见。现实世界不是一张张孤立的图片或句子而是一张巨大的关系网。这就是图神经网络Graph Neural Network, GNN要解决的问题——让 AI 学会“看关系”。2. 什么是图大白话 数学定义2.1 日常类比快递网络 vs 社交圈想象你寄一个快递节点Node 快递站北京站、上海站、广州站边Edge 运输路线北京→上海节点特征 快递站库存、人手、天气边特征 路程、运费、时效再比如微信好友圈你是节点好友是邻居节点你发的朋友圈会被好友看到 →信息在图上传播图 节点 边 特征天然描述“谁和谁有关、怎么相关”。2.2 数学定义3. 为什么 CNN/RNN 处理不了图模型输入结构缺陷CNN网格图像假设像素位置固定图中节点无序RNN序列文本假设顺序依赖图中关系是任意拓扑MLP向量完全忽略节点间连接❌强行把图拉成向量等于把蜘蛛网揉成一团棉花——结构信息全丢4. GNN 的核心思想邻居聚合大白话版GNN 的基本操作就一句话“你的朋友是谁决定了你是谁。”更技术地说每个节点通过聚合邻居的信息不断更新自己的表示embedding。4.1 类比小区业主群投票假设你要决定“是否安装人脸识别门禁”第1轮你只根据自家意见打分初始特征第2轮你看看隔壁老王、楼上小李怎么想取个平均 → 更新你的态度第3轮你不仅看直接邻居还间接听到“老王的朋友说好” → 视野扩大每聚合一次节点就能“看到”更远的关系。1跳聚合 → 看直接邻居2跳聚合 → 看邻居的邻居朋友的朋友K跳聚合 → 感受K阶社区氛围 这就是 GNN 的“多层”本质层数 能看到的最远距离5. 数学公式消息传递框架MPNN2018年Google 提出Message Passing Neural Network (MPNN)统一了几乎所有GNNMessage: m u v ( k ) M ( k ) ( h u ( k − 1 ) , h v ( k − 1 ) , e u v ) Aggregate: m v ( k ) AGGREGATE ( k ) u ∈ N ( v ) ( m u v ( k ) ) Update: h v ( k ) U ( k ) ( h v ( k − 1 ) , m v ( k ) ) \begin{aligned} \text{Message:} \quad \mathbf{m}_{uv}^{(k)} M^{(k)} \left( \mathbf{h}_u^{(k-1)}, \mathbf{h}_v^{(k-1)}, \mathbf{e}_{uv} \right) \\ \text{Aggregate:} \quad \mathbf{m}_v^{(k)} \underset{u \in \mathcal{N}(v)}{\text{AGGREGATE}^{(k)}} \left( \mathbf{m}_{uv}^{(k)} \right) \\ \text{Update:} \quad \mathbf{h}_v^{(k)} U^{(k)} \left( \mathbf{h}_v^{(k-1)}, \mathbf{m}_v^{(k)} \right) \end{aligned}Message:Aggregate:Update:​muv(k)​M(k)(hu(k−1)​,hv(k−1)​,euv​)mv(k)​u∈N(v)AGGREGATE(k)​(muv(k)​)hv(k)​U(k)(hv(k−1)​,mv(k)​)​简化版无边特征h v ( k ) σ ( W ( k ) ⋅ AGGREGATE ( { h u ( k − 1 ) : u ∈ N ( v ) } ) ) \mathbf{h}_v^{(k)} \sigma \left( \mathbf{W}^{(k)} \cdot \text{AGGREGATE} \left( \{ \mathbf{h}_u^{(k-1)} : u \in \mathcal{N}(v) \} \right) \right)hv(k)​σ(W(k)⋅AGGREGATE({hu(k−1)​:u∈N(v)}))✅所有GNN变体只是换了 AGGREGATE 或 UPDATE 函数6. 三大经典GNN模型对比模型聚合方式是否归一化是否可扩展特点GCN均值聚合是度归一化否需全图简洁适合小图GraphSAGE均值/池化/LSTM否是采样工业首选GAT注意力加权否中等可解释性强6.1 GCNGraph Convolutional Network公式H ( k ) σ ( D ~ − 1 / 2 A ~ D ~ − 1 / 2 H ( k − 1 ) W ( k ) ) \mathbf{H}^{(k)} \sigma \left( \tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2} \mathbf{H}^{(k-1)} \mathbf{W}^{(k)} \right)H(k)σ(D~−1/2A~D~−1/2H(k−1)W(k))其中 $ \tilde{A} A I加自环 加自环加自环\tilde{D} $ 是 $ \tilde{A} $ 的度矩阵。⚠️必须用稀疏矩阵计算否则 $ \tilde{A} $ 内存爆炸6.2 GATGraph Attention Network核心为每个邻居分配注意力权重α v u exp ⁡ ( LeakyReLU ( a T [ W h v ∥ W h u ] ) ) ∑ k ∈ N ( v ) exp ⁡ ( LeakyReLU ( a T [ W h v ∥ W h k ] ) ) \alpha_{vu} \frac{\exp \left( \text{LeakyReLU} \left( \mathbf{a}^T [ \mathbf{W} \mathbf{h}_v \| \mathbf{W} \mathbf{h}_u ] \right) \right)}{\sum_{k \in \mathcal{N}(v)} \exp \left( \text{LeakyReLU} \left( \mathbf{a}^T [ \mathbf{W} \mathbf{h}_v \| \mathbf{W} \mathbf{h}_k ] \right) \right)}αvu​∑k∈N(v)​exp(LeakyReLU(aT[Whv​∥Whk​]))exp(LeakyReLU(aT[Whv​∥Whu​]))​然后加权求和h v ′ σ ( ∑ u ∈ N ( v ) α v u W h u ) \mathbf{h}_v \sigma \left( \sum_{u \in \mathcal{N}(v)} \alpha_{vu} \mathbf{W} \mathbf{h}_u \right)hv′​σ​u∈N(v)∑​αvu​Whu​​GAT Transformer 的图版本我在系列博客的《注意力机制》那篇讲的 QKV在这里变成了“节点对相似度”。7. 架构图GNN 消息传递流程Layer kMessage PassingLayer k-1h₁⁽ᵏ⁾ Update(h₁⁽ᵏ⁻¹⁾, M1)h₂⁽ᵏ⁾ Update(h₂⁽ᵏ⁻¹⁾, M2)h₃⁽ᵏ⁾ Update(h₃⁽ᵏ⁻¹⁾, M3)h₄⁽ᵏ⁾ Update(h₄⁽ᵏ⁻¹⁾, M4)Aggregate(h₂, h₃, h₄)Aggregate(h₁, h₃)Aggregate(h₁, h₂)Aggregate(h₁)h₁⁽ᵏ⁻¹⁾h₂⁽ᵏ⁻¹⁾h₃⁽ᵏ⁻¹⁾h₄⁽ᵏ⁻¹⁾ 图中节点1有3个邻居所以聚合3条消息节点4只有1个邻居。8. 工程实现PyTorch GeometricPyG实战8.1 数据表示edge_index格式不用邻接矩阵用COO稀疏格式# 【插入】edge_index 示例importtorchdefdemo_edge_index():# 图结构0-1, 0-2, 1-2, 2-3edge_indextorch.tensor([[0,1,0,2,1,2,2,3],# source nodes[1,0,2,0,2,1,3,2]# target nodes],dtypetorch.long)print(Edge index shape:,edge_index.shape)# [2, 8]print(Number of edges:,edge_index.size(1)//2)# 4 (undirected)if__name____main__:demo_edge_index()✅内存正比于边数不是节点平方8.2 用 PyG 实现 GCNCora 分类# 【插入】GCN on Cora with PyGimporttorchimporttorch.nn.functionalasFfromtorch_geometric.datasetsimportPlanetoidfromtorch_geometric.nnimportGCNConvclassGCN(torch.nn.Module):def__init__(self,in_channels,hidden_channels,out_channels):super().__init__()self.conv1GCNConv(in_channels,hidden_channels)self.conv2GCNConv(hidden_channels,out_channels)defforward(self,x,edge_index):# 第一层聚合邻居 非线性xself.conv1(x,edge_index)xF.relu(x)xF.dropout(x,p0.5,trainingself.training)# 第二层输出 logitsxself.conv2(x,edge_index)returnxdeftrain_gcn():# 加载 Cora 数据集论文引用网络datasetPlanetoid(root/tmp/Cora,nameCora)datadataset[0]modelGCN(dataset.num_node_features,16,dataset.num_classes)optimizertorch.optim.Adam(model.parameters(),lr0.01,weight_decay5e-4)model.train()forepochinrange(200):optimizer.zero_grad()outmodel(data.x,data.edge_index)lossF.cross_entropy(out[data.train_mask],data.y[data.train_mask])loss.backward()optimizer.step()ifepoch%500:print(fEpoch{epoch}, Loss:{loss.item():.4f})# 测试model.eval()predmodel(data.x,data.edge_index).argmax(dim-1)acc(pred[data.test_mask]data.y[data.test_mask]).float().mean()print(fTest Accuracy:{acc:.4f})if__name____main__:train_gcn()典型输出Epoch 0, Loss: 1.9452 Epoch 50, Loss: 0.8721 ... Test Accuracy: 0.8120无需手动处理稀疏矩阵PyG 自动优化8.3 自定义 GAT 层展示稀疏注意力# 【插入】简易 GAT 层单头importtorchfromtorch_geometric.nnimportMessagePassingfromtorch_geometric.utilsimportsoftmaxclassSimpleGAT(MessagePassing):def__init__(self,in_channels,out_channels):super().__init__(aggradd)# 注意GAT 用加权求和非 meanself.Wtorch.nn.Linear(in_channels,out_channels,biasFalse)self.atorch.nn.Parameter(torch.randn(2*out_channels))# 注意力向量defforward(self,x,edge_index):# 线性变换xself.W(x)# 消息传递returnself.propagate(edge_index,xx)defmessage(self,x_i,x_j,edge_index):# x_i: 目标节点特征, x_j: 源节点特征# 拼接 [x_i || x_j]concattorch.cat([x_i,x_j],dim-1)# [E, 2*out]# 计算注意力得分alphatorch.sum(concat*self.a,dim-1)# [E]alphaF.leaky_relu(alpha,negative_slope0.2)# 归一化按目标节点分组 softmaxalphasoftmax(alpha,edge_index[1])# edge_index[1] 是目标节点索引# 加权消息returnalpha.unsqueeze(-1)*x_jdefupdate(self,aggr_out):returnaggr_out# 【主函数留空可自行测试】 此代码展示了如何在稀疏边列表上计算注意力避免构造全图注意力矩阵。9. 工业落地超大图怎么办Cora 只有 2708 个节点但真实场景呢微信社交图10亿 节点电商用户-商品图100亿 边9.1 邻居采样Neighbor SamplingGraphSAGE 提出每层只采样固定数量邻居# 伪代码forlayeringnn_layers:sampled_neighborsrandom_sample(node.neighbors,size10)aggregate(sampled_neighbors)✅ 将计算复杂度从 O(N) 降到 O(常数)9.2 批处理Batching技巧PyG 使用Disjoint Union把多个子图拼成一个大图用batch向量区分归属。# data.batch[i] 0 表示节点 i 属于第0个图# 自动支持多图并行训练10. 经典论文与实用资源10.1 开山之作 必读论文Kipf Welling (2017). Semi-Supervised Classification with Graph Convolutional Networks.GCN 奠基工作简洁优雅必读。Velickovic et al. (2018). Graph Attention Networks.引入注意力机制到图领域影响深远。Hamilton et al. (2017). Inductive Representation Learning on Large Graphs (GraphSAGE).解决 transductive → inductive 问题工业界基石。10.2 实用工具PyTorch Geometric (PyG)最活跃的 GNN 库支持 GPU、稀疏计算、采样DGL (Deep Graph Library)由 AWS 支持分布式训练强Open Graph Benchmark (OGB)标准化 GNN 评测数据集 推荐入门PyG 官方教程 OGB Leaderboard 实践11. 结语GNN 不是魔法是关系建模的工程GNN 的本质不是炫酷的数学而是对现实世界关系结构的尊重。当你面对用户行为背后的社交影响商品之间的搭配逻辑欺诈网络的隐蔽连接别再用“独立样本”假设硬套——画一张图跑一个 GNN让关系自己说话。正如任正非所言“高科技要服务于产业服务于人。”GNN 正是在金融、电商、社交、生物医药等领域把“关系价值”转化为“商业智能”的关键桥梁。12. 往期精彩博客推荐如果你喜欢本文的风格和技术深度欢迎阅读我的其他原创技术文章《手把手带你实现一个完整的 CNN 图像分类项目含特征可视化》《协同过滤、WideDeep、Embedding推荐系统核心技术全解析》《注意力机制热力图可视化从加性注意力到多头 Transformer》 关注我获取更多可落地、有深度、带代码的 AI 工程实践分享✅本文所有内容均基于真实论文与开源库无虚构。代码已在 PyTorch Geometric 2.5 环境验证。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询