机器之心编辑

参与:思源

图是一种非常神奇的表示方式,生活中绝大多数的现象或情境都能用图来表示,例如人际关系网、道路交通网、信息互联网等等。正如马哲介绍事物具有普遍联系性,而图正好能捕捉这种联系,所以用它来描述这个世界是再好不过的方法。

但图这种结构化数据有个麻烦的地方,我们先要有图才能进行后续的计算。但图的搭建并不简单,目前也没有比较好的自动化方法,所以第一步还是需要挺多功夫的。只要各节点及边都确定了,那么图就是一种非常强大且复杂的工具,模型也能推断出图中的各种隐藏知识。

不同时期的图建模

其实,我们可以将图建模分为图神经网络与传统的图模型。其中以前的图建模主要借助GraphEmbedding为不同的节点学习低维向量表征,这借鉴了NLP中词嵌入的思想。而图神经网络借助深度学习进行更强大的图运算与图表征。

GraphEmbedding算法聚焦在如何对网络节点进行低维向量表示,相似的节点在表征空间中更加接近。相比之下,GNN最大的优势在于它不只可以对一个节点进行语义表示。

例如GNN可以表示子图的语义信息,将网络中一小部分节点构成的语义表示出来,这是以前GraphEmbedding不容易做到的。GNN还可以在整个图网络上进行信息传播、聚合等建模,也就是说它可以把图网络当成一个整体进行建模。此外,GNN对单个节点的表示也可以做得更好,因为它可以更好地建模周围节点丰富信息。

在传统图建模中,随机游走、最短路径等图方法会利用符号知识,但这些方法并没有办法很好地利用每个节点的语义信息。而深度学习技术更擅长处理非结构文本、图像等数据。简言之,我们可以将GNN看做将深度学习技术应用到符号表示的图数据上,或者说是从非结构化数据扩展到了结构化数据。GNN能够充分融合符号表示和低维向量表示,发挥两者优势。

图建模论文与代码

在GitHub的一项开源工作中,开发者收集了图建模相关的论文与实现,并且从经典的GraphEmbedding、GraphKernel到图神经网络都有涉及。它们在图嵌入、图分类、图表征等领域都是非常重要的论文。

项目地址:

该项目主要收集的论文领域如下所示:

1.Factorization

2.SpectralandStatisticalFingerprints

3.GraphNeuralNetwork

4.GraphKernels

因式分解法

LearningGraphRepresentationviaFrequentSubgraphs(SDM2018)

DangNguyen,WeiLuo,TuDinhNguyen,SvethaVenkatesh,DinhPhung

Paper:

Python:

AnonymousWalkEmbeddings(ICML2018)

SergeyIvanovandEvgenyBurnaev

Paper:

Python:

Graph2vec(MLGWorkshop2017)

AnnamalaiNarayanan,MahinthanChandramohan,LihuiChen,YangLiu,andSanthoshkumarSaminathan

Paper:

PythonHighPerformance:

PythonReference:

Subgraph2vec(MLGWorkshop2016)

AnnamalaiNarayanan,MahinthanChandramohan,LihuiChen,YangLiu,andSanthoshkumarSaminathan

Paper:

PythonHighPerformance:

PythonReference:

Rdf2Vec:RDFGraphEmbeddingsforDataMining(ISWC2016)

PetarRistoskiandHeikoPaulheim

Paper:

PythonReference:

DeepGraphKernels(KDD2015)

Paper:

PythonReference:

SpectralandStatisticalFingerprints

ASimpleYetEffectiveBaselineforNon-AttributeGraphClassification(ICLRRLPM2019)

ChenCai,YusuWang

Paper:

PythonReference:

NetLSD(KDD2018)

AntonTsitsulin,DavideMottin,PanagiotisKarras,AlexBronstein,andEmmanuelMüller

Paper:

PythonReference:

ASimpleBaselineAlgorithmforGraphClassification(RelationalRepresentationLearning,NIPS2018)

NathandeLaraandEdouardPineau

Paper:

PythonReference:

Multi-GraphMulti-LabelLearningBasedonEntropy(EntropyNIPS2018)

ZixuanZhuandYuhaiZhao

Paper:

PythonReference:

HuntForTheUnique,Stable,SparseAndFastFeatureLearningOnGraphs(NIPS2017)

