Householder Flow

Householder Flow

变分自动编码器(VAE)是可扩展的、强大的生成模型。然而,变分后验的选择决定了VAE的可操作性和灵活性。一般来说,潜变量是用一个对角协方差矩阵的正态分布建模的。这可以提高计算效率,但通常不能灵活地匹配真实的后验分布。丰富变分后验分布的一种方法是应用正则化流,即normalizing flows。这种操作是对潜变量的简单后验分布做一系列可逆变换,将其变为复杂,灵活的后验分布。Householder Flow就是normalizing flows中的一种。

推导

q ( x ) q(x) q(x)是一个简单的概率分布的概率密度函数,其概率分布函数为 F ( x ) F(x) F(x)
F ( x ) = ∫ − ⋈ x q ( t ) d t F(x) = \int_{-\Join}^{x}q(t)dt F(x)=xq(t)dt
f ( x ) f(x) f(x)是关于 x x x的可逆变换,其逆为 f − 1 ( x ) f^{-1}(x) f1(x),则变换后的 x x x的概率分布函数为:
F 1 ( x ) = ∫ − ⋈ x q ( t ) f − 1 ( x ) d t F_{1}(x)=\int_{-\Join}^{x}q(t)f^{-1}(x)dt F1(x)=xq(t)f1(x)dt
变换后的概率密度函数 q 1 ( x ) q_{1}(x) q1(x) F 1 ( x ) F_{1}(x) F1(x)的导数,所以:
q 1 ( x ) = q ( x ) ∣ d f − 1 d x ∣ = q ( x ) ∣ d f d x ∣ − 1 (1) \tag{1} q_{1}(x) = q(x)|{df^{-1} \over dx}| = q(x)|{df \over dx}|^{-1} q1(x)=q(x)dxdf1=q(x)dxdf1(1)
上述都是在一维的空间中,如果 x x x是一个向量,则(1)式就变为:
q 1 ( x ) = q ( x ) ∣ d e t d f d x ∣ − 1 (2) \tag{2} q_{1}(x) = q(x)|det{df \over dx}|^{-1} q1(x)=q(x)detdxdf1(2)
如果我们施加的一系列的 f k , k ∈ [ 1 , K ] f_{k}, k \in [1, K] fk,k[1,K],那么就得到一个归一化流(normalizing flows):
z K = f K ∗ . . . ∗ f 1 ( z 0 ) , z 0 ∽ q 0 ( z 0 ) z K ∽ q K ( z K ) = q 0 ( z 0 ) ∏ k = 1 K ∣ d e t d f k d z k − 1 ∣ − 1 z_{K} = f_{K}*...*f_{1}(z_{0}),z_{0} \backsim q_{0}(z_{0}) \\ z_{K} \backsim q_{K}(z_{K}) = q_{0}(z_{0}) \prod_{k=1}^{K}|det{df_{k} \over dz_{k-1}}|^{-1} zK=fK...f1(z0)z0q0(z0)zKqK(zK)=q0(z0)k=1Kdetdzk1dfk1
这一系列变换就可以将一个简单的概率分布变成一个复杂的概率分布。
为了简单计算,如果我们将 d f k d z k {df_{k} \over dz_{k}} dzkdfk变成一个正定矩阵,那么其雅可比矩阵的行列式就为1,这样就可以简化计算。

ELBO

通过normalizing flows,我们可以将变分后验变为如下:
l n q K ( z K ) = l n q 0 ( z 0 ∣ x ) − ∑ k = 1 K l n ∣ d e t d f k d z k − 1 ∣ (3) \tag{3}lnq_{K}(z_{K}) = lnq_{0}(z_{0}|x) -\sum_{k=1}^{K}ln|det{df_{k} \over dz_{k-1}}| lnqK(zK)=lnq0(z0x)k=1Klndetdzk1dfk(3)
变分下界(ELBO)变为:
Householder Flow_第1张图片

Householder transformation

假设 v v v是一个与超平面正交的向量(Householder vector),那么Householder matrix H H H定义如下:
H = I − 2 v v T ∣ v ∣ 2 H = I-2{vv^{T} \over |v|^{2}} H=I2v2vvT
H H H矩阵也是一个正交矩阵,所以其雅可比行列式的绝对值为1,也就是 l n ∣ d e t H ∣ = 0 ln|detH|=0 lndetH=0
我们令 f k = H k z k − 1 f_{k} = H_{k}z_{k-1} fk=Hkzk1,那么(4)式中
在这里插入图片描述
因此,后验分布 z 0 z_{0} z0通过一系列的Householder transformation(被称作Householder Flows)转化为了 z K z_{K} zK

你可能感兴趣的:(变分贝叶斯系列,机器学习)