乐读窝

深度学习

乐读窝 > 文学理论 > 深度学习

13.4 稀疏编码

书籍名:《深度学习》    作者:伊恩.古德费洛



稀疏编码(sparse  coding)(Olshausen  and  Field,1996)是一个线性因子模型,已作为一种无监督特征学习和特征提取机制得到了广泛研究。严格来说,术语“稀疏编码”是指在该模型中推断h值的过程,而“稀疏建模”是指设计和学习模型的过程,但是通常这两个概念都可以用术语“稀疏编码”描述。

像大多数其他线性因子模型一样,它使用了线性的解码器加上噪声的方式获得一个x的重构,就像式(13.2)描述的一样。更具体地说,稀疏编码模型通常假设线性因子有一个各向同性精度为β的高斯噪声:

分布p(h)通常选取为一个峰值很尖锐且接近0的分布(Olshausen  and  Field,1996)。常见的选择包括可分解的Laplace、Cauchy或者可分解的Student-t分布。例如,以稀疏惩罚系数λ为参数的Laplace先验可以表示为

相应地,Student-t先验分布可以表示为

使用最大似然的方法来训练稀疏编码模型是不可行的。相反,为了在给定编码的情况下更好地重构数据,训练过程在编码数据和训练解码器之间交替进行。稍后在第19.3节中,这种方法将被进一步证明为是解决最大似然问题的一种通用的近似方法。

对于诸如PCA的模型,我们已经看到使用了预测h的参数化的编码器函数,并且该函数仅包括乘以权重矩阵。稀疏编码中的编码器不是参数化的编码器。相反,编码器是一个优化算法,在这个优化问题中,我们寻找单个最可能的编码值:

结合式(13.13)和式(13.12),我们得到如下的优化问题:

其中,我们扔掉了与h无关的项,并除以一个正的缩放因子来简化表达。

由于在h上施加L1范数,这个过程将产生稀疏的h∗(详见第7.1.2节)。

为了训练模型而不仅仅是进行推断,我们交替迭代关于h和W的最小化过程。在这里,我们将β视为超参数。我们通常将其设置为1,因为它在此优化问题的作用与λ类似,没有必要使用两个超参数。原则上,我们还可以将β作为模型的参数,并学习它。我们在这里已经放弃了一些不依赖于h但依赖于β的项。要学习β,必须包含这些项,否则β将退化为0。

不是所有的稀疏编码方法都显式地构建了一个p(h)和一个p(x|h)。通常我们只是对学习一个带有激活值的特征的字典感兴趣,当特征是由这个推断过程提取时,这个激活值通常为0。

如果我们从Laplace先验中采样h,h的元素实际上为0是一个零概率事件。生成模型本身并不稀疏,只有特征提取器是稀疏的。Goodfellow  et  al.(2013f)描述了不同模型族中的近似推断,如尖峰和平板稀疏编码模型,其中先验的样本通常包含许多真正的0。

与非参数编码器结合的稀疏编码方法原则上可以比任何特定的参数化编码器更好地最小化重构误差和对数先验的组合。另一个优点是编码器没有泛化误差。参数化的编码器必须泛化地学习如何将x映射到h。对于与训练数据差异很大的异常x,所学习的参数化编码器可能无法找到对应精确重构或稀疏的编码h。对于稀疏编码模型的绝大多数形式,推断问题是凸的,优化过程总能找到最优编码(除非出现退化的情况,例如重复的权重向量)。显然,稀疏和重构成本仍然可以在不熟悉的点上升,但这归因于解码器权重中的泛化误差,而不是编码器中的泛化误差。当稀疏编码用作分类器的特征提取器,而不是使用参数化的函数来预测编码值时,基于优化的稀疏编码模型的编码过程中较小的泛化误差可以得到更好的泛化能力。Coates  and  Ng(2011)证明了在对象识别任务中稀疏编码特征比基于参数化的编码器(线性-sigmoid自编码器)的特征拥有更好的泛化能力。受他们的工作启发,Goodfellow  et  al.(2013f)表明一种稀疏编码的变体在标签极少(每类20个或更少标签)的情况中比相同情况下的其他特征提取器拥有更好的泛化能力。

非参数编码器的主要缺点是在给定x的情况下需要大量的时间来计算h,因为非参数方法需要运行迭代算法。在第14章中讲到的参数化自编码器方法仅使用固定数量的层,通常只有一层。另一个缺点是它不直接通过非参数编码器进行反向传播,这使得我们很难采用先使用无监督方式预训练稀疏编码模型,然后使用监督方式对其进行精调的方法。允许近似导数的稀疏编码模型的修改版本确实存在但未被广泛使用(Bagnell  and  Bradley,2009)。

像其他线性因子模型一样,稀疏编码经常产生糟糕的样本,如图13.2所示。即使当模型能够很好地重构数据并为分类器提供有用的特征时,也会发生这种情况。这种现象发生的原因是每个单独的特征可以很好地被学习到,但是隐藏编码值的因子先验会导致模型包括每个生成样本中所有特征的随机子集。这促使人们开发更深的模型,可以在其中最深的编码层施加一个非因子分布,与此同时也在开发一些复杂的浅度模型。

图13.2 尖峰和平板稀疏编码模型上在MNIST数据集训练的样例和权重。(左)这个模型中的样本和训练样本相差很大。第一眼看来,我们可能认为模型拟合得很差。(右)这个模型的权重向量已经学习到了如何表示笔迹,有时候还能写完整的数字。因此这个模型也学习到了有用的特征。问题在于特征的因子先验会导致特征子集合随机的组合。一些这样的子集能够合成可识别的MNIST集上的数字。这也促进了拥有更强大潜在编码分布的生成模型的发展。此图经Goodfellow  et  al.(2013f)允许转载