KL vanishing 问题的一般解

本文主要针对阿里最近发表于ICASSP2019上的一篇论文Improve Diverse Text Generation by Self Labeling Conditional Variational Auto Encoder”[1],通过博弈论的角度分析这篇论文存在的一些问题,并给出了KL vanishing问题的一般解。因此,本文的贡献主要包含了两方面:

  1. 尝试从博弈论的角度分析KL vanishing problem的纳什均衡解,并从这个角度得出阿里的这篇论文并不能很好地解决KL vanishing problem
  2. 从原始的VAE优化函数出发,通过引入互信息的限制条件来解决KL vanishing problem,并从博弈论角度给出文本提出的优化算法的纳什均衡解不再会遇到KL vanishing问题

KL vanishing problem

VAE里面,KL vanishing problem主要是指当KL(q(z|x) || p(z))消失时,并且当隐变量zx独立时,此时的ELBO=log(p(x))【推导过程见Supplemental Materials】。由KL(q(z|x) || p(z|x)) = log(p(x)) - ELBO,得到此时KL(q(z|x) || p(z|x))=0,因此得出q(z|x)==p(z|x),但这个解并不是我们需要的理想解,因为此时的互信息I(x, z)=0

从博弈论观点看待KL vanishing problem

通过对KL vanishing problem的分析,假设当KL(q(z|x) || p(z))=0时,存在着两种情况,一个是zx独立, 另一个是zx不独立。我们想得到的解是当KL(q(z|x) || p(z))=0zx不独立。现在我们引入博弈论的思想,假设模型的两个modules之间进行博弈,它们分别是决定zx独立与否的module A,以及决定q(z|x)p(z)是否相等的module B。而它们的收益函数都是ELBOELBO的相关变种。

首先对传统VAE进行分析,得到module Amodule B的收益矩阵【计算过程见Supplemental Materials】:

Module A \ Module B q(z|x) == p(z) q(z|x) ≠ p(z)

z x独立

(logp(x),  logp(x))