SaurabhVermaandZhi-LiZhang

Paper:

PythonReference:

JointStructureFeatureExplorationandRegularizationforMulti-TaskGraphClassification(TKDE2015)

ShiruiPan,JiaWu,XingquanZhuy,ChengqiZhang,

Paper:

JavaReference:

NetSimile:AScalableApproachtoSize-IndepentNetworkSimilarity(arXiv2012)

MicheleBerlingerio,DanaiKoutra,TinaEliassi-Rad,andChristosFaloutsos

Paper:

Python:

图神经网络

Self-AttentionGraphPooling(ICML2019)

JunhyunLee,InyeopLee,JaewooKang

Paper:

PythonReference:

VariationalRecurrentNeuralNetworksforGraphClassification(ICLR2019)

EdouardPineau,NathandeLara

Paper:

PythonReference:

CrystalGraphNeuralNetworksforDataMininginMaterialsScience(Arxiv2019)

TakenoriYamamoto

Paper:

PythonReference:

ExplainabilityTechniquesforGraphConvolutionalNetworks(ICML2019)

FedericoBaldassarre,HosseinAzizpour

Paper:

PythonReference:

Semi-SupervisedGraphClassification:AHierarchicalGraphPerspective(WWW2019)

JiaLi,YuRong,HongCheng,HelenMeng,WenbingHuang,andJunzhouHuang

Paper:

PythonReference:

CapsuleGraphNeuralNetwork(ICLR2019)

ZhangXinyiandLihuiChen

Paper:

PythonReference:

HowPowerfulareGraphNeuralNetworks?(ICLR2019)

KeyuluXu,WeihuaHu,JureLeskovec,StefanieJegelka

Paper:

PythonReference:

WeisfeilerandLemanGoNeural:Higher-orderGraphNeuralNetworks(AAAI2019)

ChristopherMorris,MartinRitzert,MatthiasFey,,JanEricLenssen,GauravRattan,andMartinGrohe

Paper:

PythonReference:

CapsuleNeuralNetworksforGraphClassificationusingExplicitTensorialGraphRepresentations(Arxiv2019)

MarceloDanielGutierrezMallea,PeterMeltzer,andPeterJBentley

Paper:

PythonReference:

Three-DimensionallyEmbeddedGraphConvolutionalNetworkforMoleculeInterpretation(Arxiv2018)

Paper:

PythonReference:

LearningGraph-LevelRepresentationswithRecurrentNeuralNetworks(Arxiv2018)

Paper:

PythonReference:

GraphCapsuleConvolutionalNeuralNetworks(ICML2018)

SaurabhVermaandZhi-LiZhang

Paper:

PythonReference:

GraphClassificationUsingStructuralAttention(KDD2018)

JohnBoazLee,RyanRossi,andXiangnanKong

Paper:

PythonPytorchReference:

GraphConvolutionalPolicyNetworkforGoal-DirectedMolecularGraphGeneration(NIPS2018)

JiaxuanYou,BowenLiu,RexYing,VijayPande,andJureLeskovec

Paper:

PythonReference:

HierarchicalGraphRepresentationLearningwithDifferentiablePooling(NIPS2018)

ZhitaoYing,JiaxuanYou,ChristopherMorris,XiangRen,WillHamiltonandJureLeskovec

Paper:

PythonReference:

ContextualGraphMarkovModel:ADeepandGenerativeApproachtoGraphProcessing(ICML2018)

DavideBacciu,FedericoErrica,andAlessioMicheli

Paper:

PythonReference:

MolGAN:AnImplicitGenerativeModelforSmallMolecularGraphs(ICML2018)

NicolaDeCaoandThomasKipf

Paper:

PythonReference:

DeeplyLearningMolecularStructure-PropertyRelationshipsUsingGraphAttentionNeuralNetwork(2018)

SeongokRyu,JaechangLim,andWooYounKim

Paper:

PythonReference:

Compound-proteinInteractionPredictionwith-to-LearningofNeuralNetworksforGraphsandSequences(Bioinformatics2018)

MasashiTsubaki,KentaroTomii,andJunSese

Paper:

PythonReference:

PythonReference:

PythonAlternative:

