KL vanishing 问题的一般解
本文主要针对阿里最近发表于ICASSP2019上的一篇论文“Improve Diverse Text Generation by Self Labeling Conditional Variational Auto Encoder”[1],通过博弈论的角度分析这篇论文存在的一些问题,并给出了KL vanishing问题的一般解。因此,本文的贡献主要包含了两方面:
- 尝试从博弈论的角度分析KL vanishing problem的纳什均衡解,并从这个角度得出阿里的这篇论文并不能很好地解决KL vanishing problem
- 从原始的VAE优化函数出发,通过引入互信息的限制条件来解决KL vanishing problem,并从博弈论角度给出文本提出的优化算法的纳什均衡解不再会遇到KL vanishing问题
KL vanishing problem
在VAE里面,KL vanishing problem主要是指当KL(q(z|x) || p(z))消失时,并且当隐变量z和x独立时,此时的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时,存在着两种情况,一个是z与x独立, 另一个是z和x不独立。我们想得到的解是当KL(q(z|x) || p(z))=0时,z和x不独立。现在我们引入博弈论的思想,假设模型的两个modules之间进行博弈,它们分别是决定z和x独立与否的module A,以及决定q(z|x)于p(z)是否相等的module B。而它们的收益函数都是ELBO或ELBO的相关变种。
首先对传统VAE进行分析,得到module A和module 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),当且仅当x和z独立时等式成立,因此可以得到纳什均衡解是(z与x独立,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的信息,从而避免模型收敛到(z与x独立,q(z|x) == p(z))这个解。但这种方法并不能完全避免模型收敛到(z与x独立,q(z|x) == p(z))。我们先一般化这个思路,即定义新的,具体的,这里的
,此处的
就是module A和module 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不独立 |
(
|
(
|
因为要想让模型收敛到纳什均衡解(z与x不独立,q(z|x) == p(z)),必须满足:
但是当时,由于
,而当z与x不独立时,
,故条件(1)不成立。因此此时的纳什均衡解依然是(z与x独立,q(z|x) == p(z))。所以论文里提出的算法并不能解决KL vanishing problem。
新方法
我们发现如果尝试去通过修改中间优化函数,比如ELBO,往往会导致最终得到的新的objective function不再和最原始的objective function:min KL(q(z|x), p(z|x)) 等价,这样的objective function往往是一个四不像,虽然从局部分析往往对模型有利,但如果从全局进行分析就会发现这样做会顾此失彼。因此,能否在原始的objective function上做修改,比如引入一个限制条件,使得隐变量z和x的互信息大于某个常数,这样我们能够保证求解得到的解与求解原始objective function等价。
定义新的objective function
由于VAE最初的目标是优化KL(q(z|x), p(z|x)),而我们只要在优化过程中引入一些限制条件,比如使得x和z的互信息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-parameters:,and 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)的同时,x与z不独立。
与β-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
- 当KL(q(z|x) || p(z))=0,并且隐变量z和x独立时,ELBO=logp(x)
proof:
上面不等式等号成立的条件是隐变量z和x独立。因此ELBO=logp(x)。
证毕。
2. 传统VAE module A和module B的收益矩阵(此处假设module A和module 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) |
当隐变量z和x独立并q(z|x) == p(z)时,由1得到此时ELBO=logp(x)
当隐变量z和x不独立并q(z|x) ≠ p(z)时,即原始的ELBO值
当隐变量z和x独立并q(z|x) ≠ p(z)时:
当隐变量z和x不独立并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) < c并q(z|x) == p(z)时,由(4)得:
特别的,当I(x, z)=0时值取最大,
当I(x, z) < c并q(z|x) ≠ p(z)时,由(4)得:
当I(x, z) >= c并q(z|x) == p(z)时,由(3)得:
当I(x, z) >= c并q(z|x) ≠ p(z)时,由(3)得: