Yu Y., Chen J., Gao T. and Yu M. DAG-GNN: DAG structure learning with graph neural networks. In International Conference on Machine Learning (ICML), 2019.

有向无环图 + GNN + VAE.

主要内容

先前已经有工作(NOTEARS)讨论了如何处理线性SEM模型

\[X = A^TX + Z,
\]

\(A \in \mathbb{R}^{m \times m}\)为加权的邻接矩阵, \(m\)代表了有向无环图中变量的数目, \(Z\)是独立的noise. 需要特别说明的是, 在本文中, 作者假设每一个结点变量\(X_i\)并非传统的标量而是一个向量 (个人觉得这是很有意思的点, 有点胶囊的感觉), 故\(X \in \mathbb{R}^{m \times d}\), 这里\(X_i\)为\(X\)的第\(i\)行.

本文在此基础上更进一步, 考虑非线性的情况:

\[g(X) = A^Tg(X) + f_1(Z),
\]

如果\(g\)可逆, 则可以进一步表示为

\[X = f_2((I - A^T)^{-1}f_1(Z)).
\]

为了满足这一模型, 作者套用VAE, 进而最大化ELBO:

\[\mathcal{L}_{\mathrm{ELBO}} = \mathbb{E}_{q_{\phi}(Z|X)}[\log p_{\theta}(X|Z)] - \mathbb{D}_{\mathrm{KL}}(q_{\phi}(Z|X)\| p(Z)),
\]

整个VAE的流程是这样的:

  1. encoder:

    \[M_Z, \log S_Z = f_4((I - A^T)f_3(X)), \\
    Z \sim \mathcal{N}(M_Z, S_Z^2).
    \]
  2. decoder

\[M_X, S_X = f_2((I - A^T)^{-1}f_1(Z)), \\
\widehat{X} \sim \mathcal{N}(M_X, S_X^2).
\]

注: 因为每个结点变量都不是标量, 所以考虑上面的流程还是把\(X, Z\)拉成向量\(md\)再看会比较清楚.

此时

\[\mathbb{D}_{\mathrm{KL}}(q_{\phi}(Z|X)\|p(Z)) = \frac{1}{2} \sum_{i=1}^m \sum_{j=1}^d \{[S_Z]_{ij}^2 + [M_Z]_{ij}^2 - 2\log [S_Z]_{ij} - 1 \}.
\]

仅最大化ELBO是不够的, 因为这并不能保证\(A\)反应有向无环图, 所以我们需要增加条件

\[h(A) = \mathrm{tr}[(I+\alpha A \circ A)^m] = m,
\]

具体推导看NOTEARS, 这里\(\alpha=\frac{c}{m}\), \(c>0\)是一个超参数, 这个原因是

\[(1 + \alpha |\lambda|)^m \le e^{c|\lambda|},
\]

所以合适的\(c\)能够让条件更加稳定.

最后目标可以总结为:

\[\min_{\phi, \theta, A} \quad -\mathcal{L}_{\mathrm{ELBO}} \\
\mathrm{s.t.} \quad h(A) = 0.
\]

同样的, 作者采用了augmented Lagrangian来求解