LearningGraphDistanceswithMessagePassingNeuralNetworks(ICPR2018)

PauRiba,AndreasFischer,JosepLlados,andAliciaFornes

Paper:

PythonReference:

EdgeAttention-basedMulti-RelationalGraphConvolutionalNetworks(2018)

ChaoShang,QinqingLiu,Ko-ShinChen,JiangwenSun,JinLu,JinfengYiandJinboBi

Paper:

PythonReference:

CommonsenseKnowledgeAwareConversationGenerationwithGraphAttention(IJCAI-ECAI2018)

HaoZhou,TomYang,MinlieHuang,HaizhouZhao,JingfangXuandXiaoyanZhu

Paper:

PythonReference:

ResidualGatedGraphConvNets(ICLR2018)

XavierBressonandThomasLaurent

Paper:

PythonPytorchReference:

An-to-DeepLearningArchitectureforGraphClassification(AAAI2018)

MuhanZhang,ZhichengCui,MarionNeumannandYixinChen

Paper:

PythonTensorflowReference:

PythonPytorchReference:

MATLABReference:

PythonAlternative:

PythonAlternative:

SGR:Self-SupervisedSpectralGraphRepresentationLearning(KDDDLDay2018)

AntonTsitsulin,DavideMottin,PanagiotisKarra,AlexBronsteinandEmmanuealMüller

Paper:

PythonReference:

DeepLearningwithTopologicalSignatures(NIPS2017)

ChristophHofer,RolandKwitt,MarcNiethammer,andAndreasUhl

paper:

PythonReference:

DynamicEdge-ConditionedFiltersinConvolutionalNeuralNetworksonGraphs(CVPR2017)

MartinSimonovskyandNikosKomodakis

paper:

PythonReference:

DerivingNeuralArchitecturesfromSequenceandGraphKernels(ICML2017)

TaoLei,WengongJin,ReginaBarzilay,andTommiJaakkola

Paper:

PythonReference:

ProteinInterfacePredictionusingGraphConvolutionalNetworks(NIPS2017)

AlexFout,JonathonByrd,BasirShariatandAsaBen-Hur

Paper:

PythonReference:

GraphClassificationwith2DConvolutionalNeuralNetworks(2017)

AntoineJ.-,GiannisNikolentzos,PolykarposMeladianosandMichalisVazirgiannis

Paper:

PythonReference:

CayleyNets:GraphConvolutionalNeuralNetworkswithComplexRationalSpectralFilters(IEEETSP2017)

RonLevie,FedericoMonti,XavierBresson,

Paper:

PythonReference:

Semi-supervisedLearningofHierarchicalRepresentationsofMoleculesUsingNeuralMessagePassing(2017)

HaiNguyen,Shin-ichiMaeda,KentaOono

Paper:

PythonReference:

KernelGraphConvolutionalNeuralNetworks(2017)

GiannisNikolentzos,PolykarposMeladianos,AntoineJean-PierreTixier,KonstantinosSkianis,MichalisVazirgiannis

Paper:

PythonReference:

DeepTopologyClassification:ANewApproachForMassiveGraphClassification(IEEEBigData2016)

StephenBonner,JohnBrennan,GeorgiosTheodoropoulos,IbadKureshi,AndrewStephenMcGough

Paper:

PythonReference:

LearningConvolutionalNeuralNetworksforGraphs(ICML2016)

MathiasNiepert,MohamedAhmed,KonstantinKutzkov

Paper:

PythonReference:

GatedGraphSequenceNeuralNetworks(ICLR2016)

YujiaLi,DanielTarlow,MarcBrockschmidt,RichardZemel

Paper:

PythonTensorFlow:

PythonPyTorch:

PythonReference:

ConvolutionalNetworksonGraphsforLearningMolecularFingerprints(NIPS2015)

DavidDuvenaud,DougalMaclaurin,JorgeAguilera-Iparraguirre,RafaelGómez-Bombarelli,TimothyHirzel,AlánAspuru-Guzik,

Paper:

PythonReference:

PythonReference:

PythonReference:

PythonReference:

GraphKernels

MessagePassingGraphKernels(2018)

GiannisNikolentzos,MichalisVazirgiannis

Paper:

PythonReference:

MatchingNodeEmbeddingsforGraphSimilarity(AAAI2017)

