33 流模型( 二 )


而最终的目的是想将P X ( X ) P_{X}(X) PX?(X) 完全用一个Z Z Z 为自变量的函数来表达,所以要将∣ ? f ? 1 ( X ) ? X ∣ \left|\frac{\ f^{-1}(X)}{\ X}\right| ∣∣∣??X?f?1(X)?∣∣∣? 用Z Z Z 来表示 。下面先写结论
【33 流模型】P X ( X ) = ∣ det ? ( ? f ? 1 ( X ) ? X ) ∣ P Z ( Z ) = ∣ det ? ( ? f ? 1 ( Z ) ? Z ) ∣ ? 1 P Z ( Z ) \begin{} P_{X}(X) &=\left|\{det}\left(\frac{\ f^{-1}(X)}{\ X}\right)\right| P_{Z}(Z) \\ &=\left|\{det}\left(\frac{\ f^{-1}(Z)}{\ Z}\right)\right|^{-1} P_{Z}(Z) \end{} PX?(X)?=∣∣∣∣?det(?X?f?1(X)?)∣∣∣∣?PZ?(Z)=∣∣∣∣?det(?Z?f?1(Z)?)∣∣∣∣??1PZ?(Z)?
这个结论是怎么来的呢?我们来看一个简单的例子,如下图所
如图所示,y = f ( x ) , x = f ? 1 ( y ) y=f(x), x=f^{-1}(y) y=f(x),x=f?1(y)。那么有
d y d x = ? f ( x ) ? x , d x d y = ? f ? 1 ( y ) ? y \frac{d y}{d x}=\frac{\ f(x)}{\ x}, \frac{d x}{d y}=\frac{\ f^{-1}(y)}{\ y} dxdy?=?x?f(x)?,dydx?=?y?f?1(y)?
而,
? f ( x ) ? x ? f ? 1 ( y ) ? y = 1 \frac{\ f(x)}{\ x} \frac{\ f^{-1}(y)}{\ y}=1 ?x?f(x)??y?f?1(y)?=1
在本文举的例子中,
( f ? 1 ) ′ ( a ) = b ? c a ? c ( f ) ′ ( b ) = a ? c b ? c \begin{} \left(f^{-1}\right)^{\prime}(a) &=\frac{b-c}{a-c} \\ (f)^{\prime}(b) &=\frac{a-c}{b-c} \end{} (f?1)′(a)(f)′(b)?=a?cb?c?=b?ca?c??
很显然有( f ? 1 ) ′ ( a ) f ′ ( b ) = 1. \left(f^{-1}\right)^{\prime}(a) f^{\prime}(b)=1 . (f?1)′(a)f′(b)=1. 这就是of。我们可以得到两个变量之间关于 映射f f f 的转换为:
P X ( X ) = ∣ det ? ( ? f ? 1 ( Z ) ? Z ) ∣ ? 1 P Z ( Z ) P_{X}(X)=\left|\{det}\left(\frac{\ f^{-1}(Z)}{\ Z}\right)\right|^{-1} P_{Z}(Z) PX?(X)=∣∣∣∣?det(?Z?f?1(Z)?)∣∣∣∣??1PZ?(Z)

么,当训练完成之后,从 P(Z) 中采样比较筒单,通过上述公式,就叶以得到 P ( X ) , P(X), P(X), 所以P ( X ) P(X) P(X) 是可求解的 。如何学习呢?其实并不难,通过极大似然估计可以得到:
log ? P X ( X ) = log ? ∣ det ? ( ? f ? 1 ( Z ) ? Z ) ∣ ? 1 + log ? P Z ( Z ) \log P_{X}(X)=\log \left|\{det}\left(\frac{\ f^{-1}(Z)}{\ Z}\right)\right|^{-1}+\log P_{Z}(Z) logPX?(X)=log∣∣∣∣?det(?Z?f?1(Z)?)∣∣∣∣??1+logPZ?(Z)
那么:
? log ? P X ( X ) ? X = ? log ? ∣ det ? ( ? f ? 1 ( Z ) ? Z ) ∣ ? 1 + log ? P Z ( Z ) ? Z ? Z ? X = ? log ? ∣ det ? ( ? f ? 1 ( Z ) ? Z ) ∣ ? 1 + log ? P Z ( Z ) ? Z ? f ? 1 ( X ) ? X \begin{} \frac{\ \log P_{X}(X)}{\ X} &=\frac{\ \log \left|\{det}\left(\frac{\ f^{-1}(Z)}{\ Z}\right)\right|^{-1}+\log P_{Z}(Z)}{\ Z} \frac{\ Z}{\ X} \\ &=\frac{\ \log \left|\{det}\left(\frac{\ f^{-1}(Z)}{\ Z}\right)\right|^{-1}+\log P_{Z}(Z)}{\ Z} \frac{\ f^{-1}(X)}{\ X} \end{} ?X?logPX?(X)??=?Z?log∣∣∣?det(?Z?f?1(Z)?)∣∣∣??1+logPZ?(Z)??X?Z?=?Z?log∣∣∣?det(?Z?f?1(Z)?)∣∣∣??1+logPZ?(Z)??X?f?1(X)??
由于f 的逆很要求,上述梯度的计算还是比较简单的 。然而,关于大矩阵行列式的计算并不美丽 。后
续有很多针对这点的改进方法,有兴趣的同学自行查看flow based 的论文 。
[1] ICLR 2015 NICE-Non-
[2] ICLR 2017using Real NVP
[3] 2018 Glow:Flow with1×1
4 小结
本章主要介绍的是流模型的主要思想,在Model 经常会遇到后验过于复杂无法求解的问题 。流模型绕开了这个部分,对更简单的分布建模,然后建立原分布与简单分布之间的映射关系 。个人觉得Stein 变分梯度下降就有点流模型的影子在里面 。在建立映射关系是用到了重要的 of,并之后介绍了变化后的目标函数和梯度求解方法 。