最近在积累,好久没有写文章回顾一下了,近来我迷上了可逆网络,一开始是从CrevNet入坑的,这是一篇关于用了可逆网络的视频预测的方法。
CrevNet网络结构其实简单的解释这个模型就是在预测生成模型之前把图片编码了一遍,如下图所示:
CrevNet简化图其中比较神奇的地方就是这个编解码器,这个编解码器就是由可逆网络的各个可逆模块构成的,同一个网络权重,既可以编码也可以解码。需要了解可逆网络最常用的设计,就能清楚地知道图片是如何编码成不同的形态,又能无损的解码回来。
可逆编解码可逆编解码过程像是最常见的autoencoder,是由两个神经网络构成的,一个编码器,一个解码器。这里我介绍一种最简单的可逆编解码形式,如上图。
右侧方向为编码,假如数据一分为二
,其编码公式如下:
其解码公式如下:
我们深入浅出的说,这里编码过程和解码过程很容易看懂,只要保留一部分数据其实就可以复原另一部分。这里的F可以任意复杂函数,可以是卷积,或者其他网络。
但是其中的原理是非常深奥的,从一系列的flow-based模型,NICE,RealNVP,Glow的提出,可以看到他们在生成领域的效果非常接近GAN模型了,但是确实还欠缺了一些。
RealNVP的效果在生成效果上他的不足主要是对模型限制很大,为什么这么说,这就要指出可逆网络的性质:
网络的输入输出shape必须一致(CxHxW,乘积一致)网络的雅可比行列式不为0为什么神经网络会与雅可比行列式有关系?这里我借用李宏毅老师的ppt,想看视频的可以到b站上看。
ChangeofVariableTheorem简单的来讲就是
,他们的分布之间的关系就变为
,
又因为有
,所以
这个网络的雅可比行列式不为0才行。
顺便提一下,flow-basedModel优化的损失函数如下:
flow-basedModelLoss其实这里跟矩阵运算很像,矩阵可逆的条件也是矩阵的雅可比行列式不为0,雅可比矩阵可以理解为矩阵的一阶导数。
回到一开始的可逆网络:
它的雅可比矩阵为:
其行列式为1。
可逆形式但是有一些可逆网络的论文,算出来的的雅可比矩阵并不是恰好为1,很难证明恒不等于0,但是仍然有用的设计方法,如[TheReversibleResidualNetwork:
BackpropagationWithoutStoringActivations](
当前时间: