Yang M., Liu F., Chen Z., Shen X., Hao J. and Wang J. CausalVAE: disentangled representation learning via neural structural causal models. arXiv preprint arXiv:2004.086975, 2020.

隐变量的因果表示.

主要内容

我们通常希望隐变量\(z\)能够表示一些特别的特征, 通过改变\(z\)使得生成的图形某些属性发生相应的变换, 但是这种设定的方式并不具备因果的关系, 比方说

这个摆锤, 其隐变量\(z\)是光照, 摆锤的角度, 影子的长短.

我们可以改变摆锤的角度, 一般的生成模型摆锤的角度变了, 但是光照和影子长短没有发生变化, 实际上由于摆锤角度的变化, 对于的隐变量:影子的长短也应该发生相应的变化以满足物理的规律. 如何把这些因果关系融入到普通的VAE中是本文的独到之处.

模型

Encoder 部分:

\[\epsilon = h(x, u) + \zeta,
\]

\(\epsilon\)可以看成是一个临时的隐变量;

\[z = (I - A)^{-1} \epsilon.
\]

Decoder部分:

\[z_i = g_i(A_i \circ z) + \epsilon_i,
\]

这一部分是重构\(z\), 正是这一步的存在使得我们能够干预\(z_i\)使得其它的\(z_j\)也发生相应的改变.

\[x = f(z) + \xi.
\]

联合分布为:

\[p_{\theta}(x, z, \epsilon|u) = p_{\theta}(x|z, \epsilon, u)p_{\theta}(\epsilon, z|u), \\
p_{\theta}(x|z,\epsilon,u) = p_{\theta}(x|z) = p_{\xi}(x-f(z)), \\
p_{\theta}(\epsilon,z|u) = p_{\epsilon}(\epsilon) p_{\theta}(z|u), \quad p_{\epsilon}(\epsilon) = \mathcal{N}(0, I), \\
p_{\theta}(z|u) = \prod_{i=1}^n p_{\theta}(z_i|u_i), \quad p_{\theta}(z_i|u_i) = \mathcal{N}(\lambda_1(u_i), \lambda_2^2(\mu_i)).
\]

估计的后验分布为:

\[q_{\phi}(z, \epsilon|x, u) = q(z|\epsilon)q_{\zeta}(\epsilon - h(x, u)), \\
q(z|\epsilon) = \delta (z=(I-A)^{-1}\epsilon).
\]

注: \(z, u, \epsilon \in \mathbb{R}^n, x \in \mathbb{R}^d.\)

ELBO

由此可以推出ELBO:

\[\mathbb{E}_{q_{\mathcal{X}}}[\mathbb{E}_{\epsilon, z\sim q_{\phi}}[\log p_{\theta}(x| z, \epsilon,u)] - \mathbb{D}(q_{\phi}(\epsilon, z|x, u))\| p_{\theta}(\epsilon, z|u)].
\]

由于\(p(z|\epsilon) = \delta(z=(I-A)^{-1}\epsilon)\), 所以上式可以进一步化为:

\[\mathbb{E}_{q_{\mathcal{X}}}[\mathbb{E}_{q_{\phi(z|x,u)}}[\log p_{\theta}(x|z)] - \mathbb{D}(q_{\phi}(\epsilon|x,u)\|p_{\epsilon}(\epsilon))-\mathbb{D}(q_{\phi}(z|x,u)\|p_{\theta}(z|u))]+\mathrm{const}.
\]

关于\(A\)

正如在这儿所论述的, \(A\)需要对应一个有向无环图, 本文采取的策略是:

\[H(A) = \mathrm{tr}((I+\frac{c}{n}A \circ A)^n) - n =0,
\]

这里\(c\)是任意正数.

同时为了满足\(z\)重构, 需要以下条件满足:

\[l_m = \mathbb{E}_{q_{\phi}} \sum_{i=1}^n \|z_i-g_i(A_i \circ z)\|^2 \le \kappa_2,
\]

注: 这里\(z_i\)是重构前的.

特别的, 为了更好地用额外信息(不是很认同, 感觉得看实际情况吧):