(logp(x)KL(q(z),p(z)), logp(x)-KL(q(z),p(z))

z x不独立

(Ep(z)[logp(x|z)],

Ep(z)[logp(x|z)])

(ELBO, ELBO)

由于Ep(z)[logp(x|z)] <= logp(x),当且仅当xz独立时等式成立,因此可以得到纳什均衡解是(zx独立,q(z|x) == p(z)),此时就会造成所谓的KL vanishing problem

“Improve Diverse Text Generation by Self Labeling Conditional Variational Auto Encoder”[1]这篇论文提出通过引入新的损失函数:

可以避免出现KL vanishing problem。他们的基本思想是,通过使隐变量z包含x的信息,从而避免模型收敛到(zx独立,q(z|x) == p(z))这个解。但这种方法并不能完全避免模型收敛到(zx独立,q(z|x) == p(z))。我们先一般化这个思路,即定义新的具体的,这里的此处的就是module Amodule B采取的策略,即module A选择z是否与x独立,module B选择q(z|x)是否等于p(z)。由此,我们得到新的收益矩阵:

Module A \ Module B q(z|x) == p(z) q(z|x) ≠ p(z)

z x独立

(,

)

(,)

z x不独立

(,

)

(,

)

因为要想让模型收敛到纳什均衡解(zx独立,q(z|x) == p(z)),必须满足:

但是当时,由于而当zx不独立时,故条件(1)不成立。因此此时的纳什均衡解依然是(zx独立,q(z|x) == p(z))。所以论文里提出的算法并不能解决KL vanishing problem

新方法

我们发现如果尝试去通过修改中间优化函数,比如ELBO,往往会导致最终得到的新的objective function不再和最原始的objective functionmin KL(q(z|x), p(z|x)) 等价,这样的objective function往往是一个四不像,虽然从局部分析往往对模型有利,但如果从全局进行分析就会发现这样做会顾此失彼。因此,能否在原始的objective function上做修改,比如引入一个限制条件,使得隐变量zx的互信息大于某个常数,这样我们能够保证求解得到的解与求解原始objective function等价。

定义新的objective function

由于VAE最初的目标是优化KL(q(z|x), p(z|x)),而我们只要在优化过程中引入一些限制条件,比如使得xz的互信息I(x,z) >= c,因此得到下面新的objective function

通过引入拉格朗日乘子,得到不带约束的优化问题:

我们可以看出,这个优化目标函数可以使得当I(x, z) < c时,将得到一个惩罚项,只有当I(x, z) >= c时,惩罚项才为0

因此,若I(x, z) >= c,则

而当I(x, z) < c时,由

进一步得到:

在实际训练的时候,我们让:

因此新的求解算法具体过程如下:

1.  Choose hyper-parametersand initialize model parameters  randomly

2.

    While not stopped:

            Sample a mini-batch data: {x1, x2, ..., xn}

            Calculate mini-batch mean KL(q(z|x), p(z)):

            

           

                      Calculate gradients:

Calculate gradients:

Update model parameters 

算法分析

文本提出的优化算法的收益矩阵为【计算过程见Supplemental Materials】:

Module A \ Module B q(z|x) == p(z) q(z|x) ≠ p(z)

I(x, z) < c

(,  )

(,

)

I(x, z) >= c

(,

)

(,

)

特别的,当I(x, z)=0,并且q(z|x) == p(z)的值取最大:

根据收益矩阵可以得出,我们只要满足条件:

而这两项条件只要我们设置合理的值就可以满足。此时的纳什均衡解为(I(x, z) >= c, q(z|x) == p(z)),而这正是我们希望得到的解,因为此时在保证q(z|x) == p(z)的同时,xz不独立。

β-VAE对比

我们知道β-VAE可以学到比较好的解耦表示,即使得每个维度的隐变量zi之间的相关度很小,但同时它会减小隐变量z与x之间的互信息[2]。因此会导致reconstruction网络性能的下降。由于β-VAE只是简单地增大对KL(q(z|x), p(z))的惩罚,随着训练的进行,有可能会push隐变量的分布朝着跟x独立的分布的方向去优化。而本文提出的算法,可以动态去调整KL(q(z|x), p(z))的惩罚项,从而避免减小隐变量z和x之间的互信息。同时我们发现,在优化目标函数(3)和(4)里引入β(β>1)后,收益矩阵变为:

Module A \ Module B q(z|x) == p(z) q(z|x) ≠ p(z)

I(x, z) < c

(,  )

(,

)

I(x, z) >= c

(,

)

(,

)

 

此时依然只要满足条件:

就可以得到纳什均衡解I(x, z) >= c, q(z|x) == p(z),并且此时也可以学到比较好的解耦表示。

 

References

1.  Zhang Y , Wang Y , Zhang L , et al. Improve Diverse Text Generation by Self Labeling Conditional Variational Auto Encoder[J]. 2019.

2.  Chen R T Q, Li X, Grosse R, et al. Isolating Sources of Disentanglement in Variational Autoencoders[J]. 2018.

Supplemental Materials

  1.  当KL(q(z|x) || p(z))=0,并且隐变量zx独立时,ELBO=logp(x)

proof:

上面不等式等号成立的条件是隐变量zx独立。因此ELBO=logp(x)

         证毕。

2. 传统VAE module Amodule B的收益矩阵(此处假设module Amodule B的收益都是优化目标函数值,下同)

Module A \ Module B q(z|x) == p(z) q(z|x) ≠ p(z)

z x独立

   (logp(x),  logp(x))

(logp(x)-KL(q(z),p(z)), logp(x)-KL(q(z),p(z))

z x不独立

(Ep(z)[logp(x|z)],

Ep(z)[logp(x|z)])

(ELBO, ELBO)

当隐变量zx独立并q(z|x) == p(z)时,由1得到此时ELBO=logp(x)

当隐变量zx独立并q(z|x) ≠ p(z)时,即原始的ELBO

当隐变量zx独立并q(z|x) ≠ p(z)

当隐变量zx独立并q(z|x) == p(z)

 

3. 文本提出的优化算法的收益矩阵为:

Module A \ Module B q(z|x) == p(z) q(z|x) ≠ p(z)

I(x, z) < c

(,

)

(,

)

I(x, z) >= c

(,

)

(,

)

 

I(x, z) >= c时,收益函数为:

I(x, z) < c时,收益函数为:

I(x, z) < cq(z|x) == p(z)时,由(4)得:

特别的,当I(x, z)=0时值取最大,

I(x, z) < cq(z|x) ≠ p(z)时,由(4)得:

I(x, z) >= cq(z|x) == p(z)时,由(3)得:

 

I(x, z) >= cq(z|x) ≠ p(z)时,由(3)得:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>