我们常常遇到这样的问题:给出一系列测量值,如何确定隐式参数?以配色为例,即给出标准样的光谱反射率曲线,如何确定配色配方。通常,从参数到测量空间的前向过程是明确定义的函数,而反问题是模糊的,因为一个测量值可以映射到多个不同的参数集。有一种类型的神经网络适合解决这类问题——即可逆神经网络 INN。传统的神经网络会尝试直接解决这类问题,而 INN 则能够与明确定义的前向过程一起学习它,使用额外的隐式输出变量来捕获正向过程中可能丢失的信息。
一、什么是可逆神经网络
对于一些问题,研究人员建立了复杂的理论模型,用于实现隐式参数到可测量值的映射,这种映射称之为前向过程。逆向过程即根据测量值得到隐式参数,这也是实际需要解决的问题。但是逆向过程难以解决,因为在前向过程中丢失了一些关键信息。
如果直接用传统神经网络去训练逆向过程,则效果会很受限,因为逆向过程为一对多映射。神经网络训练出的模型,最好情况是识别最可能的解决方案;最差情况是采用多种解决方案的平均值。
INN 有三个特征:(i)从输入到输出的映射是双射的,即它的逆存在(ii)正向和反向映射都是有效可计算的(iii)映射具有易处理的雅可比行列式,因此概率可以通过变量公式明确转换。
标准 NN 直接对逆向过程进行训练,但其需要一个监督损失(SL)项,来区分真正的 x 与预测的 x(我们可以暂时把 SL 理解为一个确定的代价函数),而 y->x 这种一对多映射使得传统 NN 受到很大限制。INN 只对前向过程使用 SL,而由于并没有一个确定的 x 值,因此预测的 x 属于无监督损失(USL),需要遵循之前的 p(x);另外,潜在变量 z 需要服从高斯分布,也是属于 USL。
由于在前向过程中会丢失一些信息,因此引入了额外的潜在输出变量 z,被训练去抓获与 x 有关的但并未包含在 y 内的信息。此外,需要训练网络根据高斯分布对 p(z) 进行调整。即,p(x|y) 被调整为一个确定的函数 x = g(y,z),这个函数将已知的分布 p(z) 在满足 y 的情况下转换到 x 空间。
二、INN 详解
- 问题重述
如果 x∈RD,y∈RM,那么由于前向过程中信息的丢失,y 的固有维数 m 一定小于 D,即使 M 可能大于 D。
我们希望根据模型 q(x|y) 来预测 ρ(x|y);因此引入了隐式变量 z 并将 q(x|y) 以 g(y,z;θ) 的方式呈现:
相应地,其前向过程也可以由 f(x;θ) 表示:
双向训练 f 和 g 可以避免出现在 cGAN 和贝叶斯神经网络中的问题。由于 INN 要求 f = g-1,所以两边的维度(不论是固有维度还是显示维度)要相同。所以要求变量 z 的维度 K = D - m,如果导致了 M + K > D,则需要用 M+K-D 维的 0 向量补齐 x 向量。
结合以上所有定义,我们的网络将 q(x|y) 表示为:
- 可逆网络的架构
可逆神经网络的基本构建块是Real NVP模型推广的仿射耦合层。它的工作原理是将输入数据分成两部分 u1、u2,这两部分由学习函数 si,ti(它们可以是任意复杂的函数,且函数本身不需要是可逆的)转换并以交替方式耦合:
输出即是 [v1,v2] 的连接。用公式表示为:
而给定输出,也可以得到其逆过程:
用公式表示为:
一个深度可逆网络就是由一系列上述构建块组成。另外,对这个基本架构还有两个拓展点:
- 如果维度 D 相对较小,但却需要学习一个很复杂的转换,最好对网络的输入和输出都进行相同数量的 0 填充。这并不会改变输入和输出的固有维度,但使得网络内部层可以以一种更灵活的方式将数据嵌入到更大的表示空间。
- 可以在构建块之间插入置换层,用于随机打乱下一层的输入元素,这使得 u = [u1,u2] 的分割在每一层都不同,也因此促进了独立变量间的交互。
- 网络的双向训练
INN 同时降低输入和输出域的误差,使得训练更加高效。因此,INN 交替执行前向和后向迭代,在更新参数之前积累双向梯度。
对于前向迭代,我们计算模型输出 yi = s(xi) 与网络预测 fy(xi) 之间的偏差,损失记为 Ly(yi,fy(xi)),Ly 可以是任意有监督的损失,如回归问题中的平方误差或分类问题中的交叉熵。
对于潜在变量 z,我们计算模型输出 p(y = s(x)) = p(x) / |Js| 和潜在变量 p(z) 的边际分布的乘积与网络输出 q(y = fy(x),z = fz(x)) = p(x) / |Jyz| 间的偏差,记为 Lz(p(y)p(z),q(y,z)). Lz 确保了两件事:首先,生成的 z 必须服从需要的正太分布 p(z);其次,y 和 z 是相互独立的,且不会涵盖同样的信息两次。Ly 和 Lz 都属于前向迭代过程中的损失。
Ly 和 Lz 理论上已经足够,但 y 和 z 之间的少量剩余依赖在复杂问题实例中仍然存在,这导致 q(x|y) 偏离真正的 p(x|y)。为避免这种情况,还额外定义了输入端的损失 Lx,Lx(p(x),q(x)) 表示了 p(x) 与后向预测分布 q(x) = p(y = fy(x)) p(z = fz(x)) / |Jx| 间的偏差。
- 最大平均误差法
Lx 与 Lz 都通过最大平均误差法 MMD 实现。MMD是一种基于内核的方法,用于比较只能通过样本访问的两个概率分布。论文中采用了以下方法取得了最佳效果:
三、INN 相关实验
- 在人工数据上的实验
这个实验的前向过程是根据点的二维坐标,判断其所属的模式,逆向过程则是根据所属模式标记出其二维坐标。训练结果如下:
可以看出,如果只有前向训练(Ly,Lz),会捕获已知关系,但对于 x 空间的未填充区域却有较大偏差(所以Setup1效果较好但Setup2和Setup3这种有集合共享标签的情况效果较差);而如果只有后向训练(Lx),则会学习正确的 x 分布,但丢失了已知信息。
使用 cGAN 训练,需要更多的隐式变量和更复杂的结构,且 cGAN 和 INN 间的差异不仅是因为使用了不同的损失函数,证明了 INN 优于 cGAN。而最后的 dropout 网络只使用 y 作为输入,由于其没有使用任何隐式变量,它丢失了 y 中所未包含的所有信息。
分析隐式空间的结构,即了解模型在给定 y 的情况下如何利用 z。对于隐式空间中的每个坐标 zi(在这个实验中,z 是二维变量),我们使用 [y,zi] 作为逆向过程的输入,得到 xi',然后给该点着色——色调取决于 xi' 在 x 空间更接近的模式颜色,亮度取决于 xi' 离那个模式的距离。
- INN 在医学上的应用
在医学上,肿瘤会使得血氧饱和度发生变化,从而导致组织表面的反射率发生变化。组织表面的反射率可通过多光谱相机测量;也可以根据包含血氧饱和度、血液体积分数、散射强度、各向异性指数及组织厚度的模型模拟得到。然而,根据组织表面反射率,却难以得到重要的功能特征,因为不同的组织参数可能得到同样的组织反射率。也有尝试过直接对逆向过程建模,但模型的预测效果并不理想。
就精确度而言,INN 的 MAP(maximum of the posterior)方法优于其他方法。如果不考虑 Lx 损失,对精确度影响不大;但如果不考虑 Ly、Lz,网络就彻底失败了。在给定 y 的情况下,INN 对 p(x|y) 的预测结果如下:
橙色区域为 INN 预测得到的 p(xi|y);灰色区域为整个数据集的 p(x) 分布;虚线是与测试集中的 y 相关联的实际的 x 值。
从上述结果中也可以看出两点:
- INN 对各向异性指数和组织厚度的预测与实际值关联性较小,这是因为 y 中并没有包含这两个参数相关的信息;
- 血液密度与散射强度的预测结果呈现相关性,这是由物理性质决定的,随着血液密度增加,散射会增强。
- INN 在天体物理学上的应用
这个例子就不详细讲述了,和医学应用差不多,效果也还是可以的: