正则化潜变量能量基礎模型

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$
🎙️ Yann LeCun

正则化潜变量能量基礎模型

具有潜在变量的模型能够生成预测分布 $\overline{y}$,這分佈是基于观察输入$x$和附加上的潜在变量$z$所生成的。 基于能量基礎模型还可以包含潜在变量:


图1: 具有潜在变量的能量基础模型的示例

请看之前的讲座笔记来了解更多的细节。

不幸地,如果潜在变量$z$在生成最后的预测输出$\overline{y}$中有太多表达力或影响力,那在适当的选择$z$后,输入$x$会完美地重建回应有的形态,也就是每一个正是的输出$\overline{y}$。这是说出当能量函数在所有地方都是0,因为能量会在推理中在$y$和$z$上被优化。

一个自然的解决方法是限制潜在变量$z$的信息容量。其中一个做法是正则化潜在变量:

\[E(x,y,z) = C(y, \text{Dec}(\text{Pred}(x), z)) + \lambda R(z)\]

这个方法会限制空间$z$的容量,也就会选一个细小的值和这些个会反过来控制$y$空间中只有小能量的地方,而这个Lambda的值会控制这个限制行为。一个有用的$R$的例子是$L_1$规范,也就是在一个有效的维度下,所有地方都是可以可微和近似的。在限制它的$L_2$规范时对$z$加上噪声的话,那就能限制它的信息内容(VAE)。

稀疏编码

稀疏编码是一个无条件正规化潜在变量式能量基础模型,也就是本质上是尝试去用一个分段线性函数对数据进行近似。

\[E(z, y) = \Vert y - Wz\Vert^2 + \lambda \Vert z\Vert_{L^1}\]

$n$维度向量$z$会有一个非零分量的最大的数字$m « n$。而每一个$W$z会是$W$的列中$m$的扩张中的部份。

在每个优化步骤之后,在$W$的列以$L_2$规范式来加起来后,矩阵$W$和潜在变量$z$就会被归一化。这确保$W$和$z$没有发散到无限和0。

FISTA


图2:FISTA计算图

FISTA(快速ISTA)是一个算法,它用交替地优化两个项$\Vert y - Wz\Vert^2$ 和 $\lambda \Vert z\Vert_{L^1}$来优化相对于$z$的优化稀疏编码能量函数$E(y,z)$。我们初始化$Z(0)$和根据以下规则来反复地更新$Z$:

\[z(t + 1) = \text{Shrinkage}_\frac{\lambda}{L}(z(t) - \frac{1}{L}W_d^\top(W_dZ(t) - y))\]

当中的部份 $Z(t) - \frac{1}{L}W_d^\top(W_dZ(t) - Y)$ 是用在 $\Vert y - Wz\Vert^2$ 项的一个梯度步。 这个$\text{缩小}$ 函数之后移动数值到0,也就优化 $\lambda \Vert z\Vert_{L_1}$ 项. Shrinkage:缩小

LISTA

FISTA 用在高维度数据而又大量的集时(比如图片)计算上是很昂贵。一个更有效率的做法是改為训练一个网路去预测最佳的潜在变量$z$:


图3: 带有潜在变量编码器的能量基础模型

这个架构的能量就包含了附加项,这附加项会测量预测出来的潜在变量$\overline z$和最佳潜在变量$z$的不同:

\[C(y, \text{Dec}(z,h)) + D(z, \text{Enc}(y, h)) + \lambda R(z)\]

我们可以更进一步定义

\[W_e = \frac{1}{L}W_d\] \[S = I - \frac{1}{L}W_d^\top W_d\]

然后就写

\(z(t+1) = \text{Shrinkage}_{\frac{\lambda}{L}}[W_e^\top y - Sz(t)]\) Shrinkage:缩细

这个更新规则可以被解释为循环网络,也就建议我们改为学习一个参数$W_e$,而它反复地判断潜在变量$z$。网路是以一个固定的时间长度,长度为$K$,这个时间长度和$W_e$的梯度都是用标准的时间上反向传播( standard backpropagation-through-time)。这个训练后的网路会比FISTA算法花费更少的迭代(iteration)生成一个好的$z$。


图4: LISTA以一个展开循环网络中的时间点。

稀疏编码示例

当一个有256维度潜在变量向量的稀疏编码系统是用在MNIST手写数字中时,系统就会学到一个256划的集合,它能是线性组合来仿造出训练集(差不多整个训练集)。稀疏正则化器确保它们由很细的数字开始被仿造。


图5: MNIST上的稀疏编码。每一张图都是在W列中学出了东西的。

