稀疏编码和自动编码器有什么区别?


35

稀疏编码被定义为学习一组超完备的基础向量来表示输入向量(<-为什么要这样做)。稀疏编码和自动编码器有什么区别?什么时候使用稀疏编码和自动编码器?


1
稀疏编码实际上构成了一种特殊类型的自动编码器,称为稀疏自动编码器。因此,您可以视情况将稀疏编码视为自动编码器的子集。
HelloGoodbye

Answers:


34

可以通过查看模型来找到差异。首先让我们看一下稀疏编码。

稀疏编码

稀疏编码将目标最小化 | W H X | | 2 2重建术语 + λ | | H | | 1稀疏项 ,其中W是基数矩阵,H是代码矩阵,X是我们要表示的数据矩阵。λ实现了稀疏性与重建之间的权衡。请注意,如果给定H,则W的估计

Lsc=||WHX||22reconstruction term+λ||H||1sparsity term
WXλHW则通过最小二乘可轻松

在开始的时候,我们没有但是。然而,存在许多可以解决上述关于H的目标的算法。实际上,这就是我们的推理方式:如果我们想知道属于看不见的xh,就需要解决一个优化问题HHhx

自动编码器

自动编码器是一系列无监督的神经网络。它们有很多,例如深层自动编码器或附加了不同正则化技巧的编码器,例如降噪,压缩,稀疏。甚至存在概率性变量,例如生成随机网络或变分自动编码器。它们最抽象的形式是 但我们会随着一个更简单的一个去现在: 大号AE = | | w ^ σ w ^ Ť X

D(d(e(x;θr);θd),x)
其中 σ是一个非线性函数,例如对数S形 σ x = 1
Lae=||Wσ(WTX)X||2
σσ(x)=11+exp(x)

相似之处

注意,长相几乎大号一个ë一旦我们设置ħ = σ w ^ Ť X 。两者的区别在于:i)自动编码器不鼓励其一般形式的稀疏性; ii)自动编码器使用模型来查找代码,而稀疏编码则通过优化来这样做。LscLaeH=σ(WTX)

WWLsc取决于。)

同样,不同的正则化方法会产生具有不同特征的表示。去噪自动编码器也已被证明等同于某种形式的RBM等。

但为什么?

如果您想解决预测问题,则无需自动编码器,除非只有很少的标签数据和大量的未标签数据,。然后,通常最好训练一个深度自动编码器,然后将线性SVM放在顶部,而不是训练一个深度神经网络。

但是,它们是捕获分布特征的非常强大的模型。这是模糊的,但是目前正在进行将其转化为硬统计事实的研究。深潜高斯模型(又称变分自动编码器或生成随机网络)是获得自动编码器的非常有趣的方式,该编码器可以可靠地估算基础数据分布。


感谢您的回答!那么,在任何情况下均不应该使用稀疏编码,而是自动编码器吗?另外,在稀疏编码中应该有一个额外的术语来规范W?
RockTheStar

没有这样的一般规则。SC与AE相比有一个好处:通过优化进行编码非常强大。
2014年

对不起,您能详细说明一下吗?
RockTheStar 2014年

拥有一个已估计为遵循某种约束(此处为:稀疏结果)而确定的固定映射要比拥有一个试图在可能的多次迭代中尝试找到类似解决方案的优化器强大得多。
2014年

1
很抱歉再次提出这个问题。我认为Autoencoder也可以鼓励稀疏性,即稀疏的autoencoder。
RockTheStar

11

在神经科学中,术语“神经编码”用于指由刺激诱导的神经元电活动的模式。稀疏编码又是一种模式。当刺激(如图像)仅激活相对较少数量的神经元(组合在一起以稀疏方式表示)的激活时,代码就是稀疏的。在机器学习中,可以使用与创建稀疏代码模型相同的优化约束来实现稀疏自动编码器,该稀疏自动编码器是经过稀疏性约束训练的常规自动编码器。下面给出了每个问题的详细说明。

稀疏编码被定义为学习一组过度完整的基础向量来表示输入向量(<-为什么要这样做)