\[l_u = \mathbb{E}_{q_{\mathcal{X}}} \|u - \sigma(A^Tu)\|_2^2 \le \kappa_1,
\]

所以最终的损失为:

\[\mathcal{L} = -\mathrm{ELBO} +\alpha H(A) + \beta l_u + \gamma l_m,
\]

注: 本文不像别的方法一样用augmented Lagrange 求解.

注: 作者设计的实验实在是非常有趣.

CausalVAE: Disentangled Representation Learning via Neural Structural Causal Models的更多相关文章

  1. 论文解读(S^3-CL)《Structural and Semantic Contrastive Learning for Self-supervised Node Representation Learning》

    论文信息 论文标题:Structural and Semantic Contrastive Learning for Self-supervised Node Representation Learn ...

  2. Self-Supervised Representation Learning

    Self-Supervised Representation Learning 2019-11-11 21:12:14  This blog is copied from: https://lilia ...

  3. (转)Predictive learning vs. representation learning 预测学习 与 表示学习

    Predictive learning vs. representation learning  预测学习 与 表示学习 When you take a machine learning class, ...

  4. 翻译 Improved Word Representation Learning with Sememes

    翻译 Improved Word Representation Learning with Sememes 题目 Improved Word Representation Learning with ...

  5. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  6. 【论文笔记】Learning Convolutional Neural Networks for Graphs

    Learning Convolutional Neural Networks for Graphs 2018-01-17  21:41:57 [Introduction] 这篇 paper 是发表在 ...

  7. (zhuan) Notes on Representation Learning

    this blog from: https://opendatascience.com/blog/notes-on-representation-learning-1/   Notes on Repr ...

  8. 网络表示学习Network Representation Learning/Embedding

    网络表示学习相关资料 网络表示学习(network representation learning,NRL),也被称为图嵌入方法(graph embedding method,GEM)是这两年兴起的工 ...

  9. Machine Learning:Neural Network---Representation

    Machine Learning:Neural Network---Representation 1.Non-Linear Classification 假设还採取简单的线性分类手段.那么会面临着过拟 ...

随机推荐

  1. linux 实用指令文件目录类

    目录 linux实用指令文件目录类 路径 pwd指令 cd指令 操作文件夹/文件 ls指令 mkdir rmdir touch cp(重要) rm mv 操作内容 cat more less > ...

  2. mongDB进阶

    Mongo进阶 聚合 聚合操作将来自多个文档的值组合在一起,并且可以对分组数据执行各种操作以返回单个结果. 文档进入多阶段管道,将文档转换为聚合结果 聚合管道 例子: 第一阶段:过滤,$match 第 ...

  3. cephfs文件系统场景

    创建cephfs文件系统: [cephfsd@ceph-admin ceph]$ cd /etc/ceph [cephfsd@ceph-admin ceph]$ ceph fs ls No files ...

  4. 高效读取大文件,再也不用担心 OOM 了!

    内存读取 第一个版本,采用内存读取的方式,所有的数据首先读读取到内存中,程序代码如下: Stopwatch stopwatch = Stopwatch.createStarted(); // 将全部行 ...

  5. go recover让崩溃的程序继续执行

    package main import ( "fmt" "log" ) func de() { //recover() //可以打印panic的错误信息 //f ...

  6. Linux安装软件出错

    1.Delta RPMs disabled because /usr/bin/applydeltarpm not installed. yum provides '*/applydeltarpm' # ...

  7. MyBatis(1):实现MyBatis程序

    一,MyBatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  8. 【Linux】【Basis】进程

    1. 维基百科:https://zh.wikipedia.org/wiki/%E8%A1%8C%E7%A8%8B 进程的类型: 终端:硬件设备,关联一个用户接口 与终端相关:通过终端启动 与终端无关: ...

  9. 【Linux】【Problems】在fedora 9上解决依赖问题

    summary: 在32bit的fedora9上安装EMC客户端遇到无法解决的依赖问题 detail: rpm 安装: [root@hcszmons02 tmp]# rpm -ivh lgtoclnt ...

  10. C++易错小结

    C++ 11 vector 遍历方法小结 方法零,对C念念不舍的童鞋们习惯的写法: void ShowVec(const vector<int>& valList) { int c ...