首页 > 其他分享 >学习笔记:CL4ST

学习笔记:CL4ST

时间:2024-03-05 20:00:22浏览次数:22  
标签:嵌入 模型 视图 学习 笔记 CL4ST 对比

Spatio-Temporal Meta Contrastive Learning
时空元对比学习
CIKM2023
作者:Jiabin Tang, Lianghao Xia, Jie Hu, Chao Huang
论文地址: https://dl.acm.org/doi/10.1145/3583780.3615065
代码地址: https://github.com/HKUDS/CL4ST

总结

是一篇使用了对比学习的模型,其中”可学习的视图生成“部分对边和点实现了数据增强,其中一些MLPs是通过”元网络“来计算参数的。这里或许体现了一些元学习的思想。但是元学习参数的更新和普通网络参数的更新没有进行区分,感觉也不是正宗的元学习。

从论文所提供的实验结果,结合我其它的复现结果,整体来看,CL4ST准确率与STAEformer和TPGNN相当,略差于PDFormer和TrendGCN,优于其它模型如Graph WaveNet、AGCRN等。准确率还不错。

从速度上看,单看PEMS04(论文只给了这个数据集的超参数设置),CL4ST是最慢的 7h40min,对比起来STAEFormer是1h30min,PDFormer是6h30min,TrendGCN是50min。速度是一个缺点。

复现

显卡A100,数据集 PEMS04,耗时7h40min,共145 epoch(最大200 epoch),MAE: 18.55, RMSE: 30.12, MAPE: 12.2764%, sMAPE: 19.1496%, Corr: 0.0000。此结果与论文给的差不多

模型

图1:CL4ST模型图

模型图如上,步骤如下:

一、点嵌入和边嵌入,元视图生成
通过图增强的常规方法mask(mean), keep, drop,结合GumbleSoftmax重参数化方法与MLP,计算嵌入f_v和f_e,和损失L_gen(KL散度)

二、注意力
对X使用多头图注意力获得空间图 Hs 。空间邻接矩阵 As由高斯核函数或邻居得到。由Hs获得时间图Ht。时间邻接矩阵形状是TxT的,全1
(有点疑惑,时间图怎么是由空间图计算得到的)

三、解码
采用位置嵌入和时间嵌入
将中间变量H、时空嵌入、数据X通过拼合和MLP,得到预测结果。

四、对比学习
应该是经典的方法吧:让同一个样本的增强数据的表征和原始数据的表征尽可能相似,而和不同样本的表征尽可能区分。以此来训练模型的表征能力。

五、优化目标
预测误差(包括原始数据和增强数据)、对比损失、元视图生成损失(包括空间和时间)之和

至于参数更新方法,论文没有说,应该可以看出,这里的元视图也不属于元学习。

表1:CL4ST对比试验结果

标注

这里标注一些我不理解的地方,虽然我也没打算继续钻研下去了:

  1. 这里端到端是什么意思呢?

our goal for learnable view generation is to design an end-to-end differentiable framework that can learn an augmented view on the graph G.
可学习视图生成的目的是设计一个能够学习增强视图的端到端可导框架。

  1. 为什么时间图是全1的呢?

标签:嵌入,模型,视图,学习,笔记,CL4ST,对比
From: https://www.cnblogs.com/white514/p/18054792

相关文章

  • 前端基础学习2 | JavaScript
    1、什么是JavaScript相关链接:https://baike.baidu.com/item/JavaScript/321142JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言,是用来控制网页行为的,它使得网页可交互。关于JavaScript有必要知道的事:1)JavaScript和Java是完全不同的语言,不论是概念还是设计,但是基础......
  • 3/5学习进度
     第一天第二天第三天第四天……所花时间(包括上课) 190min    代码量(行) 75    博客量(篇) 1    了解到的知识点安装matlab,文件操作,安卓数据库操作复习    今天是软件工程上课第一天,建民老师留......
  • 树链剖分笔记
    树链剖分+线段树代码量通常在3K左右,出错的地方非常多,为了好好练手,特建立该题单,建议不要进行复制每一题都老老实实重打题单博客题单Orz1.区间加,区间修改,区间最大值#include<bits/stdc++.h>usingnamespacestd;constintMX=1e5+10;intn,m,r,p;intinput[MX]={0};intsiz[......
  • 学习 Day1 MarkDown语法练习
    学习Day1MarkDown语法练习Day1,了解了MarkDown的基本语法,为日后的学习做准备。标题语法使用'#'号来标出标题的等级,如:一级标题为('#'+空格),二级标题为('##'+空格)例如:二级标题三级标题字体语法使用特定的语法给字体增加样式加粗字体(使用'**'号)倾斜字体(使用'*'号)......
  • JAVA私有构造函数---java笔记
    在Java中,构造函数是一种特殊的方法,它用于初始化新创建的对象。当我们创建一个类的实例时,构造函数会自动被调用。构造函数可以有不同的访问修饰符,如public、protected、default(即包级私有)和private。其中,private构造函数是Java中一种特殊的构造函数。私有构造函数(PrivateConstru......
  • 动手学强化学习(八.1):torch.gather
    tensor.gather()的作用就是按照索引取对应的数据出来。之前看图解PyTorch中的torch.gather函数,那个图示看得我有点懵逼,所以自己画了两张图总结了一下规律来理解一下。首先新建一个3*3的二维矩阵。importtorch​t1=torch.tensor([[1,2,3],[4,5,6],......
  • Vue学习笔记33-生命周期
    示例一: <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>引入生命周期</title>......
  • 动手学强化学习(八.2):double-DQN
    一、代码importrandomimportgymimportnumpyasnpimporttorchimporttorch.nn.functionalasFimportmatplotlib.pyplotaspltimportrl_utilsfromtqdmimporttqdmclassQnet(torch.nn.Module):'''只有一层隐藏层的Q网络'''de......
  • GDB调试入门笔记
    目录What?WhyHow安装GDB安装命令查看是否安装成功调试简单的程序预备一个程序调试使用breakinfolistnextprintstepWhat?GDB是什么?全称GNUsymbolicdebugger百度百科的解释:程序调试工具UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试......
  • 学习笔记:AutoSTG
    AutoSTG:NeuralArchitectureSearchforPredictionsofSpatio-TemporalGraph期刊会议:WWW2021论文地址:https://dl.acm.org/doi/10.1145/3442381.3449816代码地址:https://github.com/panzheyi/AutoSTG总结AutoSTG不仅自学网络权重,还自学网络结构。网络结构的学习采用Dar......