Preface
A Paper A Day Keep the Doctor Away. 今天的文章是:
Learning Disentangled Joint Continuous and Discrete Representations. (NIPS2018) [paper] [代码]
本文整体基于AnnealVAE,将隐空间中连续变量和离散变量的空间分开建模,并分开限制信道容量。在离散变量的分布的重参数化上,作者使用了[1]的"Gumbel Softmax"方法,在MNIST、FashionMNIST数据集上学习到了一定的离散分量。
Main Contents
JointVAE
JointVAE的损失基于AnnealVAE,只是将原来的capacity容量的限制分别拆分成离散变量的和连续变量的两个限制之和。
首先使用c和z分别表示隐空间中的离散和连续的隐分量,即原VAE的ELBO的隐变量z=(z,c),β-VAE的ELBO变为:
L(θ,ϕ)=Eqϕ(z,c∣x)[logpθ(x∣z,c)]−βDKL(qϕ(z,c∣x)∥p(z,c))
假定连续变量和离散变量条件独立,上式的KL项可以继续拆分成:
DKL(qϕ(z,c∣x)∥p(z,c))=DKL(qϕ(z∣x)∥p(z))+DKL(qϕ(c∣x)∥p(c))
整体β-VAE的ELBO又变为:
L(θ,ϕ)=Eqϕ(z,c∣x)[logpθ(x∣z,c)]−βDKL(qϕ(z∣x)∥p(z))−βDKL(qϕ(c∣x)∥p(c))
但是作者在实验中发现直接优化上式容易导致模型忽略离散隐变量。而如果借鉴AnnealVAE的方法(如下式),又会导致模型偏向将模型容量分配给连续变量。
LAnneal(θ,ϕ)=Eqϕ(z,c∣x)[logpθ(x∣z,c)]−γ∣DKL(qϕ(z∣x)∥p(z))+DKL(qϕ(c∣x)∥p(c))−C∣
最后作者分别对离散隐变量的容量和连续隐变量的容量分别限制,得到:
LAnneal(θ,ϕ)=Eqϕ(z,c∣x)[logpθ(x∣z,c)]−γ∣DKL(qϕ(z∣x)∥p(z))−Cz∣−γ∣DKL(qϕ(c∣x)∥p(c))−Cc∣
Reparameterization
对连续变量的重参数化和原始VAE的策略一样,而对离散变量的重参数化作者使用了[1]中的Gumbel Softmax
。
下面着重描述下我理解的Gumbel Softmax
重参数化过程。
对重参数化要求有两点:(1) 采样或近似采样原分布。 (2) 采样的结果对参数可以求导。
一般采用Multinoulli
分布对离散随机变量建模: X服从参数为[α1,⋯,αn]的Multinoulli
分布,即X=[X1,⋯,Xn]∼p(α1,⋯,αn),其中[X1,⋯,Xn]为一个one hot向量,仅有一个维度为1。
第一种方法:从该分布中采样,最简单的方法就是利用它的累积分布函数(CDF)F(x)=P(X≤x)和它的反函数。首先取[0,1]上的均匀分布的随机数p1,采样就可以是x∗=maxx{x∣F(x)≤p1},最后对x∗取one hot。
第二种方法是[1]中提到的Gumbel Max Trick
的方法近似采样:
令π=[α1,⋯,αn],πi=αi,要对X近似采样,可以利用以下公式:
x∗=one_hot(iargmax(logπi+gi))
其中gi(i=1,⋯,n)为从参数为(0,1)的Gumbel
分布中采样的独立同分布的样本。
然而argmax无法求导数,这引出了第三种方法——Gumbel Softmax
。
第三种方法是[1]中的Gumbel Softmax
,使用Softmax
替代上面公式的one_hot(argmax(⋅)),采样公式变为:
x∗=∑inexp((logπi+gi)/τ)exp((logπ+g)/τ)
当然,原文使用的是分量的形式:
xk=∑inexp((logπi+gi)/τ)exp((logπk+gk)/τ)fork=1,⋯,n
其中τ为annealing temperature。[1]将这样得到的x∗的分布称为Gumbel Softmax Distribution
。当τ→0时,x∗和one hot的结果越来越接近(仅有一个维度分量非常大);而当τ→∞时,x∗各分量的值变得越来越平均。
可以发现,使用Gumbel Softmax
采样的样本是可以对参数π求导的,所以它可以用于Multinoulli
分布的近似采样。
以上是对单个满足Mulitnoulli
分布的离散随机变量的重参数化过程,下面进一步把它扩展到建模的所有的离散分量。
记ci为单个满足Mulitnoulli
分布的离散随机变量X。推断后验分布建模成多个由Gumbel Softmax
近似的离散分布p(ci∣x)的乘积:
qϕ(c∣x)=i∏p(ci∣x)
而先验p(c)作者将其设置为均匀Multinoulli
分布的乘积:
p(c)=i∏p(ci;α0)
其中p(ci;α0)是以α0为参数的Multinoulli
分布,α0=[n1,⋯,n1],n为ci的维数。
Choices about hyperparameter
超参数的选取原则上,作者的观点是:
- γ 应取的足够的大,保证使得重建效果不会下降太多的容量最大化。
- Cc应该选择最大的离散分量的信道容量,也就是可能的最大的互信息量。
- Cz的选择作者认为比较困难,应选择能保持disentangled的最大容量(Cz是最需要调整的参数。)
Conclusions
作者在实验中得到的值得注意的结论有:
- 在MNIST上,JointVAE成功学习到了“数字的类别”这一离散分量,而且仅通过观察这一隐分量的值,在测试阶段取得了88%的分类正确率,这算是一个比较好的下游应用的展示,而且是无监督的方法。
- 如果数据集中没有特别突出的离散表示,比如说数字的类型,模型可能无法学习到有意义的离散表示,而且模型不一定能够学习到所有的类别,如FashionMNIST上,模型没有区别shirt和T-shirt。这表明离散表示的建模还有待提升。
References
- Eric Jang, Shixiang Gu, and Ben Poole. Categorical reparameterization with gumbel-softmax. arXiv preprint arXiv:1611.01144, 2016.