GiannisNikolentzos,PolykarposMeladianos,andMichalisVazirgiannis

Paper:

GlobalWeisfeiler-LehmanGraphKernels(2017)

ChristopherMorris,KristianKerstingandPetraMutzel

Paper:

C++Reference:

OnValidOptimalAssignmentKernelsandApplicationstoGraphClassification(2016)

NilsKriege,Pierre-LouisGiscard,RichardWilson

Paper:

JavaReference:

EfficientComparisonofMassiveGraphsThroughTheUseOf‘GraphFingerprints’(MLGWorkshop2016)

StephenBonner,JohnBrennan,

Paper:

pythonReference:

TheMultiscaleLaplacianGraphKernel(NIPS2016)

RisiKondorandHoracePan

Paper:

C++Reference:

FasterKernelsforGraphswithContinuousAttributes(ICDM2016)

ChristopherMorris,,KristianKerstingandPetraMutzel

Paper:

PythonReference:

PropagationKernels:EfficientGraphKernelsFromPropagatedInformation(MachineLearning2016)

Neumann,MarionandGarnett,RomanandBauckhage,ChristianandKersting,Kristian

Paper:

MatlabReference:

HaltingRandomWalkKernels(NIPS2015)

Paper:

C++Reference:

ScalableKernelsforGraphswithContinuousAttributes(NIPS2013)

AasaFeragen,NiklasKasenburg,JensPetersen,MarleeBruijneandKarstenBorgwardt

Paper:

SubgraphMatchingKernelsforAttributedGraphs(ICML2012)

NilsKriegeandPetraMutzel

Paper:

PythonReference:

NestedSubtreeHashKernelsforLarge-ScaleGraphClassificationoverStreams(ICDM2012)

BinLi,XingquanZhu,LianhuaChi,ChengqiZhang

Paper:

PythonReference:

Weisfeiler-LehmanGraphKernels(JMLR2011)

NinoShervashidze,PascalSchweitzer,ErikJanvanLeeuwen,KurtMehlhorn,

Paper:

PythonReference:

PythonReference:

C++Reference:

FastNeighborhoodSubgraphPairwiseDistanceKernel(ICML2010)

FabrizioCostaandKurtDeGrave

Paper:

C++Reference:

PythonReference:

ALinear-timeGraphKernel(ICDM2009)

ShoheiHidoandHisashiKashima

Paper:

PythonReference:

Weisfeiler-LehmanSubtreeKernels(NIPS2009)

NinoShervashidze,PascalSchweitzer,ErikJanvanLeeuwen,KurtMehlhorn,

Paper:

PythonReference:

PythonReference:

C++Reference:

FastComputationofGraphKernels(NIPS2006)

,,

Paper:

PythonReference:

C++Reference:

Shortest-PathKernelsonGraphs(ICDM2005)

Paper:

C++Reference:

CyclicPatternKernelsForPredictiveGraphMining(KDD2004)

TamásHorváth,ThomasGärtner,andStefanWrobel

Paper:;rep=rep1type=pdf

PythonReference:

ExtensionsofMarginalizedGraphKernels(ICML2004)

PierreMahe,NobuhisaUeda,TatsuyaAkutsu,Jean-LucPerret,andJean-PhilippeVert

Paper:

PythonReference:

MarginalizedKernelsBetweenLabeledGraphs(ICML2003)

HisashiKashima,KojiTsuda,andAkihiroInokuchi

Paper:

PythonReference:

不同时期的图建模

其实,我们可以将图建模分为图神经网络与传统的图模型。其中以前的图建模主要借助GraphEmbedding为不同的节点学习低维向量表征,这借鉴了NLP中词嵌入的思想。而图神经网络借助深度学习进行更强大的图运算与图表征。

GraphEmbedding算法聚焦在如何对网络节点进行低维向量表示,相似的节点在表征空间中更加接近。相比之下,GNN最大的优势在于它不只可以对一个节点进行语义表示。

例如GNN可以表示子图的语义信息,将网络中一小部分节点构成的语义表示出来,这是以前GraphEmbedding不容易做到的。GNN还可以在整个图网络上进行信息传播、聚合等建模,也就是说它可以把图网络当成一个整体进行建模。此外,GNN对单个节点的表示也可以做得更好,因为它可以更好地建模周围节点丰富信息。

