Tomczak J. and Welling M. Improving Variational Auto-Encoders using Householder Flow. NIPS workshop: Bayesian Deep Learning, 2016.

本文介绍了一种Normalizing FLow, 利用Householder变换.

主要内容

我们一般假设

\[q_{\phi} (z|x) = \mathcal{N}(z| \mu(x), \sigma^2(x)),
\]

但是常被人诟病的一点就是这个假设太粗暴简单了.

我们知道一个服从正态分布的随机变量\(z\)经过一个线性变化依旧是服从正态分布, 即

\[Uz \sim \mathcal{N}(U\mu(x), U \mathrm{diag}(\sigma^2(x))U^T).
\]

倘若\(U\)是正交矩阵, 则\(q(z_1) = q(z)\), 则我们即让让分布更加灵活, 但不让计算变得复杂, 这种特殊的normalizing flow 是 volume preserving flow.

因为任意的正交矩阵都能够表示成

\[U = H_K H_{K-1} \cdots H_1,
\]

\(H\)是形如\(I - c \cdot v v^T\)的矩阵.

所以本文的设想是:

  1. Encoder 输出\(z^0, v^0\);
  2. 通过\(v^0\)构造\(H_0\)
\[H_0 = (I - 2 \frac{v_0v_0^T}{\|v_0\|^2_2});
\]
  1. 得到\(z^1 = H_0 z^0\);
  2. 利用一个新的网络得到\(v^1 = f_1(v_0)\);
  3. 以此类推, 得到最后的\(z^T\).

这就是整个flow.

代码

原文代码

Improving Variational Auto-Encoders using Householder Flow的更多相关文章

  1. Improved Variational Inference with Inverse Autoregressive Flow

    目录 概 主要内容 代码 Kingma D., Salimans T., Jozefowicz R., Chen X., Sutskever I. and Welling M. Improved Va ...

  2. [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

    About this Course This course will teach you the "magic" of getting deep learning to work ...

  3. (转)Awesome PyTorch List

    Awesome-Pytorch-list 2018-08-10 09:25:16 This blog is copied from: https://github.com/Epsilon-Lee/Aw ...

  4. 机器学习前沿热点——Deep Learning

    深度学习是机器学习研究中的一个新的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像.声音和文本.深度学习是无监督学习的一种. 深度学习的概念源于人工神经网络的 ...

  5. (转)Deep Learning深度学习相关入门文章汇摘

    from:http://farmingyard.diandian.com/post/2013-04-07/40049536511 来源:十一城 http://elevencitys.com/?p=18 ...

  6. [Python] 机器学习库资料汇总

    声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...

  7. python数据挖掘领域工具包

    原文:http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块:Numpy和Sc ...

  8. Theano3.1-练习之初步介绍

    来自 http://deeplearning.net/tutorial/,虽然比较老了,不过觉得想系统的学习theano,所以需要从python--numpy--theano的顺序学习.这里的资料都很 ...

  9. [resource]Python机器学习库

    reference: http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块: ...

随机推荐

  1. 如何使用 Kind 快速创建 K8s 集群?

    作者|段超 来源|尔达 Erda 公众号 ​ 导读:Erda 作为一站式云原生 PaaS 平台,现已面向广大开发者完成 70w+ 核心代码全部开源!在 Erda 开源的同时,我们计划编写<基于 ...

  2. day31 协程

    day31 协程 一.死锁与递归锁 ​ 所谓死锁:是指两个或者两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产 ...

  3. Maven打包及场景

    场景一 对当前项目打包并指定主类. <build> <plugins> <plugin> <artifactId>maven-compiler-plug ...

  4. Linux学习 - 环境变量配置文件

    一.环境变量配置文件的作用 /etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc 1 /etc/profile的 ...

  5. node环境变量配置

    1.Node.js 官方网站下载:https://nodejs.org/en/ 2.打开安装,傻瓜式下一步即可,然后配置环境变量 3.因为在执行例如npm install webpack -g等命令全 ...

  6. [学习总结]1、View的scrollTo 和 scrollBy 方法使用说明和区别

    参考资料:http://blog.csdn.net/vipzjyno1/article/details/24577023 非常感谢这个兄弟! 先查看这2个方法的源码: scrollTo: 1 /** ...

  7. 线程开启的第一种方法:通过创建Thread的子类的对象的方式

    package cn.itcast.demo16.demo06.Thread;/** * @author newcityman * @date 2019/7/22 - 21:47 */public c ...

  8. 通过jquery实现form表单提交后不跳转页面,保留当前页面

    jquery代码: <script type="text/javascript" src="../js/jquery-1.8.3.min.js">& ...

  9. HCL华三模拟器静态路由实验

    (copy自我的其他博客网站) 拓扑如下: 实验目的:通过给A.B.C三台路由器配置静态路由,使PC1可以ping通PC2. 实验环境:Windows10 (21H1),HCL(V3.0.1) 实验步 ...

  10. [IDEA] chapter_reader - idea看小说插件 idea阅读插件 idea摸鱼插件

    目录 1. 简述: 2. 使用说明: 2.1 版本说明: 2.2 重要说明: 2.3 简单使用方法: 2.4 目前支持的网站有 (新↓): 2.5 菜单介绍: 2.6 快捷键设置及推荐: 2.7 在线 ...