当稀疏编码被在一些自然图像中用上时,学到的特征就是gabor过滤器,也就是朝向边缘的。这些特征类似于在动物视觉系统早期学习到的特征。

卷积稀疏编码

假设,我们有一个图片和图片的特征图(feature map)($z_1, z_2, \cdots, z_n$)。然后我们能用核心$K_i$来卷积($*$) 每一个特征图。之后就重建造法就能简单的如以下计算出来:

\[Y=\sum_{i}K_i*Z_i\]

这是跟原本的卷积稀疏编码有点不一样,那个重建造法是以这样来完成的: $Y=\sum_{i}W_iZ_i$。在正常的卷积稀疏编码,我们有一个列的加权和,它的权是$Z_i$的系数。在卷积稀疏编码中,它还是一个线性运算,但字典矩阵现在是一些特征图(feature map)和我们以每一个核心和加起来的结果来卷积每一个特征图。

自然图像上的卷积稀疏编码


图6 获得过滤器和基础函。数线性卷积解码器。

编码器和解码器各自的过滤器都十分相似。解码器人简单地是一个卷积跟着一些非线性,而且一个对角层来改变它的大小。而代码约束上有着稀疏性。解码器只是一个卷积线性解码器和这里的重建是一个平方误差。

所以,如果我们假设只有一个过滤器(filter),那么它只是一个环绕中央的过滤器。有着四个过滤器,就有一些奇形怪状的过滤器。 4个过滤器,我们得到有方向性的边(水平和垂直);每个过滤器给出2个极性。而8个过滤器,我们就得到八个不同方向性的边。 16个,我们就有更多沿中心出发的方向性物。随着我们继续增加过滤器,我们就有更多类形的过滤器,我们也得到不同方向性的格栅探测器,包括中心周围和其他。

这个现象看上去很有趣,因为它和我们在视觉皮层中观察到的有点像。所以这指示出我们以完全不受监督的方式下能学到很好的特征。

作为附带使用,如果我们用这些特征,然后将它们输入到卷积网中,之后在一些任务上训练它们,那我们不一定有比从头开始训练图像网路的成绩有更好的成绩。相反的,是有些实例表示,它可以帮助提高性能。比如,一旦样本数量不足或太少类别,那样去以纯监督方式进行训练,我们就只有退化了的特征。


图7 在彩色图像上的卷积稀疏编

上方的图是另一个在彩图上的例子。解码核心(右边那个)是9乘9的大小。这核心是被以卷积性地用在整个图片。左图是来自编码器的稀疏代码。而$z$向量空间是十分稀疏的,它只有数个只是白和黑的分量。

可变自动编码器

可变自动编码器的架构是十分相似于正则化潜在变量能量基础模型,但没有其稀疏性。反而,代码的信息内容受噪声的限制


图8: 可变自动编码器的架构

潜在变量z是没有以相对$z$来降低能量函数来被计算出来。反而能量函数被视为是根据一个分布,这个分布的对数就是和${\overline z}$有关系的代价值,然后就是根据这个分布来随机地采样$z$的。这个分布是一个有用上${\overline z}$的平均值的高斯分布,这样就造成出将高斯噪声添加到${\overline z}$上。

这个加上了高斯噪声的代码向量能被看成一些很模糊的球,就如图9(a)。


(a) 原始的模糊球

(b) 由于没有正则化的能量最小化而导致的球运动
图9: 能量最小化对模糊球的影响

这个系统尝试去令代码向量${\overline z}$有多大得多大,那样$Z$(噪声)就有多细得多细。这结果就是模糊球由起点飘开,就如图9(b)那样。另一个原因为什么系统尝试去令代码向量多大得多大,就是为了防止模糊球重叠起来,也就令解码器对不同的样本进行重建时感到混乱。

但如果我们去令模糊球聚集在数据流形,如果有数据流形的话。所以,代码向量们就会被正规化到只有平均值和方差都接近零。做成这个的话,我们就要用弹簧来把它们连接到起源点,就如图10所示。


图10: 图像版有弹簧的正则化产生的影响

弹簧的力道决定模糊球有多近起源点。如果弹簧很弱,那模糊球就会由起源点飞开。而如果太强,那它们就在起原点合并起来,导致很高的能量值。为了防止这个的话,系统就只会当相应的样本是相似时,会让球重叠起来。

可能的做法是改写模糊球的大小。惩罚函数会限制这做法,惩罚函数会试图令方差接近1,所以当球合拼起来时,大小既不会太大也不会太小。


📝 Henry Steinitz, Rutvi Malaviya, Aathira Manoj
Jonathan Sum(😊🍩📙)
23 Mar 2020