33 流模型

1
一小节中讲到了Model(LVM),VAE 。其主要思想就是将隐变量扩充 在上 高维连续的分布,来增强模型的表达能力 。而 LVM 模型中的核心困难是 P(X) 计算不出来,因为P ( X ) = ∫ Z P ( X ∣ Z ) P ( Z ) d Z , P(X)=\int_{Z} P(X \mid Z) P(Z) d Z, P(X)=∫Z?P(X∣Z)P(Z)dZ, 而Z Z Z 的维度过高P ( X ) P(X) P(X) 算不出来 。而根据公式:
P ( Z ∣ X ) = P ( Z ) P ( X ∣ Z ) P ( X ) P(Z \mid X)=\frac{P(Z) P(X \mid Z)}{P(X)} P(Z∣X)=P(X)P(Z)P(X∣Z)?
所以导致P ( Z ∣ X ) P(Z \mid X) P(Z∣X) 无法计算 。而VAE ? \{VAE} VAE 那章介绍了近似推断的方法, 使用一个简单分布Q ? ( Z ∣ X ) Q_{\phi}(Z \mid X) Q??(Z∣X) 来近
似P ( Z ∣ X ) , P(Z \mid X), P(Z∣X), 其中还使用重参数化技巧来用一个神经网络来代替分布 。而在 VAE 中通过优化变分下界 ELBO 来达到最终优化的目的,而不是直接对 Log 似然函数进行 优化 。所以当然会有误差了 。那么这将启发我们,可不可以绕过这个的 P(Z),使模型变
得。
2 Flow based Model
什么是flow model 呢?首先用一张图来进行表示:
可以用一个简单的例子来简单的介绍 Flow model 。X 可以代表是当前的自己,人是比较复杂的, 所以X → P X ( X ) X \ P_{X}(X) X→PX?(X) 计算非常困难 。而一般昨天的我Z k → P Z k ( Z k ) , Z_{k} \ P_{Z_{k}}\left(Z_{k}\right), Zk?→PZk??(Zk?), 比今天要简单一点,但是很有可 能,昨天的我依然很复杂,无法计算 。那么,就不但的往前推,到了刚出生的时候 Zo,这时肯定是非常筒单的,Z 0 → P Z 0 ( Z 0 ) Z_{0} \ P_{Z_{0}}\left(Z_{0}\right) Z0?→PZ0??(Z0?) 婴儿的世界里是非黑即白的,此时的分布很筒单,可以被假设性N ( 0 , I ) \{N}(0, I) N(0,I)。而 这个过程:
P Z 0 ( Z 0 ) → P Z 1 ( Z 1 ) → P Z 2 ( Z 2 ) ? → P Z k ( Z k ) → P X ( X ) P_{Z_{0}}\left(Z_{0}\right) \ P_{Z_{1}}\left(Z_{1}\right) \ P_{Z_{2}}\left(Z_{2}\right) \cdots \ P_{Z_{k}}\left(Z_{k}\right) \ P_{X}(X) PZ0??(Z0?)→PZ1??(Z1?)→PZ2??(Z2?)?→PZk??(Zk?)→PX?(X)
就被称为“流” 。因为流模型中初始分布是很簡单的 。极大似然估计中求的是:arg maxP ( X ) P(X) P(X)。那么下 一个问題就是如何建立 X 和 Z 之间的关系,将a r g m a x P ( X ) arg max P(X) (X) 转换成求关于P ( Z o ) P(Z_{o}) P(Zo?) 的函数 。
3of
假设X = f ( Z ) , Z , X ∈ R p X=f(Z), Z, X \in \{R}^{p} X=f(Z),Z,X∈Rp。而Z ~ P Z ( Z ) , X ~ P X ( X ) ; f Z \sim P_{Z}(Z), X \sim P_{X}(X) ; f Z~PZ?(Z),X~PX?(X);f 是一个光滑可逆的函数 。
那么可以得到:

33 流模型

文章插图
∫ Z P Z ( Z ) d Z = 1 = ∫ X P X ( X ) d X \int_{Z} P_{Z}(Z) d Z=1=\int_{X} P_{X}(X) d X ∫Z?PZ?(Z)dZ=1=∫X?PX?(X)dX
根据不定积分的性质可以得到:
∣ P Z ( Z ) d Z ∣ = ∣ P X ( X ) d X ∣ P X ( X ) = ∣ d Z d X P Z ( Z ) ∣ \begin{array}{c} \left|P_{Z}(Z) d Z\right|=\left|P_{X}(X) d X\right| \\ \\ P_{X}(X)=\left|\frac{d Z}{d X} P_{Z}(Z)\right| \end{array} ∣PZ?(Z)dZ∣=∣PX?(X)dX∣PX?(X)=∣∣?dXdZ?PZ?(Z)∣∣??
而X = f ( Z ) X=f(Z) X=f(Z) 且f f f 是光滑可逆的,所以Z = f ? 1 ( X ) , Z=f^{-1}(X), Z=f?1(X), 那么有
P X ( X ) = ∣ ? f ? 1 ( X ) ? X ∣ P Z ( Z ) P_{X}(X)=\left|\frac{\ f^{-1}(X)}{\ X}\right| P_{Z}(Z) PX?(X)=∣∣∣∣??X?f?1(X)?∣∣∣∣?PZ?(Z)
但是实际上 Z 和 X 都是高维变量,所以? f ? 1 ( X ) ? X \frac{\ f^{-1}(X)}{\ X} ?X?f?1(X)? 是一个。熟悉矩阵的朋友应该知道,矩阵代表了一个变换,而矩阵行列式的值则代表了变换的尺度 。而在计算中我们关注的是矩阵变换的尺度,所以,
P X ( X ) = ∣ det ? ( ? f ? 1 ( X ) ? X ) ∣ P Z ( Z ) P_{X}(X)=\left|\{det}\left(\frac{\ f^{-1}(X)}{\ X}\right)\right| P_{Z}(Z) PX?(X)=∣∣∣∣?det(?X?f?1(X)?)∣∣∣∣?PZ?(Z)