在传统图建模中,随机游走、最短路径等图方法会利用符号知识,但这些方法并没有办法很好地利用每个节点的语义信息。而深度学习技术更擅长处理非结构文本、图像等数据。简言之,我们可以将GNN看做将深度学习技术应用到符号表示的图数据上,或者说是从非结构化数据扩展到了结构化数据。GNN能够充分融合符号表示和低维向量表示,发挥两者优势。

图建模论文与代码

在的一项开源工作中,开发者收集了图建模相关的论文与实现,并且从经典的GraphEmbedding、GraphKernel到图神经网络都有涉及。它们在图嵌入、图分类、图表征等领域都是非常重要的论文。

项目地址:benedekrozemberczki/awesome-graph-classification

该项目主要收集的论文领域如下所示:

1.Factorization

2.SpectralandStatisticalFingerprints

3.GraphNeuralNetwork

4.GraphKernels

因式分解法

·LearningGraphRepresentationviaFrequentSubgraphs(SDM2018)

·DangNguyen,WeiLuo,TuDinhNguyen,SvethaVenkatesh,DinhPhung

·Paper:

·Python:nphdang/GE-FSG

·AnonymousWalkEmbeddings(ICML2018)

·SergeyIvanovandEvgenyBurnaev

·Paper:

·Python:nd7141/AWE

·Graph2vec(MLGWorkshop2017)

·AnnamalaiNarayanan,MahinthanChandramohan,LihuiChen,YangLiu,andSanthoshkumarSaminathan

·Paper:

·PythonHighPerformance:benedekrozemberczki/graph2vec

·PythonReference:MLDroid/graph2vec_tf

·Subgraph2vec(MLGWorkshop2016)

·AnnamalaiNarayanan,MahinthanChandramohan,LihuiChen,YangLiu,andSanthoshkumarSaminathan

·Paper:

·PythonHighPerformance:MLDroid/subgraph2vec_gensim

·PythonReference:MLDroid/subgraph2vec_tf

·Rdf2Vec:RDFGraphEmbeddingsforDataMining(ISWC2016)

·PetarRistoskiandHeikoPaulheim

·Paper:

·PythonReference:airobert/RDF2VecAtWebScale

·DeepGraphKernels(KDD2015)

·

·Paper:

·PythonReference:pankajk/Deep-Graph-Kernels

SpectralandStatisticalFingerprints

·ASimpleYetEffectiveBaselineforNon-AttributeGraphClassification(ICLRRLPM2019)

·ChenCai,YusuWang

·Paper:

·PythonReference:Chen-Cai-OSU/LDP

·NetLSD(KDD2018)

·AntonTsitsulin,DavideMottin,PanagiotisKarras,AlexBronstein,andEmmanuelMüller

·Paper:

·PythonReference:xgfs/NetLSD

·ASimpleBaselineAlgorithmforGraphClassification(RelationalRepresentationLearning,NIPS2018)

·NathandeLaraandEdouardPineau

·Paper:

·PythonReference:edouardpineau/A-simple-baseline-algorithm-for-graph-classification

·Multi-GraphMulti-LabelLearningBasedonEntropy(EntropyNIPS2018)

·ZixuanZhuandYuhaiZhao

·Paper:https://.com/TonyZZX/MultiGraph_MultiLabel_Learning/blob/master/

·PythonReference:TonyZZX/MultiGraph_MultiLabel_Learning

·HuntForTheUnique,Stable,SparseAndFastFeatureLearningOnGraphs(NIPS2017)

·SaurabhVermaandZhi-LiZhang

·Paper:

·PythonReference:https://.com/vermaMachineLearning/FGSD

·JointStructureFeatureExplorationandRegularizationforMulti-TaskGraphClassification(TKDE2015)

·ShiruiPan,JiaWu,XingquanZhuy,ChengqiZhang,

·Paper:

·JavaReference:https://.com/shiruipan/MTG

·NetSimile:AScalableApproachtoSize-IndepentNetworkSimilarity(arXiv2012)

·MicheleBerlingerio,DanaiKoutra,TinaEliassi-Rad,andChristosFaloutsos

·Paper:

·Python:https://.com/kristyspatel/Netsimile