NICE: Non-Linear Independent Components Estimation

/ by GuoWY / 论文来源: https://arxiv.org/pdf/1410.8516.pdf

总 结

  • 简单粗暴的生成方法需要高超的数学技巧

      这种一堆数学算法的paper要是没有什么好的解析文章的话,看起来是真的很费力的,所以,先推荐一篇我觉得写得算是比较明白易懂的解析文章:

      【好文推荐】细水长flow之NICE:流模型的基本概念与实现

      NICE这种基于流的生成模型,直接寻找原始分布到特定分布的转换的求逆,从而给定特定分布能输出多样的生成分布,理论上来说它希望做出一个能拟合任意分布的万能分布拟合器,设计思路简单但充满着挑战性。首先得确定一个函数形式,它需要具备尽可能拟合很多复杂分布的能力,文章中选用的是条件高斯分布和狄拉克分布的积分形式。另外这个选用的函数得具备两个性质,一个是可逆并且易于求逆函数,另外一个是转换过程中多出的雅可比行列式需容易计算。文章中采用的方法是耦合+尺度变换+特征解耦,不过NICE这篇文章的耦合方式是加性耦合,后来的RealNVP中改用了更灵活的仿射耦合。先不提耦合方式的好坏,一个重要的问题是为什么采用耦合+尺度变换+特征解耦的方式能够满足上述的函数需要具备的两个性质?其实我觉得这就是一些数学变换的技巧。在加性耦合当中,被变换元素x1,x2的系数都是1,再对x2补上一个任意的其他运算,已经不产生影响了, 因为变换的雅可比矩阵已经是一个三角阵,且对角线全部为1,这样就使得行列式可逆并且逆变换简单易算。文章中还用到了把多个加性耦合层交错拼在一起形成一个流,去增强非线性拟合的能力。然后尺度变换层是为了解决flow这种基于可逆变换的模型天生就存在的比较严重的维度浪费问题,通过引入一个s向量识别维度的重要程度,最终达到压缩流形的作用。最后特征解耦,是对先验分布为各分量独立的高斯分布的编码特征的解耦,它的理想情况是各个维度之间是相互独立的。

       当然上述的这些文字都是很浅显的介绍,具体的数学原理和方法请参见论文及解析。为了能更直观地理解NICE模型和相关技巧,我作了一张图:

      

       这张图就是对上述解释的直观说明了,最后来谈一谈我关于NICE的一些看法。我们不妨把NICE和GANs以及VAE做一个比较,不同于NICE的目的是要打造一个“万能分布拟合器”,后两者更倾向于实现一个“万能函数拟合器”,直接打造一个端到端的拟合网络通路。说实话后两者的方式较为的巧妙和易于实现,它们避开了生成模型的概率计算,采用优化上界或对抗训练的方式无限逼近真实的生成模型,现阶段也取得了比NICE好很多的生成效果。但是,后两者本质上还是属于近似模型,他们取代不了像NICE这样真正直面概率分布的生成模型。我觉得现阶段NICE超越不了后者的主要原因,还是在于当下人们掌握的数学技巧,还不能真正从分布上去拟合数据。如果存在这样的技巧的话,像NICE这样的模型一定无可匹敌。还有以个人经验来说,我觉得GANs不如人们所说的那么强大,它仅仅是在生成的逼真效果方面厉害,但它对于模型概率分布的学习是很初级的,这意味着输入数据需要严格符合训练数据的概率分布,否则GANs的生成结果就会糟糕。但是,在基于流的生成模型(例如GLOW)上,我看见了很强的泛化学习能力。因此我希望,有朝一日像NICE这样的生成模型,能够愈发成熟可靠,从而解决GANs上的不足之处。

      

评 论