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

机器算法验证 机器学习 神经网络 无监督学习 深度学习 自动编码器
2022-02-09 17:40:11

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

4个回答

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

稀疏编码

稀疏编码最小化目标

Lsc=||WHX||22reconstruction term+λ||H||1sparsity term
在哪里W是一个基矩阵,H 是一个代码矩阵,并且X是我们希望表示的数据的矩阵。λ实现了稀疏和重构之间的权衡。请注意,如果我们给出H, 估计W通过最小二乘很容易。

一开始,我们没有H然而。然而,存在许多算法可以解决上述目标H. 实际上,这就是我们进行推理方式:如果我们想知道h属于看不见的x.

自动编码器

自动编码器是一系列无监督神经网络。其中有很多,例如深度自动编码器或附加了不同正则化技巧的那些——例如去噪、收缩、稀疏。甚至存在概率网络,例如生成随机网络或变分自动编码器。它们最抽象的形式是

D(d(e(x;θr);θd),x)
但我们现在将使用一个更简单的方法:
Lae=||Wσ(WTX)X||2
在哪里σ是非线性函数,例如逻辑 sigmoidσ(x)=11+exp(x).

相似之处

注意Lsc看起来差不多_Lae一旦我们设置H=σ(WTX). 两者的区别在于 i) 自动编码器不鼓励其一般形式的稀疏性 ii) 自动编码器使用模型来查找代码,而稀疏编码通过优化来实现。

对于自然图像数据,正则化自动编码器和稀疏编码往往会产生非常相似的结果W. 然而,自动编码器效率更高,并且很容易推广到更复杂的模型。例如,解码器可以是高度非线性的,例如深度神经网络。此外,一个与平方损失无关(在此基础上估计W为了Lsc依靠。)

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

但为什么?

如果你想解决一个预测问题,你不需要自动编码器,除非你只有很少的标记数据和很多未标记的数据。然后你通常会更好地训练一个深度自动编码器并将一个线性 SVM 放在上面,而不是训练一个深度神经网络。

但是,它们是用于捕获分布特征的非常强大的模型。这是模糊的,但目前正在进行将其转化为硬统计事实的研究。深度潜在高斯模型又名变分自动编码器或生成随机网络是获得自动编码器的非常有趣的方法,这些自动编码器可证明估计基础数据分布。

在神经科学中,神经编码一词用于指代由刺激引起的神经元的电活动模式。稀疏编码本身就是一种模式。当刺激(如图像)仅引发相对较少数量的神经元的激活时,则称代码是稀疏的,这些神经元组合起来以稀疏的方式表示它。在机器学习中,用于创建稀疏代码模型的相同优化约束可用于实现稀疏自动编码器,它们是使用稀疏约束训练的常规自动编码器。下面对您的每个问题进行了更详细的解释。

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

首先,至少从(Hubel & Wiesel, 1968)开始,就知道在 V1 区域有特定的细胞对类似边缘的刺激反应最大(除了具有其他“有用的”特性)。稀疏编码是一个模型,它很好地解释了该系统的许多观察到的特征。更多细节参见(Olshausen & Field,1996)

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

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

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

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

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

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

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

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

对于反向传播,误差信号,即损失,是:输入 - 输出

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

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

                                codes => neural net layer => output

“代码”是一堆实数,用于选择由神经网络层中的权重表示的基函数。由于在 Olshausen 的论文中,他们对代码应用了稀疏性约束,因此代码就像在稀疏自动编码器中一样,是稀疏的:大部分是零和几个 1。

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

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

您可能想阅读这篇最近的论文,https://arxiv.org/abs/1708.03735v2,主题正是这个主题。在这篇论文中,作者表明确实可以设置一个自动编码器,使得地面实况字典是该自动编码器平方损失函数的关键点。