Nazabal A., Olmos P., Ghahramani Z. and Valera I.

Handing incomplete heterogeneous data using VAEs.

Pattern Recognition, 2020, 107: 107501.

这篇文章利用VAE处理缺失数据, 以往的对缺失数据的处理往往是不区分连续离散, 数字符号的, 感觉这里利用分布的处理方式非常精彩.

主要内容

ELBO

首先, 既然是利用VAE, 那么就需要推导出相应的ELBO来.

文章首先假设数据\(x\)和隐变量之间关系满足:

\[p(x_n, z_n) = p(z_n) \prod_d p(x_{nd}|z_n),
\]

即\(x_n\)的各分量关于\(z_n\)的条件独立的.

进一步引入观测数据\(x^o\)和\(x^m\), 即

\[x^o_{nd} =
\left \{
\begin{array}{ll}
x_{nd}, & d \in \mathcal{O}_n \\
0, & d \in \mathcal{M}_n
\end{array}
\right ., \\
x^{m}_n = x_n - x_{n}^o.
\]

其中\(\mathcal{O}, \mathcal{M}\) 分别是观测的元素和缺失的元素位置, 且彼此是互斥的.

那么

\[p(x_n|z_n) = \prod_{d \in \mathcal{O}_n} p(x_{nd}|z_n) \prod_{d \in \mathcal{M}_n} p(x_{nd}|z_n).
\]
\[q(z_n, x_n^m|x_n^o) = q(z_n|x_n^o) \prod_{d \in \mathcal{M}_n} p(x_{nd}|z_n).
\]

则通过极大似然即可推出ELBO:

\[\begin{array}{ll}
\log p(X^o)
&= \sum_{n} \mathbb{E}_{q(z_n|x_n^o)} \log \frac{p(x_n^o, z_n)}{q(z_n|x_n^o)} \frac{q(z_n|x_n^o)}{p(z_n|x^o_n)} \\
&\ge \sum_n \mathbb{E}_{q(z_n|x_n^o)} \log p(x_n^o|z_n)
- \sum_n \mathrm{KL}(q(z_n|x_n^o)\| p(z_n)).
\end{array}
\]

其中\(p(x_n^o|z_n)=\prod_{d \in \mathcal{O}_n} p(x_{nd}|z_n)\).

网络结构

从上面的假设就可以看出, 整体的VAE的结构是这样的:

  1. 观测数据\(x^o\)经过encoder得到\(\mu_q(x^o), \Sigma_q(x^o)\), 并从高斯分布中采样得到\(z\).
  2. 隐变量\(z\)经过独立的网络\(h_1, \cdots, h_d\)得到预测的数据\(\gamma_1, \gamma_2, \cdots, \gamma_d\), 这些用于构建各自的分布\(p(x_d|\gamma_d)\), 这个分布是数据的类型而不同.

不同的数据

这对不同的数据类型, 可以假设不同的分布\(p(x_d|\gamma_d)\), 这我认为是非常有趣的一个点.

  1. 如果\(x_d\)是实值变量, 则可以假设其为高斯分布:
\[p(x_d|\gamma_d) = \mathcal{N} (x_d|\mu_d(z), \sigma_d^2(z)).
\]
  1. 如果\(x_d \in \mathbb{R}^+\), 则
\[\log p(x_d|\gamma_d) = \mathcal{N} (x_d|\mu_d(z), \sigma_d^2(z)), x_d \ge 0.
\]
  1. \(x_d \in \{0, 1, 2, \cdots \}\), 则假设poisson分布:
\[p(x_d|\gamma_d) = \mathrm{Poiss}(x_d|\lambda(z))
= \frac{\lambda_d(z)^{x_d} \exp (-\lambda_d(z_n))}{x_d!}.
\]
  1. 类别数据, \(\gamma_d \in \{h_{d0}(z), \cdots, h_{d(R-1)}(z)\}\)此时为logits, 最后的概率分布
\[p(x_d = r|\gamma_d) = \frac{\exp (-h_{dr}(z))}{\sum_r \exp (-h_{dr}(z))}
\]
  1. Ordinal data
\[p(x_d = r | \gamma_d) = p(x_d \le r|\gamma_d)-p(x_d \le r-1|\gamma_d),
\]

其中

\[p(x_d \le r|\gamma_d) = \frac{1}{1 + \exp (-(\theta_r(z)- h_d(z)))}.
\]

HI-VAE

上述的假设有些过于强了, 为此, 作者做出了一些调整.

  1. 假设一个了一个混合的高斯先验: \(p(z|s_n)\);
  2. 隐变量需要先经过一个共同的变化得到\(Y_n\)再和\(s_n\)一起经过独立的网络得到\(\gamma_1, \gamma_2, \cdots, \gamma_d\).

个人感觉第二点的设计还是不错的.

代码

原文代码

Handing Incomplete Heterogeneous Data using VAEs的更多相关文章

  1. RFC destination fails with error Incomplete Logon Data after system copy

    1. 问题现象 1.1在system copy后,提示RFC报错Unable to configure STMS 2.  重要的参考文件: 2.1RFC passwords not available ...

  2. Interviews3D: APlatform for Interactive Handing of Massive Data Sets 读后感

    横向比较: Inadequacy of current system design( 现代系统和一些软件的不足) 软件特点: Output sensitivity Out-of core data h ...

  3. Toward Scalable Systems for Big Data Analytics: A Technology Tutorial (I - III)

    ABSTRACT Recent technological advancement have led to a deluge of data from distinctive domains (e.g ...

  4. MySQL vs. MongoDB: Choosing a Data Management Solution

    原文地址:http://www.javacodegeeks.com/2015/07/mysql-vs-mongodb.html 1. Introduction It would be fair to ...

  5. Opaque data type--不透明类型

    Opaque:对使用者来说,类型结构和机制明晰即为transparent,否则为Opaque In computer science, an opaque data type is a data ty ...

  6. 论文翻译:Data mining with big data

    原文: Wu X, Zhu X, Wu G Q, et al. Data mining with big data[J]. IEEE transactions on knowledge and dat ...

  7. Understanding Variational Autoencoders (VAEs)

    Understanding Variational Autoencoders (VAEs) 2019-09-29 11:33:18 This blog is from: https://towards ...

  8. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  9. Magic Quadrant for Security Information and Event Management

    https://www.gartner.com/doc/reprints?id=1-4LC8PAW&ct=171130&st=sb Summary Security and risk ...

随机推荐

  1. linux 实用指令搜索查找类

    linux 实用指令搜索查找类 目录 linux 实用指令搜索查找类 find指令 locate指令 grep指令和管道符号 | find指令 说明 从指定目录向下递归地遍历其各个子目录,将满足条件的 ...

  2. Spark(二十一)【SparkSQL读取Kudu,写入Kafka】

    目录 SparkSQL读取Kudu,写出到Kafka 1. pom.xml 依赖 2.将KafkaProducer利用lazy val的方式进行包装, 创建KafkaSink 3.利用广播变量,将Ka ...

  3. 大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例

    1. sortBy是Transformation算子,为什么会触发Action sortBy需要对数据进行全局排序,其需要用到RangePartitioner,而在创建RangePartitioner ...

  4. Can namespaces be nested in C++?

    In C++, namespaces can be nested, and resolution of namespace variables is hierarchical. For example ...

  5. redis入门到精通系列(一)

    (一)为什么要用Nosql 如果你是计算机本科学生 ,那么一定使用过关系型数据库mysql.在请求量小的情况下,使用mysql不会有任何问题,但是一旦同时有成千上万个请求同时来访问系统时,就会出现卡顿 ...

  6. Windows服务器java.exe占用CPU过高问题分析及解决

    最近在测试一个用java语言实现的数据采集接口时发现,接口一旦运行起来,CPU利用率瞬间飙升到85%-95%,一旦停止就恢复到40%以下,这让我不得不面对以前从未关注过的程序性能问题. 在硬着头皮查找 ...

  7. 【Java】【IDE】【Jetbrain Idea】Intellij IDEA 快捷键整理

    [常规] Ctrl+Shift + Enter,语句完成 "!",否定完成,输入表达式时按 "!"键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更 ...

  8. Ajax请求($.ajax()为例)中data属性传参数的形式

    首先定义一个form表单: <form id="login" > <input name="user" type="text&quo ...

  9. 【C/C++】日期问题/算法笔记/入门模拟

    最近把算法竞赛入门经典的前半部分看完了,开始看算法笔记入门算法. 看了前半部分的例题,很多是算法竞赛入门经典中出现过的,但是感觉这本书写的更适合初学者,而且真的很像考试笔记,通俗易懂. //日期问题 ...

  10. 解放双手,自动生成“x.set(y.get)”,搞定vo2dto转换

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 给你机会,你也不中用啊 这些年从事编程开发以来,我好像发现了大部分研发那些不愿意干的 ...