数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
二十六、Graph Network [2018]
摘要:人工智能
Artificial intelligence: AI
最近经历了一场复兴,并在视觉、语言、控制、决策等关键领域取得了重大进展。取得这些进展的部分原因是由于廉价的数据、廉价的计算资源,这符合深度学习的天然优势。然而,在不同压力下发展起来的人类智力,其许多决定性特点对于目前的人工智能方法而言仍然是触不可及的。具体而言,超越经验的泛化能力--人类智力从幼年开始发展的标志--仍然是现代人工智能面临的巨大挑战。论文
《Relational inductive biases, deep learning, and graph networks》
认为:组合泛化combinatorial generalization
是AI
实现人类相似能力的首要任务,而结构化表示和计算structured representations and computations
是实现该目标的关键。正如生物学把先天nature
和后天nurture
相结合,论文摒弃手动设计特征hand-engineering
、端到端学习end-to-end learning
之间进行二选一选择的错误做法,而是提倡一种利用它们进行优势互补的做法。论文探索深度学习框架中使用关系归纳偏置
relational inductive biases
如何促进对实体entity
、关系relation
、以及构成它们的规则rule
的了解。论文为AI toolkit
提供了一个新的、具有强大关系归纳偏置的构建块building block
:Graph Network
。Graph Network
概括和扩展了图上运行的各种神经网络方法,并为操作结构化知识manipulating structured knowledge
和产生结构化行为producing structured behaviors
提供了直接接口。论文讨论
Graph Network
如何支持关系推理relational reasoning
、组合泛化combinatorial generalization
。这为更复杂、更可解释、更可扩展的推理模式reasoning pattern
奠定了基础。作为论文的补充,作者还发布了一个用于构建
Graph Network
的开源软件库,并演示了如何在实际工作中应用它们。引言:人类智能的一个重要标志是 “无限使用有限方法” (
infinite use of finite means
) 的能力,其中一小部分的、有限的原始(如单词word
)可以无限地组合(如构成无限多的句子sentence
)。这反映了组合泛化combinatorial generalization
的原理,即从已知的构建块building block
来创建新的推论inference
、预测prediction
、行为behavior
。这里我们探索如何通过将偏置学习biasing learning
用于结构化的表示和计算structured representations and computations
从而提高现代AI
的组合泛化能力,尤其是对图graph
进行操作的系统。人类的组合泛化能力很大程度上取决于我们表达结构
representing structure
和推理关系reasoning about relations
的认知机制。- 我们将复杂系统表示为实体
entity
及其相互作用interaction
的组合。 - 我们使用层次结构来抽象细粒度
fine-grained
的差异,并捕获representations
和behaviors
之间的更一般的共性,比如:同一个物体的一部分、同一个场景的物体、同一个城镇的社区。 - 我们通过组合熟悉的技能
skills
和惯例routines
来解决新的问题。 - 我们通过将两个领域之间的关系结构对齐,并根据其中一个领域的相应知识得出另一个领域的推论来进行类比。
Kenneth Craik
的The Nature of Explanation
将世界的组成结构compositional structure of the world
和我们内在的心理模型internal mental model
的组织方式联系起来,即:世界是组合的compositional
,或者至少我们是从组合的角度来理解它的。当我们学习的时候,我们要么将新知识放入现有的结构化表示structured representations
中、要么调整结构本身从而更好地适应(和使用)新旧知识。自
AI
诞生以来,如何构建具有组合泛化的人工智能系统一直就是AI
的核心问题,它是很多结构化方法structured approach
的核心,包括:逻辑logic
、语法grammar
、经典规划classic planning
、图模型graphical model
、因果推理causal reasoning
、贝叶斯非参数化Bayesian nonparametric
以及概率规划probabilistic programming
。所有子领域都集中于显式的以实体
entity
和关系relation
为中心的学习上,例如关系强化学习relational reinforcement learning
、统计关系学习statistical relational learning
。结构化方法对于之前的机器学习如此重要的一个关键原因,部分是因为数据和计算资源的昂贵,而结构化方法强大的归纳偏置inductive biases
所带来的样本复杂度sample complexity
的改善是非常有价值的。与过去的人工智能方法相比,现代深度学习经常遵循 “端到端”(
end-to-end
) 的设计理念,强调最小限度的先验表征的、计算的假设minimal a priori representational and computational assumptions
,并力求避免使用显式的结构explicit structure
和特征工程hand-engineering
。这种强调emphasis
和当前的大量廉价数据和廉价计算资源非常契合,也得到了充分的验证。这使得牺牲样本效率sample efficiency
从而更灵活地学习成为一种理性的选择。从图像分类到自然语言处理,深度学习在很多具有挑战性的领域中取得了令人瞩目的快速发展,这证明了这种极简主义原则minimalist principle
的成功。一个突出的例子是语言翻译,事实证明sequence-to-sequence
方法非常有效,无需使用显式的解析树parse tree
或者语言实体linguistic entity
之间的复杂关系。尽管深度学习取得了巨大成功,但是也有一些严厉的批评:深度学习在复杂的语言和场景理解
complex language and scene understanding
、结构化数据的推理reasoning about structured data
、训练条件之外的迁移学习transferring learning beyond the training condition
以及少量经验中学习learning from small amounts of experience
时面临重大挑战。这些挑战需要组合泛化,因此摒弃组合性compositionality
以及显式结构explicit structure
的方法难以满足这些挑战,这并不奇怪。当深度学习的前辈连接主义
connectionist
面临诸如结构性的structured
、符号性的symbolic
立场position
等类似批评时,有些工作直接地、细致地做出了建设性的努力来解决这些挑战。在诸如模拟制造analogy-making
、语言分析linguistic analysis
、符号操作symbol manipulation
以及其它形式的关系推理之类的领域中,符号主义开发了用于表示和推理结构化对象的各种创新的亚符号sub-symbolic
方法,以及有关大脑如何工作的更多综合理论integrative theory
。这些工作还有助于培养更多的深度学习进展advances
,这些进展使用分布式向量表示来捕获文本text
、图graph
、代数表达式algebraic expression
、逻辑表达式logical expression
、以及程序programs
中的丰富语义内容。我们认为,现代
AI
的关键途径是致力于将组合泛化作为首要任务,并且我们主张采用综合方法integrative approache
来实现这一目标。正如生物学没有在先天nature
和后天nurture
之间进行选择一样(生物学同时利用先天和后天,这种整体效果强于每个部分之和),我们也拒绝这样的观念(即,结构struture
和灵活性flexibility
在某种程度上是矛盾的或不相容的),并且我们同时拥抱结构和灵活性从而获得它们的互补优势。根据大量最新的一些混合了structure-based
方法、deep learning
方法的案例,我们发现:将当今最好的方法(即deeplearning
方法)和早期算力昂贵时必不可少的方法(即结构化方法)相结合的综合技术具有广阔的前景。近年来,在深度学习和结构化方法的交集中出现了一类模型,这些模型聚焦于推理有关显式结构化数据(特别是图
graph
)的方法。这些方法的共同点是可以对离散实体entity
以及实体之间的关系relation
进行计算。这些方法和经典方法不同之处在于:如何学习实体和关系的representation
以及structure
,以及相应的计算,从而缓解了事先需要指定它们的负担。即,这些知识是通过学习而来,而不是预先指定的。至关重要的是,这些方法以特定的体系架构假设的形式引入强烈的关系归纳偏置relational inductive biases
,这些偏置指导这些方法学习实体和关系。我们和很多其他人一起认为,这是类似人类智力的基本组成部分。在文章的剩余部分,我们通过关系归纳偏置的角度考察了各种深度学习方法,表明现有方法通常带有关系假设
relational assumptions
,这些假设并不总是很明显或者显而易见。然后我们提出了一个基于实体和关系推理的通用框架,我们称之为Graph Network:GN
。GN
统一和扩展了图上运行的现有方法,并描述了使用Graph Network
作为构建块building block
来构建强大架构的关键设计原理。我们还发布了一个用于构建Graph Network
的开源库。- 我们将复杂系统表示为实体
26.1 关系归纳偏置
26.1.1 Relational Reasoning
定义结构
structure
为通过一组已知构建块building block
组成的产品product
。结构化表示Structured representations
捕获了这种组成composition
,如元素element
的排列arrangement
。结构化计算structured computations
以一个整体的方式对所有这些元素及其组合进行操作。关系推理Relational Reasoning
涉及利用实体entity
和关系relation
的组成规则composed rule
,从而操作实体和关系的结构化表示。我们用以下数据来描述认知科学、理论计算机科学、人工智能的相关概念:实体
entity
:具有属性的元素,如具有大小、质量的物理对象。关系
relation
:实体之间的属性。如两个对象之间的关系可能包括:相同大小same size as
、比.. 更重heavier than
、距离distance from
。- 关系也可以具有属性。比如
more than X times heavier than
带有一个属性X
,它决定了这个关系取值为true/false
的阈值。 - 关系也可能对全局上下文敏感。比如对于石头和羽毛,关系
falls with greater accelaration than
取决于环境是在空气中还是真空中。
这里我们关注实体之间的成对关系
pairwise relations
。- 关系也可以具有属性。比如
规则
rule
:将实体和关系映射到其它实体和关系的函数,就像一个非二元的逻辑谓词non-binary logical predicate
。例如is entity X large?
、is entity X heavier than entity y?
这样的尺度比较scale comparison
。这里我们仅考虑带有一个参数或两个参数、并返回一个属性的规则。
我们以图模型
graphical model
来作为机器学习中关系推理的示例性说明。图模型可以通过在随机变量之间指定显式的条件独立性来建模复杂的联合分布。这样的模型非常成功,因为它捕获了稀疏结构
sparse structure
,而稀疏结构是很多现实世界生成过程generative processes
的基础,并且它们支持有效的学习和推理算法。例如,隐马尔可夫模型可以显式指定条件独立性:
- 当前状态仅依赖于前一个状态,与其它历史状态无关。
- 当前观测值仅依赖于当前状态,和其它历史状态、其它观测值无关。
这和很多现实世界因果过程
causal process
的关系结构非常契合。明确表达变量之间的稀疏依赖关系提供了各种高效的推断
inference
和推理reasoning
算法。例如,消息传递算法在图模型内的各个位置之间采用通用的消息传播过程,从而导致一个可组合的composable
、部分并行化的partially parallelizable
推理过程reasoning procedure
,这适用于不同大小和形状的图模型。
26.1.2 Inductive Biases
学习是通过观察世界并与世界互动来理解有用知识的过程,它涉及搜索解空间
space of solutions
以期找到可以更好地解释数据、或获得更高回报的解决方案solution
。但是在很多情况下,有多种解决方案同样出色。归纳偏置inductive bias
允许学习算法独立于观测到的数据,从而将一种解决方案(或者解释)优先于另一种解决方案(或解释)。在贝叶斯模型中,归纳偏置通常以先验分布的选择
choice
、参数化parameterization
来表示。而在其它模型中,归纳偏置可能是为避免过拟合而添加的正则化项,也可能被编码到算法本身的体系结构中。归纳偏置通常以灵活性
flexibility
为代价从而换取改善的样本复杂性sample complexity
,并且可以从偏差-方差平衡bias-variance tradeoff
的角度来理解。理想情况下,归纳偏置既可以在不显著降低性能的情况下改善对于解空间的搜索,又可以帮助找到理想泛化的解决方案。但是,不匹配mismatched
的归纳偏置也会引入过强的约束从而导致欠拟合。归纳偏置可以表达关于数据生成过程
data-generating process
或解空间的假设。例如,当使用一维函数拟合数据时,线性最小二乘法遵循近似函数为线性模型的约束,并且在 $ L_2 $ 惩罚下误差最小。这反映了一个假设:数据生成过程可以简单地解释为被加性高斯噪音additive Gaussian noise
破坏的线性过程line process
。类似地,
$ L_2 $ 正则化倾向于获得参数较小的解,并可以对于病态问题ill-posed problem
可以得到唯一的解决方案和全局结果。这可以解释为关于学习过程的一种假设:当解决方案之间的分歧较少时,寻找好的解决方案更加容易。注意,这些假设不需要明确地解释模型或算法如何与世界交互。
26.1.3 Relational Inductive Biases
机器学习和
AI
中很多具有关系推理能力的方法使用关系归纳偏置relational inductive bias
。虽然不是精确的正式定义,但是我们通常使用该术语来指归纳偏置inductive bias
,它对于学习过程中实体之间的关系和交互施加了约束。近年来新型的机器学习体系架构迅速增加,从业人员经常遵循通过组合基本构建块
elementary building block
来形成更复杂、更深计算的层次hierarchies
和计算图。例如:
- 全连接层
full connected layer
被堆叠到多层感知机multilayer perceptrons: MLPs
中。 - 卷积层
convolutional layers
被堆叠到卷积神经网络convolutional neural networks: CNNs
中。 - 图像处理网络的标准配置是由各种
CNN
变体 +MLP
的组合。
这种
layer
的组合提供了一种特殊类型的关系归纳偏置:层次处理hierarchical processing
的关系归纳偏置。其中计算分阶段in stages
进行,这会导致输入信号中的信息之间产生越来越长距离的交互long range interaction
。正如我们在下面探讨的那样,构建块本身也带有各种关系归纳偏置(如下表所述)。尽管超出了本文的范围,但是在深度学习中也使用各种非关系归纳偏置
non-relational inductive biases
,例如:激活值的非线性non-linearity
、权重衰减、dropout
、batch normalization/layer normalization
、data augmentation
、训练方式、优化算法都对学习的轨迹和结果施加了约束。- 全连接层
要探索各种深度学习方法中表达的关系归纳偏置,我们必须确定几个关键因素:实体是什么、关系是什么、组成实体和关系的规则是什么、计算实体和关系的规则是什么。在深度学习中,实体和关系通常表示为分布式表示
distributed representation
,规则通常表示为神经网络函数逼近器approximator
。然后,实体、关系、规则的精确形式在不同体系架构之间有所不同。为了理解架构之间的这些差异,我们通过以下探索进一步理解每种架构如何支持关系推理:- 规则函数
rule function
的自变量argument
,例如:哪些实体和关系作为输入。 - 规则函数如何在计算图上重用或共享,例如:跨不同实体和关系、跨不同时间或
step
。 - 架构如何定义
representation
之间的交互interaction
与隔离isolation
。例如:通过在相关的实体上应用规则来得出结论,而不是对每个实体独立处理。
- 规则函数
26.1.4 标准 deep learning 构建块
Fully Connected Layers
全连接层:也许最常见的构建块是全连接层。通常全连接层被实现为输入向量的非线性函数:
其中
$ \mathbf W $ 为权重矩阵, $ \mathbf{\vec b}\in \mathbb R^{n} $ 为偏置向量, $ \mathbf{\vec x}_i\in \mathbb R^n $ 为输入向量, $ \sigma(\cdot) $ 为非线性激活函数。因此实体是网络中的单元,关系是
all-to-all
:- 所有输入单元都连接到所有输出单元,规则由权重矩阵和偏置向量指定。
- 规则的自变量是完整的输入信号,没有参数共享,也没有信息隔离。
因此,在全连接层中的隐式关系归纳偏置非常弱
week
:所有输入单元之间可以交互从而决定任何输出单元的值,并且所有输出单元之间相互独立。Convolutional Layers
卷积层:另一个常见的构建块是卷积层。卷积层通常被实现为输入向量或张量的卷积:
其中
$ \mathbf K $ 为卷积核, $ \mathbf X $ 为输入张量, $ * $ 为卷积算子, $ \mathbf B $ 为偏置张量, $ \sigma(\cdot) $ 为非线性激活函数。这里的实体仍然是单个单元(或者网格元素,如像素),但是实体之间的关系更为稀疏。全连接层和卷积层之间的差异在于卷积层增加了一些重要的关系归纳偏置:局部性
locality
和平移不变性translation invariance
。- 局部性反映了关系规则
relational rule
的自变量是那些在输入信号的坐标空间中紧密相邻的实体、并且和远处实体隔离。 - 平移不变性反映了在输入中跨区域重复使用相同的规则。
这些偏置对于处理天然的图像数据非常有效,因为图像数据局部邻域内存在较高的协方差,且随着距离增加,协方差会减小。并且统计量在整个图上大多是平稳的
stationary
。- 局部性反映了关系规则
Recurrent Layers
递归层:第三种常用的构建块是递归层,它是通过一系列step
来实现的。这里我们将每个step
的输入和hidden state
视为实体,将马尔可夫过程视为关系:当前hidden state
依赖于前一个hidden state
和当前input
。实体组合的规则将当前step
的输入、前一个hidden state
作为规则的自变量,然后更新当前hidden state
。这个规则在每个
step
被复用,这反映了时间不变性(类似于CNN
在空间上的平移不变性)的关系归纳偏置。例如,某些物理事件序列的结果不应该取决于一天中的某个时刻。RNN
也通过其马尔可夫结构对序列带来局部性locality
的bias
。下图给出了常见的深度学习构建块中的复用和共享,共享的权重由具有相同颜色的箭头表示。
(a)
:全连接层,其中所有权重都是独立的,并且没有共享。(b)
:卷积层,其中局部核函数在输入中多次重复使用。(c)
:循环层,其中相同的函数可以在不同的step
中复用(水平方向代表了时间线)。
26.1.5 sets 和 graphs 上的计算
虽然标准的深度学习工具包所包含的方法具有各种形式的关系归纳偏置,但是没有默认的深度学习组件可以在任意关系结构上运行。我们需要模型具有显式的实体表示和关系表示,并需要学习算法,该算法用于找到计算实体和关系交互的规则、以及将规则置于数据中的方式。
重要的是,世界上的实体(如对象、
agent
)没有自然顺序。相反,可以通过关系的性质来定义顺序。如:可以根据对象之间的大小、质量、年龄、毒性、价格之间的关系来对它们进行排序。顺序不变性invariance to ordering
(除了处理关系时)是一种理想的属性,这种不变性应该由用于关系推理的深度学习组件来反映。集合
sets
是描述包含一组无序实体的系统的自然表达形式。具体而言,集合的关系归纳偏置并不是来自于something
的存在,而是来自于something
的缺失。为了说明,考虑由
$ n $ 个行星组成的太阳系,我们的任务是预测系统的质心。行星的属性包括质量、位置、速度等。第 $ i $ 个行星的属性记作向量 $ \mathbf{\vec x}_i $ 。对于该任务,行星之间的顺序并不重要,因为系统状态(即质心)只能用聚合的、平均的统计量来描述。但是,如果要使用
MLP
来预测该任务,即使已经知道了特定顺序输入 $ (\mathbf{\vec x}_1,\mathbf{\vec x}_2,\cdots, \mathbf{\vec x}_n) $ 的预测,也不一定能够迁移到不同顺序、相同输入的预测 $ (\mathbf{\vec x}_n,\mathbf{\vec x}_1,\cdots, \mathbf{\vec x}_2) $ 。这是因为这里有 $ n! $ 种可能的排列组合,因此最坏的情况下MLP
可能会认为每种顺序从根本上看是不同的,因此需要指数级的输入/输出训练样本来学习近似函数。处理类似组合爆炸的自然方法是允许预测依赖于输入的对称函数。这可能意味着首先计算
per-object
参数共享的特征 $ \{f(\mathbf{\vec x}_1),\cdots,f(\mathbf{\vec x}_n)\} $ ,然后将它们以对称的方式聚合,如均值聚合。这种方式是Deep Sets
以及相关模型的本质。我们在后文进一步讨论。当然,在很多问题中排列不变性
permutation invariance
并不是底层结构的唯一重要形式。例如,一个集合中的每个对象都可能受到集合中其它对象的pairwise interaction
的影响。在我们的行星case
中,考虑在时间间隔 $ \Delta t $ 之后预测每个行星位置的任务。这种情况下,使用聚合的平均信息是不够的,因为每个行星的运动取决于其它行星所施加的力。取而代之的是,我们可以将每个对象的状态计算为
$ \mathbf{\vec x}_i^\prime = f\left(\mathbf{\vec x}_i, \sum_j g\left(\mathbf{\vec x}_i,\mathbf{\vec x}_j\right)\right) $ ,其中: $ g\left(\mathbf{\vec x}_i,\mathbf{\vec x}_j\right) $ 可以计算第 $ j $ 颗行星作用在第 $ i $ 颗行星上的力。 $ f(\mathbf{\vec x}_i,\cdot ) $ 可以计算出第 $ i $ 颗行星的未来状态,该状态是由力和动力学方程产生的。
我们在各处都使用相同的
$ g(\cdot,\cdot) $ 表明系统的全局排列不变性global permutation invariance
。但是,它也支持不同的关系结构,因为 $ g(\cdot,\cdot) $ 现在采用两个自变量,而不是一个。上述太阳系的例子说明了两种关系结构
relation structure
:一种完全没有关系,一种包含所有的pairwise
关系。很多现实世界的系统(如下图所示)的关系结构在这两种极端case
之间:某些实体pair
对之间存在关系、另一些实体pair
对之间缺乏关系。在我们的太阳系例子中,如果该系统改为由行星及其卫星组成,则可能会试图通过忽略不同行星的卫星之间的相互作用来近似。实际上,这意味着仅计算某些对象之间的交互,即:
其中
$ \delta(i)\sube \{1,2,\cdots,n\} $ 为节点 $ i $ 的邻居集合 。这对应于一个图graph
,因为第 $ i $ 个对象仅与剩余对象的一个子集交互,这个子集由对象 $ i $ 的邻域描述。注意:节点
$ i $ 更新后的状态仍然不依赖于我们描述邻居的顺序。下图为现实世界的不同系统,以及对应的
graph
的表达:(a)
:一个分子图,其中每个原子表示为一个节点,边对应于化学键。(b)
:一个质点弹簧系统,其中绳索由一个质点序列定义,这些质点在图中表示为节点。(c)
:一个n body
系统,其中每个body
为节点,节点之间全连接。(d)
:一个刚体系统,其中球和墙壁都为节点,底层的graph
定义了球之间、球和墙壁之间的相互作用。(e)
:一个句子,其中单词对应于解析树上的叶结点,其它节点和边可以由解析器提供。或者也可以使用一个全连接的图。(f)
:一张图片,可以将其分解为图像块patch
,每个块代表一个节点,并且节点之间全连接。
通常,图
graph
是支持任意pairwise
关系结构的表示形式,并且图上的计算提供了超越卷积层、递归层的强大的关系归纳偏置。
26.2 Graph Network
图神经网络已经在监督学习、半监督学习、无监督学习、强化学习领域被应用。
- 图神经网络被认为在具有丰富的关系结构的任务上很有效,例如视觉场景理解
visual scene understanding
任务、few-shot learning
任务等。 - 图神经网络也被用于物理系统
physical system
和多智体系统multi-agent system
,从而推理知识图谱、预测分子化学性质、预测道路交通流量、分类和分割图像/视频/3D
网格/点云、分类图像中的区域、执行半监督文本分类及机器翻译。 - 图神经网络已经在
model-free
和model-based
连续控制中都被使用,用于model-free
的强化学习,以及更经典的规划问题。 - 图神经网络还探索了很多涉及离散实体和结构推理的传统计算机科学问题,例如组合优化、布尔满足性
satisfiability
、程序表示和验证、元胞自动机及图灵机建模,以及图模型上的inference
。最近的工作还关注于图的生成模型、graph embedding
的无监督学习。
- 图神经网络被认为在具有丰富的关系结构的任务上很有效,例如视觉场景理解
这里介绍我们的图网络框架
Graph Networks:GN
,该框架定义了一族函数用于图结构表示graph-structured representations
的关系推理relational reasoning
。我们的GN
框架概括并扩展了各种图神经网络、MPNN
、以及NLNN
方法,并支持从简单的构建块构建复杂的体系架构。注意,我们避免在
Graph Network
中使用术语neural
来反映GN
可以使用除神经网络以外的函数来实现,尽管这里我们的重点是神经网络的实现。GN
框架中的主要计算单元是GN
块GN block
。GN
块是一个graph-to-graph
的模块,它将图作为输入,对结构进行计算,然后将图作为输出返回。图的节点表示实体,图的边表示关系,图的全局属性表示system-level
属性。GN
框架的block
组织强调可定制性customizability
,以及综合了新的架构,这个新架构能够表达预期的关系归纳偏置。GN
框架的主要设计原则是:灵活的表示形式flexible representations
、可配置的块内结构configurable within-block structure
、可组合的多块体系架构composable multi-block architectures
。
我们引入一个例子来更具体的说明
GN
。可以在任意重力场中预测一组橡胶球的运动,这些橡胶球不会彼此弹跳,而是每个橡胶球都有一个或多个弹簧,这些弹簧将它们和其它橡胶球相连。我们将在下文中参考这个例子,从而启发motivate
图的表示以及图上进行的计算。
26.2.1 图的定义
这里我们使用图来表示带全局属性的、有向的、带属性的多图
multi-graph
。- 带全局属性:每个图具有一个
graph-level
属性 $ \mathbf{\vec u} $ 。 - 有向的:每条边
$ k $ 具有两个节点:sender
节点 $ s_k $ (即起点)、receiver
节点 $ r_k $ (即终点)。 - 带属性的:每个节点
$ i $ 都带有与之关联的节点属性,每条边 $ k $ 都带有与之关联的边属性。 - 属性:节点、边、图的属性可以编码为向量、集合、甚至另一个图。
- 多图
multi-graph
:节点之间可能存在多条边,包括自连接self-edge
。
- 带全局属性:每个图具有一个
在我们的
GN
框架内,图被定义为三元组 $ \mathcal G = \left(\mathbf{\vec u},\mathcal V, \mathcal E\right) $ ,其中: $ \mathbf{\vec u} $ 为全局属性,比如它代表全局的万有引力场。 $ \mathcal V = \{\mathbf{\vec v}_i\}_{i=1}^{N_v} $ 代表节点属性的集合, $ N_v $ 为节点数量, $ \mathbf{\vec v}_i $ 为节点 $ i $ 的属性。例如: $ \mathcal V $ 可能代表橡胶球集合,每个橡胶球都包含位置、速度、质量等属性。 $ \mathcal E = \{(\mathbf{\vec e}_k, r_k,s_k)\}_{k=1}^{N_e} $ 为边的集合, $ N_e $ 为边数量, $ \mathbf{\vec e}_k $ 为边的属性, $ r_k $ 为receiver
节点, $ s_k $ 为sender
节点。例如: $ \mathcal E $ 可能代表不同橡胶球之间的弹簧,边的属性为弹簧系数。
26.2.2 GN block
一个
GN
块包含三个更新函数 $ \phi $ ,以及三个聚合函数 $ \rho $ :其中:
其物理意义为:
$ \phi^{(e)} $ 根据每条边的属性 $ \mathbf{\vec e}_k $ 、全局属性 $ \mathbf{\vec u} $ 、以及sender
节点属性 $ \mathbf{\vec v}_{s_k} $ 、receiver
节点属性 $ \mathbf{\vec v}_{r_k} $ 来更新对应边的属性 $ \mathbf{\vec e}_k^\prime $ 。 $ \phi^{(v)} $ 根据每个节点的属性 $ \mathbf{\vec v}_i $ 、全局属性 $ \mathbf{\vec u} $ 、以及receiver
为当前节点的所有边的属性(更新后的边属性)聚合后的 $ \bar{\mathbf{\vec e}}_i^\prime $ 来更新对应节点的属性 $ \mathbf{\vec v}_i^\prime $ 。 $ \phi^{(u)} $ 根据全局属性 $ \mathbf{\vec u} $ 、所有节点的属性(更新后)聚合后的 $ \bar{\mathbf{\vec v}}^\prime $ 、所有边的属性(更新后)聚合后的 $ \bar{\mathbf{\vec e}}^\prime $ 来更新全局属性 $ \mathbf{\vec u}^\prime $ 。它仅更新一次。- 每个
$ \rho $ 函数使用一个集合作为输入,然后聚合为单个结果代表聚合后的信息。最重要的是: $ \rho $ 函数必须是排列无关的permutation invariant
,并且应该采用可变数量的自变量。一些典型的例子包括:逐元素求和、均值池化、最大值池化等。
GN
块的计算步骤:通过执行
$ \phi^{(e)}\left(\mathbf{\vec e}_k, \mathbf{\vec v}_{r_k}, \mathbf{\vec v}_{s_k},\mathbf{\vec u}\right) $ 得到每条边更新后的属性 $ \mathbf{\vec e}_k^\prime $ 。在我们的弹簧示例中, $ \phi^{(e)} $ 可能对应于两个连接的橡胶球之间弹簧的力或者势能。- 更新后,边的集合为
$ \mathcal E^\prime = \left\{\left(\mathbf{\vec e}_k^\prime, r_k, s_k\right)\right\}_{k=1,\cdots,N_e} $ 。 - 更新后,节点
$ i $ 相关的边的集合为 $ \mathcal E_i^\prime = \left\{\left(\mathbf{\vec e}_k^\prime, r_k, s_k\right)\right\}_{r_k=i,k=1,\cdots,N_e} $ 。这里节点 $ i $ 为receiver
。
- 更新后,边的集合为
执行
$ \bar{\mathbf{\vec e}}_i^\prime = \rho^{(e\rightarrow v)}\left(\mathcal E_i^\prime\right) $ 从而得到每个节点对应边的聚合信息。在我们的弹簧示例中, $ \rho^{(e\rightarrow v)} $ 可能对应于作用在第 $ i $ 个球上所有力或势能的总和。通过执行
$ \mathbf{\vec v}_i^\prime = \phi^{(v)}\left(\bar{\mathbf{\vec e}}_i^\prime, \mathbf{\vec v}_{i},\mathbf{\vec u}\right) $ 得到每个节点更新后的属性。在我们的弹簧示例中, $ \phi^{(v)} $ 可能更新类似于每个球的位置、速度、动能等。更新后,所有节点的属性集合为
$ \mathcal V^\prime = \left\{\mathbf{\vec v}_i^\prime\right\}_{i=1,\cdots,N_v} $ 。通过执行
$ \bar{\mathbf{\vec e}}^\prime = \rho^{(e\rightarrow u)}\left(\mathcal E^\prime \right) $ 对所有边进行聚合得到 $ \bar{\mathbf{\vec e}}^\prime $ 。在我们的弹簧示例中, $ \rho^{(e\rightarrow u)} $ 可能计算力的总和(根据牛顿第三定律,总和应该为零)、弹簧势能的总和。通过执行
$ \bar{\mathbf{\vec v}}^\prime = \rho^{(v\rightarrow u)}\left(\mathcal V^\prime\right) $ 对所有节点进行聚合得到 $ \bar{\mathbf{\vec v}}^\prime $ 。在我们的弹簧示例中 $ \rho^{(v\rightarrow u)} $ 可能计算系统的总动能。通过执行
$ \mathbf{\vec u}^\prime = \phi^{(u)}\left(\bar{\mathbf{\vec e}}^\prime, \bar{\mathbf{\vec v}}^\prime,\mathbf{\vec u}\right) $ 来更新图的全局属性。在我们的弹簧示例中, $ \phi^{(u)} $ 可能会计算出类似于物理系统的总外力或总能量的值。
尽管这里我们给出了计算步骤的顺序,但是并不是严格地根据这个顺序来执行。例如,可以先更新全局属性、再更新节点属性、最后更新边属性。
GN block
更新函数GraphNETWORK()
:输入:图
$ \mathcal G = \left(\mathbf{\vec u},\mathcal V, \mathcal E\right) $ ,其中 $ \mathcal V $ 为节点属性集合、 $ \mathcal E $ 为边集合、 $ \mathbf{\vec u} $ 为全局属性输出:更新后的图
$ \mathcal G^\prime = \left(\mathbf{\vec u}^\prime,\mathcal V^\prime, \mathcal E^\prime\right) $计算步骤:
迭代更新边的属性:
$ k\in \{1,\cdots,N_e\} $ ,执行 $ \mathbf{\vec e}_k^\prime = \phi^{(e)}\left(\mathbf{\vec e}_k, \mathbf{\vec v}_{r_k}, \mathbf{\vec v}_{s_k},\mathbf{\vec u}\right) $ 。迭代更新节点的属性:
$ i\in \{1,\cdots,N_v\} $ ,执行:- 令
$ \mathcal E_i^\prime = \left\{\left(\mathbf{\vec e}_k^\prime, r_k, s_k\right)\right\}_{r_k=i,k=1,\cdots,N_e} $ 表示所有receiver
为当前节点 $ i $ 的边的集合。 - 聚合
$ \mathcal E_i^\prime $ 中所有边的信息 $ \bar{\mathbf{\vec e}}_i^\prime = \rho^{(e\rightarrow v)}\left(\mathcal E_i^\prime\right) $ 。 - 更新节点属性
$ \mathbf{\vec v}_i^\prime = \phi^{(v)}\left(\bar{\mathbf{\vec e}}_i^\prime, \mathbf{\vec v}_{i},\mathbf{\vec u}\right) $ 。
- 令
令
$ \mathcal V^\prime = \left\{\mathbf{\vec v}_i^\prime\right\}_{i=1,\cdots,N_v} $ 为所有节点更新后的属性,聚合所有节点属性为 $ \bar{\mathbf{\vec v}}^\prime = \rho^{(v\rightarrow u)}\left(\mathcal V^\prime\right) $ 。令
$ \mathcal E^\prime = \left\{\left(\mathbf{\vec e}_k^\prime, r_k, s_k\right)\right\}_{k=1,\cdots,N_e} $ 为所有边更新后的属性,聚合所有边属性为 $ \bar{\mathbf{\vec e}}^\prime = \rho^{(e\rightarrow u)}\left(\mathcal E^\prime \right) $ 。根据全局属性、聚合后的节点属性、聚合后的边属性来更新全局属性
$ \mathbf{\vec u}^\prime = \phi^{(u)}\left(\bar{\mathbf{\vec e}}^\prime, \bar{\mathbf{\vec v}}^\prime,\mathbf{\vec u}\right) $ 。返回更新后的图
$ \mathcal G^\prime = \left(\mathbf{\vec u}^\prime,\mathcal V^\prime, \mathcal E^\prime\right) $ 。
给定一个图
$ \mathcal G = \left(\mathbf{\vec u},\mathcal V, \mathcal E\right) $ 作为GN
块的输入时,计算过程从边、节点、global-level
。下图给出了这些计算中,每一个计算都涉及哪些图元素。蓝色表示待更新的元素,黑色表示更新中涉及的其它元素(注意,蓝色元素更新之前的值也用于它的本次更新)。下图给出了具有更新函数、聚合函数的完整
GN
块。它根据输入的节点属性、边属性、全局属性来预测输出的节点属性、边属性、全局属性。
26.2.3 关系归纳偏置
当用于
learning process
的组成部分时,我们的GN
框架会强制添加几个很强的关系归纳偏置:首先,图可以表达实体之间的任意关系。这意味着
GN
的输入决定了representation
是如何交互interact
和隔离isolated
的,而不是由固定fixed
的体系架构来决定的。即实体的交互和隔离是由数据决定,而不是由模型决定。
例如:
- 如果两个实体对应的节点之间存在边,则认为这两个实体之间有关联,即有交互。
- 如果两个实体对应的节点之间不存在边,则认为这两个实体之间没有关联,即隔离的。
其次,图将实体及其关系表示为集合,这是排列不变的
permutation invariant
。这意味着GN
对于这些元素的顺序是不敏感的,这通常是我们所需要的。最后,
GN
的per-edge
函数、per-node
函数分别在所有边、所有节点之间重用。这意味着GN
自动支持某种形式的组合泛化:由于图由边、节点、以及全局属性组成,因此单个GN
可以在不同大小(以边和节点数量刻画)、不同形状(不同的连通性)的图上进行操作。
26.3 GN 设计原则
根据前述列出的设计原则,
GN
框架可用于实现各种各样的体系架构。通常,GN
框架和特定的属性表示attribute representation
和函数形式functional form
无关。但是这里我们重点关注深度学习架构,该架构允许GN
充当可学习的graph-to-graph
的函数逼近器function approximator
。这里再回顾一下
GN
设计原则:灵活的表示flexible representations
、可配置的块内结构con gurable within-block structure
、可组合的多块体系架构composable multi-block architectures
。这三个设计原则再我们的
GN
框架中结合在一起,非常灵活,适用于从感知、语言、到符号推理的广泛领域。并且,如前所述,GN
具有的强大的关系归纳偏置支持组合泛化,因此使得GN
在实际和理论上都成为强大的工具。
26.3.1 Flexible Representations
灵活的表示有两层含义:
- 属性形式:
GN
块的全局属性、节点属性、边属性可以为任意表示形式arbitrary representational formats
。 - 图结构形式:输入数据可以包含关系结构,或者不包含关系结构,即输入数据的图结构形式可以任意。
- 属性形式:
属性形式:
GN
块的全局属性、节点属性、边属性可以使用任意表示形式。在深度学习实现中,通常使用实值向量或张量。但是,也可以使用其它数据结构,如序列sequence
、集合set
、甚至是图graph
。通常我们需要决定:对某个问题采用何种表示形式来描述属性。例如:
- 当输入数据是图像时,节点属性可以为图像
patches
的张量。 - 当输入数据为文档时,节点属性可以为句子对应的单词序列。
- 当输入数据是图像时,节点属性可以为图像
对于更广泛的体系架构中的每个
GN
块,每个边/节点的输出通常对应于一个张量/向量,而全局输出对应于单个张量/向量。这使得GN
块的输出可以传递到其它深度学习构建块building block
中,如MLP,CNN,RNN
。GN
块的输出也可以根据任务需求进行定制化。具体而言:edge-focused GN
可以仅仅将边作为输出。例如,做出有关实体之间相互作用的决策。node-focused GN
可以仅仅将节点作为输出。例如,用于推理物理系统。graph-focused GN
可以仅仅将全局属性作为输出。例如,预测物理系统的势能、分子性质、关于某个视觉场景问题的答案。
节点属性、边属性、全局属性的输出也可以根据任务混合使用。
图结构形式:在定义如何将输入数据表示为图结构时,有两种情形:
首先,输入数据明确指定了关系结构。例如:知识图谱、社交网络、化学分子图、交通网络、以及具有已知交互作用的物理系统。
其次,需要从输入数据中推断或假设关系结构,即关系结构没有明确指定。例如视觉场景、文本文档等。
这里可以将数据表示为一组没有关系的实体,甚至仅表示为向量或张量(如:图像)。
如果未明确指定实体,则可以通过将诸如句子中的每个单词、或者
CNN
输出feature map
中的feature vector
视为节点来指定实体。或者,也可以使用单独的学习机制从非结构化信号中推断实体,如通过解析树算法从文本中得到解析树。
如果关系不可用,则最简单的方法是在实体之间添加所有可能的有向边。如在图像的
patches
之间两两添加有向边。但是,这对于拥有大量实体的图而言是不可行的,因为边的数量会随着节点数量的增加而平方规模的增加。因此,研发更复杂的方法来从非结构化数据中推断稀疏的图结构是未来的重要方向。
26.3.2 Configurable Within-block Structure
GN
块中的结构和函数可以通过不同的方式进行配置,从而可以灵活地确定哪些信息可以用作函数的输入,以及如何更新边属性、节点属性、全局属性。具体而言,GN
块中的每个 $ \phi $ 函数必须实现为某种函数 $ f $ ,其中 $ f $ 的自变量签名argument signature
决定了它需要哪些信息作为输入。通过选择不同的函数
$ f $ 和块内配置,GN
框架可以表达其它各种架构,如下图所示。接下来讨论如何使用不同的方式配置GN
的块内结构。下图中,每个
$ \phi $ 的incoming
箭头表示是否将 $ \mathbf{\vec u}, \mathcal V, \mathcal E $ 用作输入。(a)
:full GN
(即完整的、原始的GN
块)根据传入的节点属性、边属性、全局属性来输出节点属性、边属性、全局属性。(b)
:独立的循环块使用input
和hidden state
来进行更新,其中 $ \phi $ 函数为RNN
。(c)
:MPNN
根据传入的节点属性、边属性来输出节点属性、边属性、全局属性。注意,全局预测中不包含聚合的边,输入中不包含全局属性。(d)
:NLNN
仅输出节点属性。(e)
:Relation Network
仅使用预测的边属性来输出全局属性。(f)
:Deep Set
没有采用边更新从而输出全局属性。
Full GN block
:《Relational inductive bias for physical construction in humans and machines》
和《Graph networks as learnable physics engines for inference and control》
使用完整的GN
块,如上图的(a)
所示。- 他们使用神经网络来实现
$ \phi $ 函数,用 $ \text{NN}_e, \text{NN}_v, \text{NN}_u $ 分别表示 $ \phi^{(e)},\phi^{(v)},\phi^{(u)} $ ,其中不同的下标表示这些函数是具有不同参数的不同函数。 - 他们的
$ \rho $ 函数采用逐元素求和来实现,但是也可以采用均值池化或最大/最小池化。
更新方程为:
其中:
$ [\cdot,\cdot,\cdot] $ 表示向量拼接。- 对于向量属性,通常采用
MLP
作为 $ \phi $ 函数;对于张量属性(如图像的feature map
),通常采用CNN
作为 $ \phi $ 函数。
- 他们使用神经网络来实现
$ \phi $ 函数也可以使用RNN
,这需要额外的hidden state
作为输入和输出。上图(b)
展示了一个非常简单的GN
块,其中RNN
作为 $ \phi $ 函数。公式中没有消息传递,并且这种类型的block
可用于对某些dynamic graph state
进行递归平滑recurrent smoothing
。当然,
RNN
作为 $ \phi $ 函数也可以在full GN block
中使用。Message-passing neural network: MPNN
概括了很多之前的体系架构,并且可以很自然地转换为GN
的格式:- 消息函数
$ M_t(\cdot) $ 扮演GN
中的 $ \phi^{(e)} $ 的角色,但是没有使用 $ \mathbf{\vec u} $ 作为输入。 GN
的 $ \rho^{(e\rightarrow v)} $ 采用逐元素累加。- 更新函数
$ U_t(\cdot) $ 扮演GN
中的 $ \phi^{(v)} $ 的角色。 readout
函数 $ R(\cdot) $ 扮演GN
中的 $ \phi^{(u)} $ 的角色,但是没有使用 $ \mathbf{\vec u} $ 和 $ \mathcal E^\prime $ 作为输入,因此不需要GN
的 $ \rho^{(e\rightarrow u)} $ 函数。 $ d_{\text{master}} $ 的作用和GN
中的 $ \mathbf{\vec u} $ 大致相似,但是被定义为与所有其它节点相连的附加节点,因此不会直接影响边属性和全局属性更新。并且它被包含在GN
的 $ \mathcal V $ 中。
上图
(c)
展示了如何根据GN
块来构建MPNN
。- 消息函数
Non-local Neural Networks:NLNN
统一了各种intra/self/vertex/graph attention
方法,它也可以转换为GN
的格式。attention
指的是节点的更新方式:每个节点更新均基于其邻域节点属性(或者它的某些函数)的加权和,其中一个节点和它某个邻居之间的权重由属性之间的scale pairwise
函数(然后整个邻域归一化)给出。已发表的
NLNN
公式并未显式包含边,而是计算所有节点之间的pairwise
注意力权重。但是,各种NLNN-compliant
模型,例如节点注意力交互网络vertex attention interaction network
、图注意力网络graph attention network
都可以通过有效地将没有边的节点之间的权重设为零来显式处理边。在
NLNN
中, $ \phi^{(e)} $ 被乘以一个标量的pairwise-interaction
函数,该函数返回:- 未归一化的
attention
系数,记作 $ \alpha^{(e)} \left(\mathbf{\vec v}_{r_k},\mathbf{\vec v}_{s_k}\right) = a_k^\prime $ 。 - 一个
non-pairwise
的向量值,记作 $ \beta^{(e)}(\mathbf{\vec v}_{s_k}) = \mathbf{\vec b}_k^\prime $ 。
在
$ \rho^{(e\rightarrow v)} $ 聚合中, $ a_k^\prime $ 在receiver
的所有边上归一化,然后 $ \mathbf{\vec b}_k^\prime $ 进行逐元素相加:在
NLNN
论文中, $ f(\cdot) $ 函数扮演上述 $ \alpha $ 的角色, $ g(\cdot) $ 函数扮演上述 $ \beta $ 的角色。 这个公式可能有助于仅关注于下游任务最相关的那些交互,尤其是当输入实体是一个集合set
(而不是图graph
)、并且这个图是根据集合中所有实体之间添加所有可能的边来构建的。Transformer
体系架构中的single-headed self-attention
,即SA
, 实现为公式为:其中
$ \text{NN}_{\alpha,query}, \text{NN}_{\alpha,key},\text{NN}_{\beta} $ 都是神经网络函数,使用不同的参数、甚至不同的架构。《Attention is all you need》
的multi-head self-attention
机制增加了一个有趣的特性: $ \phi^{(e)} $ 和 $ \rho^{(e\rightarrow v)} $ 通过一组并行的函数来实现,它们的结果拼接在一起作为最终的 $ \rho^{(e\rightarrow v)} $ 。这可以解释为使用不同类型的边,其中不同类似索引到不同的 $ \phi^{(e)} $ 分量函数,类似于Gated Graph Sequence Neural Networks
。具体而言,
multi-head self-attention
计算 $ H $ 个并行的 $ \left\{\bar{\mathbf{\vec e}}_{i,h}^\prime\right\}_{h=1,\cdots,H} $ :Vertex Attention Interaction Networks
和SA
很相似,但是它将欧几里得距离用于attention
相似性度量,并在attention
输入的embedding
中共享参数,且在节点更新函数中使用节点的输入特征:Graph Attention Networks
和multi-head self-attention
相似,但是它使用神经网络作为attention
相似性度量,并在attention
输入的embedding
中共享参数:《Self-attention with relative position representations》
提出相对位置编码relative position encodings
来扩展multi-head self-attention
。relative
是指对序列中节点之间的空间距离进行编码、或度量空间中其它信号进行编码。这可以在GN
中表示为边的属性 $ \mathbf{\vec e}_k $ ,并将multi-head self-attention
中的 $ \beta^{(e)}\left(\mathbf{\vec v}_{s_k}\right) $ 替换为:
下图展示了如何在
GN
框架下通过 $ \phi^{(e)} $ 和 $ \rho^{(e\rightarrow v)} $ 来实现NLNN
。 通常NLNN
假设图像(或句子中的单词)对应于全连接图中的节点,并假设注意力机制在聚合步骤中定义节点上的加权和。- 未归一化的
完整的
GN block
公式可以预测完整的图 $ \mathcal G^\prime= (\mathbf{\vec u}^\prime,\mathcal V^\prime, \mathcal E^\prime) $ ,或者它的一部分。例如,为了预测图的全局属性, $ \mathcal V^\prime,\mathcal E^\prime $ 可以被忽略。类似地,如果在输入中未给出全局属性、节点属性或边属性,则对应的部分可以忽略,即不作为 $ \phi $ 函数的输入。同样的思路可以适用于其它
GN
变体,这些变体不使用完整的mapping
$ \phi $ 函数、或不使用完整的reduction
$ \rho $ 函数。Interaction Networks
和Neural Physics Engine
使用full GN
,但是没有使用全局属性来更新边属性。该工作还包括对上述公式的扩展:输出全局的、而不是
per-node
的预测:这里没有使用全局属性来更新边属性,也没有用边属性来更新全局属性。
Relation Networks
完全绕开了节点更新,并直接从池化的边信息中预测全局属性输出:Deep Sets
完全绕开了边更新,并直接根据池化的节点信息中预测全局属性输出:PointNet
使用类似的更新规则,但是对于 $ \rho^{v\rightarrow u} $ 使用最大池化,以及对于节点更新使用两阶段。Gated Graph Sequence Neural Networks: GGS-NN
使用稍微泛化的公式,其中每条边关联一个类别 $ t_k\in \{1,\cdots,T\} $ ,更新公式为:这里
$ \text{NN}_v $ 为一个GRU
, $ \text{NN}_{e,t_k} $ 为待特定参数的神经网络。上述更新递归进行,然后接一个全局解码器,该解码器计算所有节点的最终
embedding
的加权和。CommNet
的更新公式为:structure2vec
也可以适配我们的算法,只需要进行少量的修改:其中
$ s_l=r_k,r_l\ne s_k $ 表示以第 $ k $ 条边的终点为起点的所有边,并剔除以第 $ k $ 条边的终点为起点的边。边的属性现在在
receiver
和sender
之间具有message
的含义。注意,对于边和节点更新,现在只有一组参数需要学习。
注意:对于
CommNet、structure2vec、Graph Sequence Neural Networks
使用一种非对称的 $ \phi^{(e)} $ ,它并未计算pairwise interaction
,而是忽略receiver node
而仅考虑sender
节点,并且某种程度上是在边属性上进行。这种做法可以通过具有以下签名signature
的 $ \phi^{(e)} $ 函数上实现:.
26.3.3 Composable Multi-block Architectures
GN
的主要设计原理是通过组合GN block
来构建复杂的体系架构。我们将GN block
定义为包含边属性、节点属性、全局属性的图作为输入,并返回新的边属性、节点属性、全局属性的图作为输出。如果某些元素不需要更新,则只需要直接对应的输入传递到输出即可。这种
graph-to-graph
的input/output
接口可以确保GN block
的输出可以传递给另一个GN block
作为输入。这两个GN block
内部可以使用完全不同的配置,这类似于深度学习toolkit
的tensor-to-tensor
接口。这种接口最基本的形式是:给定两个
GN block
GN1
和GN2
,可以通过将GN1
的输出作为GN2
的输入,从而将它们组合在一起:可以组合任意数量的
GN block
,如下图所示。图中 $ \text{GN}_{\text{core}} $ 周围的白色表示M
个重复的内部处理子步骤repeated internal processing sub-steps
,可能包含共享或者不共享的GN block
。- 这些
block
可以不共享(采用不同的函数或参数,类似于CNN
的不同的layer
),即 $ \text{GN}_1\ne \text{GN}_2\ne\cdots\ne \text{GN}_M $ 。 - 这些
block
也可以共享(采用相同的函数或参数,类似于展开的RNN
),即 $ \text{GN}_1=\text{GN}_2=\cdots=\text{GN}_M $ 。
- 这些
配置共享(采用相同的函数或参数)类似于消息传递,其中反复应用相同的局部更新过程从而在整个结构中传播消息,如下图所示。如果不考虑全局属性
$ \mathbf{\vec u} $ (它聚合了来自所有节点和所有边之间的信息),则节点在经过 $ m $ 个传播step
之后,可访问的信息由最多m-hop
的节点和边的集合确定。这可以解释为将复杂的计算分解为较小的基础步
elementary step
。这些step
也可以用于捕获时间上的顺序。在我们的橡胶球示例中,如果每个
step
预测持续时间为 $ \Delta_t $ 的一个时间步长上的动力学,则 $ M $ 个step
的总的模拟时间为 $ M\Delta_t $ 。下图中,每一行突出显式了从特定节点开始、然后扩展到整个图的信息。
- 第一行中,初始节点在右上方;第二行中,初始节点在右下方。
- 阴影节点表示距初始节点经过
$ m $ 个step
能够传播的范围。 - 粗边表示消息传播的边。
注意:在完整的消息传递过程中,这种消息传播同时发生在图中所有节点和所有边上,而不仅仅是这里的两个初始节点。
可以通过
GN block
构建两种常见的体系架构:一种体系架构我们称之为
encode-process-decode
配置,如下图(b)
所示。其中:- 一个输入图
$ \mathcal G_{\text{inp}} $ 由编码器 $ \text{GN}_{\text{enc}} $ 转换为潜在表示 $ \mathcal G_0 $ 。 - 一个共享的
core block
$ \text{GN}_{\text{core}} $ 被应用 $ M $ 次,并返回 $ \mathcal G_M $ 。 - 通过解码器
$ \text{GN}_{\text{dec}} $ 进行解码,得到最终输出图 $ \mathcal G_{\text{out}} $ 。
例如在我们的橡胶球例子种,编码器可能会计算球之间的初始力和相互作用势能,
core
可能会应用基本动力学更新,解码器可能从更新后的图状态读取最终位置。- 一个输入图
类似
encode-process-decode
设计,另一种体系架构我们称之为recurrent GN-based
配置,如下图(c)
所示。其中在step
$ t $ :每个
step
维护一个hidden graph
$ \mathcal G_{\text{hid}}^{(t)} $ 。一个输入图
$ \mathcal G_{\text{inp}}^{(t)} $ 由编码器 $ \text{GN}_{\text{enc}} $ 转换为潜在表示 $ \mathcal G_0^{(t)} $ 。其中
$ \text{GN}_{\text{enc}} $ 输出的编码图必须具有和 $ \mathcal G_{\text{hid}}^{(t)} $ 相同的结构,并且可以通过拼接它们相应的 $ (\mathbf{\vec e}_k,\mathbf{\vec v}_i,\mathbf{\vec u}) $ 向量从而轻松地组合它们(图(c)
的箭头合并),然后传递给 $ \text{GN}_{\text{core}} $ .一个共享的
core block
$ \text{GN}_{\text{core}} $ 随着时间展开unrolled
(一共展开 $ M $ 次,即 $ 1\le t\le M $ ),并返回 $ \mathcal G^{(t)} $ 。其输入为 $ \mathcal G_0^{(t)} $ 和 $ \mathcal G_{\text{hid}}^{(t)} $ 。这里 $ \text{GN}_{\text{core}} $ 可能为GRU
或者LSTM
。 $ \text{GN}_{\text{core}} $ 的输出 $ \mathcal G_{\text{hid}}^{(t+1)} $ 被复制(图(c)
的箭头拆分),其中一路输出由 $ \text{GN}_{\text{dec}} $ 进行解码。通过解码器
$ \text{GN}_{\text{dec}} $ 进行解码,得到最终输出图 $ \mathcal G_{\text{out}}^{(t)} $ 。
这种设计以两种方式重用
GN block
: $ \text{GN}_{\text{enc}} $ 、 $ \text{GN}_{\text{dec}} $ 、 $ \text{GN}_{\text{core}} $ 跨每个step
$ t $ 进行共享。- 在每个
step
内, $ \text{GN}_{\text{core}} $ 在多个sub-step
内共享。
这种类型的体系架构常用于预测
graph
序列,例如预测一段时间内动力系统的轨迹。
其它一些技术对于设计
GN
体系架构可能也有用。例如:Graph Skip Connection
可以将GN block
的输入 $ \mathcal G_m $ 和它的输出 $ \mathcal G_{m+1} $ 拼接在一起,然后再进行下一步的计算。Recurrent GN
架构中合并输入图和hidden
图的信息可以使用LSTM
或GRU
风格的gating scheme
,而不是简单地拼接。或者在其它
GN block
之前和/或之间组合不同的递归GN
块,从而提高多个传播step
中representation
的稳定性。
26.3.4 实现
类似于可天然并行的
CNN
(在GPU
上),GN
具有天然并行结构:- 由于
$ \phi^{(e)} $ 和 $ \phi^{(v)} $ 分别在边和节点上共享,因此它们可以并行计算。 - 通过将多个图视为较大图的非连通分量
disjoint component
,可以自然地将几张图打包一起。因此可以将几个独立图上进行的计算打包在一起。
- 由于
重用
$ \phi^{(e)} $ 和 $ \phi^{(v)} $ 函数还可以提高GN
的样本效率。类似于卷积核,GN
中用于优化 $ \phi^{(e)} $ 函数的样本数为训练图中边的数量、用于优化 $ \phi^{(v)} $ 函数的样本数为训练图中节点的数量。我们已经发布了用于构建
GN
的开源软件库,在github.com/deepmind/graph_nets
。我们也给出了一些demo
包括:在最短路径搜索任务、排序任务、物理系统预测等任务上,如何创建、操作、训练GN
来推理图结构数据。每个demo
使用相同的GN
体系架构,这凸显了该方法的灵活性。
26.4 讨论
GN
的结构天然支持组合泛化,因为它们并不严格地在系统级别执行计算,而且还跨实体、跨关系执行共享计算。这样可以推理未曾见过的系统,因为它们都是由熟悉的组件构成的,从而体现了infinite use of finite means
的方式。GN
和MPNN
的消息传递学习方式的局限性之一是无法解决某些类型的问题,如区分某些非同构图non-isomorphic graph
。更一般而言,尽管图是表示结构信息的有效方式,但是它们也有局限性。诸如递归、控制流、条件迭代之类的概念并不容易用图来表示。就这些概念而言,
program
和更多的computer-like
处理过程可以提供更好的表示性。关于使用
Graph Network
还存在很多悬而未决的问题:一个紧迫的问题是:运行
GN
的图如何构建?深度学习的标志之一是它能够对原始的感官数据
sensory data
(如图像、文本)执行复杂的计算,但是尚不清楚如何将感官数据转换为更结构化的表示形式(如graph
)。一种方法(我们已经讨论过)假设空间或语言实体之间是全连接的图结构,例如在
self-attention
的文献采用这种方法。但是,这样的representation
可能不完全对应于真实的实体,如卷积feature map
并不直接对应于真实场景中的对象。此外,很多底层图结构比全连接的图稀疏的多,如何引入这种稀疏性也是一个悬而未决的问题。
有一些研究正在探索这些问题,但是目前为止并没有一种方法能够可靠地从感官数据中提取离散实体。开发这种方法是一个令人兴奋的挑战,一旦解决就可以推开更强大、更灵活的推理算法的大门。
一个相关的问题是如何在计算过程中自适应地修改图结构。例如,如果一个对象分解为多个片段,则代表该对象的节点也应该拆分为多个节点。同样,仅保留交互对象之间的边可能很有用,因此需要根据上下文添加、删除边的能力。
人类的认知提出了一个强有力的假设,即世界是由对象和关系组成的。并且,由于
GN
做出了类似的假设,因此它的行为往往更具有解释性。GN
所处理的实体和关系通常对应于人类理解的实物(如物理对象),因此支持更可解释的分析和可视化。未来一个有趣的方向是进一步探索网络行为的可解释性。
尽管我们的重点是图,但是本文的重点不是图本身,而更多是将强大的深度学习方法和结构化表示相结合的方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论