Cleo Lv2

流模型一: NICE

NICE: Non-linear Independent Components Estimation是ICLR 2015 Workshop收录的论文,这篇文章是流模型的基石。流模型的本质是利用变量变换公式通过极大似然估计学习一个非线性可逆变换,从而将数据的分布变换到一个先验分布上,且该先验分布的随机变量的各维度相互独立,这个先验分布我们通常使用标准高斯分布。

假设数据样本$x \in X$,$x \in \mathbb{R}^D$,$x$的分布可以写成如下形式:

$h = f\left(x\right)$为一个可逆变换,即$x = f^{-1}\left(h\right)$。$p_X\left(x\right)$为数据样本集$X$的分布,$p_H\left(f\left(x\right)\right)$为先验分布,其各分量相互独立,$\frac{\part f\left(x\right)}{\part x}$为$f$对$x$的雅克比矩阵,$\rm det$为求矩阵的行列式。基于上述公式,我们采用极大似然估计求解$f\left(x\right)$,即

根据优化目标,可以得到:

NICE的目标就是使得雅克比行列式和$f^{-1}$好求。

通用耦合层 General Coupling Layer

$x$有维度$D$,我们将$x$按维数分成两部分$x_1 \in \mathbb{R}^{d}$和$x_2 \in \mathbb{R}^{D-d}$,$m$为一个定义在$\mathbb{R}^d$上的函数,通用耦合层定义为:

$g : \mathbb{R}^{D-d} \times m\left(\mathbb{R}^d\right)\to \mathbb{R}^{D - d} $。其逆运算为:

如此一来,雅克比矩阵变成了:

三角矩阵的行列式为对角线元素之和,因此${\rm det} \frac{\part f\left(x\right)}{\part x} = \frac{\part y_2}{\part x_2}$。

加性耦合层 Adaptive Coupling Layer

加性耦合层如下:

因此,雅克比行列式为1。且其逆运算为:

只考虑上面单个耦合层变换,并不能获得很好的非线性,因此将多个简单变换进行组合,获得更强的非线性:

由链式法则可知,多个加性耦合层组合后$f$对$x$的雅克比行列式仍为1。

由于其中一部分为恒等变换,如果耦合的顺序不变,整个耦合的第一部分仍为恒等变换,信息没有充分混合,因此需要引入交叉耦合,充分混合信息,以达到更强的非线性。

尺度变换层 Rescaling

由于$f$为可逆变换,因此$x$与$h$的维度一致,$h$是一个先验分布,可以认为它遍布整个$D$维空间,虽然$x$也同样具有$D$维,但它未必就真能遍布整个$D$维空间。流这种基于可逆变换的模型,天生就存在比较严重的维度浪费问题:输入数据明明都不是D维流形,但却要编码为一个D维流形。

为了解决这个问题,NICE引入尺度变换层,对编码出来的特征的每个维度都做尺度变换,即

$s = {s_1, s_2, \dots, s_D}$。$s$也是一个要优化的参数向量,且其各分量非负,因此,雅克比行列式等于$\sum_{i=1}^D s_i$,优化目标为最大化:

假设$p_H\left(h\right)$为正态分布,引入$s$相当于引入了方差作为参数,$s_i = \frac{1}{\sigma_i}$,$s_i$越大,方差越小,该维度的变化越小,如果方差为0,那么该特征就恒为均值0,该维度的分布坍缩为一个点,于是这意味着流形减少了一维。

特征解耦

设置先验分布为各分量独立:

实际上实现学习到一个好的特征,理想情况下各个维度之间应该是相互独立的,这样实现了特征的解耦,使得每个维度都有自己独立的含义。