\[(A^k, \phi^k, \theta^k) = \arg \min_{A,\phi, \theta} \: -\mathcal{L}_{\mathrm{ELBO}} + \lambda h(A) + \frac{c}{2}|h(A)|^2, \\
\lambda^{k+1} = \lambda^k + c^k h(A^k), \\
c^{k+1} =
\left \{
\begin{array}{ll}
\eta c^k, & \mathrm{if} \: |h(A^k)| > \gamma |h(A^{k-1})|, \\
c^k, & otherwise.
\end{array}
\right.
\]

这里\(\eta > 1, \gamma < 1\), 作者选择\(\eta=10, \gamma=1/4\).

注: \(c\)逐渐增大的原因是, 显然当\(c = +\infty\)的时候, \(h(A)\)必须为0.

注: 作者关于图神经网络的部分似乎就集中在\(X\)的模型上, 关于图神经网络不是很懂, 就不写了.

代码

原文代码

DAG-GNN: DAG Structure Learning with Graph Neural Networks的更多相关文章

  1. 论文解读(soft-mask GNN)《Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks》

    论文信息 论文标题:Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks论文作者:Mingqi Yang, Ya ...

  2. 《Graph Neural Networks: A Review of Methods and Applications》阅读笔记

    本文是对文献 <Graph Neural Networks: A Review of Methods and Applications> 的内容总结,详细内容请参照原文. 引言 大量的学习 ...

  3. 3D Graph Neural Networks for RGBD Semantic Segmentation

    3D Graph Neural Networks for RGBD Semantic Segmentation 原文章:https://www.yuque.com/lart/papers/wmu47a ...

  4. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

  5. 论文解读(SelfGNN)《Self-supervised Graph Neural Networks without explicit negative sampling》

    论文信息 论文标题:Self-supervised Graph Neural Networks without explicit negative sampling论文作者:Zekarias T. K ...

  6. 论文阅读 Streaming Graph Neural Networks

    3 Streaming Graph Neural Networks link:https://dl.acm.org/doi/10.1145/3397271.3401092 Abstract 本文提出了 ...

  7. 论文解读(LA-GNN)《Local Augmentation for Graph Neural Networks》

    论文信息 论文标题:Local Augmentation for Graph Neural Networks论文作者:Songtao Liu, Hanze Dong, Lanqing Li, Ting ...

  8. 论文解读(GraphSMOTE)《GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks》

    论文信息 论文标题:GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks论文作者:Tianxi ...

  9. (转)Understanding, generalisation, and transfer learning in deep neural networks

    Understanding, generalisation, and transfer learning in deep neural networks FEBRUARY 27, 2017   Thi ...

随机推荐

  1. ceph对象存储场景

    安装ceph-radosgw [root@ceph-node1 ~]# cd /etc/ceph # 这里要注意ceph的源,要和之前安装的ceph集群同一个版本 [root@ceph-node1 c ...

  2. C++ 数字分类

           1012 数字分类 (20分) 输入格式: 每个输入包含 1 个测试用例.每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数.数字间 ...

  3. Android Handler 消息机制原理解析

    前言 做过 Android 开发的童鞋都知道,不能在非主线程修改 UI 控件,因为 Android 规定只能在主线程中访问 UI ,如果在子线程中访问 UI ,那么程序就会抛出异常 android.v ...

  4. AI常用环境安装

    torch环境 conda create --name py37 python=3.7 conda activate py37 pip install jieba==0.42.1pip install ...

  5. Ribbon详解

    转自Ribbon详解 简介 ​ Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让 ...

  6. Log4j 被曝核弹级漏洞,开发者炸锅了!

    大家好,我是鱼皮,开门见山,知名的开源项目 Apache Log4j 出事了! 2021 年 12 月 9 日,该项目被曝存在 严重安全漏洞 ,攻击者只需要向目标机传入一段特殊代码,就能触发漏洞,自由 ...

  7. C# 编写一个小巧快速的 Windows 动态桌面软件

    开源自己前段时间使用 C# 编写的 Windows 动态桌面软件,在接下来的博客我将描写一些技术细节和遇到的一些坑.这个软件可以把视频设置成桌面背景播放,不仅如此而且还可以把网页或一个网页文件设置成桌 ...

  8. Mysql原有环境部署多个版本

    目录 一.环境准备 二.下载安装包 三.Mysql-5.7单独部署 四.启动Mysql-5.7 五.muliti使用 一.环境准备 原先已经有一个5.6版本的数据库在运行了,当前操作是完全不影响原数据 ...

  9. SQL Server 2014如何DATEDIFF()函数截取对应时间年月日

    4.1 定义和用法: DATEDIFF()函数返回两个日期之间的时间 4.2 语法 DATEDIFF(datepart,startdate,enddate) datepart值: year | qua ...

  10. Linux网络编程入门

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...