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. Shell学习(七)——sort、uniq、cut、wc命令详解

    Shell学习(七)--sort.uniq.cut.wc命令详解 转自:[1]linux sort,uniq,cut,wc命令详解 https://www.cnblogs.com/ggjucheng/ ...

  2. spring注解-自动装配

    Spring利用依赖注入(DI)完成对IOC容器中中各个组件的依赖关系赋值 一.@Autowired 默认优先按照类型去容器中找对应的组件(applicationContext.getBean(Boo ...

  3. Linux:cp -rp

    cp -rp[原文件或目录] [目标文件或目录] -r   复制目录 - p   保留文件属性 范例: cp -r /yy/k /yy/u /mm 复制目录u和目录k到目录mm中 cp -r /yy/ ...

  4. springboot项目中集成ip2region遇到的问题及终极解决办法

    1.问题回顾 按照ip2region项目的官方集成到springboot项目后,运行测试一切都ok,没有任何问题.但是当项目打成可执行的jar包后再运行,却显示找不到ip2region.db,无法找到 ...

  5. Linux提取命令grep 有这一篇就够了

    grep作为linux中使用频率非常高的一个命令,和cut命令一样都是管道命令中的一员.并且其功能也是对一行数据进行分析,从分析的数据中取出我们想要的数据.也就是相当于一个检索的功能.当然了,grep ...

  6. JavaOOP对象和封装

    对象: 前言: 在程序员眼中,世界万物皆为对象.世界上有两种人,一种是懂二进制的人,一种就是不懂二进制的人. 面向对象设计的过程就是抽象的过程. 步骤: 第一步:发现类 第二步:发现类的属性 第三步: ...

  7. Jenkins配置代码化

    目录 一.简介 二.init.groovy 脚本命令行调试 一.简介 Jenkins用久了,会有一种莫名的紧张感.因为没人清楚Jenkins都配置了什么,以至于没人敢动它. 但凡使用界面进行配置的都会 ...

  8. shell脚本 系统信息检测

    一.简介 源码地址 日期:2018/4/12 介绍:根据指令展示不同的系统数据 效果图: 二.使用 适用:centos6+ 语言:中文 注意:无 下载 wget https://raw.githubu ...

  9. [BUUCTF]REVERSE——xor

    xor 附件 步骤: 附件很小,直接用ida打开,根据检索得到的字符串,找到程序关键函数 程序很简单,一开始让我们输入一个长度为33的字符串给v6,然后v6从第二个字符开始与前一个字符做异或运算,得到 ...

  10. 转换…Transform…(Power Query 之 M 语言)

    转换列: = Table.TransformColumns( 表, {{"列名1", 转换函数1, 数据类型1},-,{"列名n", 转换函数n, 数据类型n} ...