首先,至少自从(Hubel&Wiesel,1968)以来就知道在V1区域中存在特定的细胞,这些细胞对边缘样刺激产生最大的反应(除了具有其他“有用的”特性外)。稀疏编码是一个模型,可以很好地解释该系统的许多观察特性。参见(Olshausen&Field,1996)更多详细信息。

其次,已经表明,描述稀疏编码的模型是用于机器学习中的特征提取的有用技术,并且在转移学习任务中产生了良好的结果。Raina等。(2007)表明,使用由手写字符组成的训练集学习的一组“基本向量”(特征,如笔触和边线)可改善手写数字识别任务中的分类。后来,基于稀疏编码的模型已用于训练“深度”网络,堆叠稀疏特征检测器的层以创建“稀疏深度置信网” (Lee等,2007)。。最近,使用基于稀疏编码的模型构建具有多层结构的网络(著名的“ Google Brain”),在图像识别方面取得了令人惊讶的结果,该网络能够以纯粹的无监督方式区分猫的图像(Le等。 ,2013)

第三,可能有可能使用学习到的基础来执行压缩。一个还没有看到任何人真的这样做。

稀疏编码和自动编码器有什么区别?

自动编码器是一种通常使用某种约束来尝试重建其输入的模型。根据维基百科,它“是一种用于学习有效编码的人工神经网络”。自动编码器的定义中没有要求稀疏性的内容。基于稀疏编码的约束是可用的技术之一,但是还有其他技术,例如,降噪自动编码器,压缩自动编码器和RBM。所有这些使网络学习到输入的良好表示(通常也很“稀疏”)。

什么时候使用稀疏编码和自动编码器?

您可能对使用自动编码器进行深度网络的特征提取和/或预训练感兴趣。如果使用稀疏性约束实现自动编码器,则将同时使用两者。


这个答案有很多有趣的观点和重要参考。但是,第一段是错误的。稀疏编码和稀疏自动编码器是不同的野兽。
2014年

在哪里表明他们是同一回事?请告诉我,我会改正答案。
Saul Berardo 2014年

在第一句话中。
bayerj 2014年

“稀疏编码只是训练自动编码器的可用技术之一”。这句话没有将“稀疏编码”定义为与自动编码器相同的“野兽”。它说,在用于训练自动编码器的所有可用技术中,其中之一是“稀疏编码”。我同意这句话确实有些模棱两可,我相信答案的其余部分可以澄清这一点。
索尔·贝拉多

您说稀疏编码是一种训练自动编码器的方法。显然不是这样,因为自动编码器具有未使用优化算法实现的显式解码器。给定一个任意的自动编码器,您将无法使用稀疏编码对其进行训练。
2014年

1

稀疏编码器有点像自动编码器的一半。自动编码器的工作原理如下:

input  =>  neural net layer  =>  hidden outputs => neural net layer => output

对于反向传播,误差信号(损耗)为:输入-输出

如果我们对隐藏的输出应用稀疏约束,则大多数将为零,少数将为1。然后,第二层实质上是一组线性基函数,根据隐藏输出中的哪一个为1s,它们被加在一起。

在稀疏编码中,只有后半部分:

                                codes => neural net layer => output

“代码”是一堆实数,为神经网络层中的权重表示的基函数进行选择。由于在Olshausen的论文中,他们将稀疏性约束应用于代码,因此,就像在稀疏自动编码器中一样,这些代码也是稀疏的:多数为零,少数为零。

我们现在可以清楚地看到不同之处:对于稀疏编码,没有神经网络的前半部分:神经网络不会自动为我们提供代码。

我们如何获得稀疏编码中的代码?我们必须通过使用梯度下降或类似方法进行优化,以找到最能提供与输入图像匹配的输出的代码集。我们必须每次对每个图像(包括每个测试图像)执行此操作。


0

您可能想阅读有关同一主题的最新论文https://arxiv.org/abs/1708.03735v2。在本文中,作者表明,确实可以设置一种自动编码器,使得地面真理字典是该自动编码器平方损耗函数的关键点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.