最近我一直在阅读有关深度学习的内容,但我对这些术语(或者说技术)感到困惑。和有什么区别
- 卷积神经网络(CNN),
- 受限玻尔兹曼机 (RBM) 和
- 自动编码器?
最近我一直在阅读有关深度学习的内容,但我对这些术语(或者说技术)感到困惑。和有什么区别
自动编码器是一个简单的 3 层神经网络,其中输出单元直接连接回输入单元。例如在这样的网络中:
output[i]
input[i]
对每个都有优势i
。通常,隐藏单元的数量远少于可见(输入/输出)单元的数量。结果,当您通过这样的网络传递数据时,它首先压缩(编码)输入向量以“适应”较小的表示,然后尝试将其重构(解码)回来。训练的任务是最小化错误或重构,即为输入数据找到最有效的紧凑表示(编码)。
RBM 有类似的想法,但使用随机方法。代替确定性(例如逻辑或 ReLU),它使用具有特定(通常是高斯的二进制)分布的随机单位。学习过程包括吉布斯采样的几个步骤(传播:给定可见的样本隐藏;重建:给定隐藏的样本可见;重复)和调整权重以最小化重建误差。
RBM 背后的直觉是有一些可见的随机变量(例如来自不同用户的电影评论)和一些隐藏的变量(例如电影类型或其他内部特征),训练的任务是找出这两组变量实际上是如何相互连接(有关此示例的更多信息,请参见此处)。
卷积神经网络与这两者有些相似,但它们不是在两层之间学习单个全局权重矩阵,而是旨在找到一组局部连接的神经元。CNN 主要用于图像识别。它们的名称来自“卷积”运算符或简称为“过滤器”。简而言之,过滤器是一种通过简单更改卷积核来执行复杂操作的简单方法。应用高斯模糊内核,你会得到它的平滑。应用 Canny 内核,你会看到所有的边缘。应用 Gabor 核来获得梯度特征。
(图片来自这里)
卷积神经网络的目标不是使用预定义的内核之一,而是学习特定于数据的内核。这个想法与自动编码器或 RBM 相同——将许多低级特征(例如用户评论或图像像素)转换为压缩的高级表示(例如电影类型或边缘)——但现在权重仅从神经元学习在空间上彼此靠近。
这三个模型都有各自的用例、优点和缺点,但最重要的属性可能是:
UPD。
降维
当我们将某个对象表示为$n$ 元素的向量时,我们说这是$n$ 维空间中的向量。因此,降维是指以这样一种方式提炼数据的过程,即每个数据向量 $x$ 被转换为 $m$ 维空间中的另一个向量 $x'$(具有 $m$ 个元素的向量),其中$m < n$。可能最常见的方法是PCA。粗略地说,PCA 找到数据集的“内部轴”(称为“组件”)并按重要性对它们进行排序。首先将 $m$ 最重要的组件用作新的基础。这些组件中的每一个都可以被认为是一个高级特征,比原始轴更好地描述数据向量。
两者——自动编码器和 RBM——都做同样的事情。在$n$ 维空间中获取一个向量,他们将其转换为$m$ 维空间,试图保留尽可能多的重要信息,同时消除噪声。如果自动编码器/RBM 的训练成功,则结果向量的每个元素(即每个隐藏单元)都代表了关于对象的一些重要信息——图像中眉毛的形状、电影的类型、科学文章中的研究领域等。将大量噪声数据作为输入,并以更有效的表示形式生成更少的数据。
深层架构
那么,如果我们已经有了 PCA,为什么还要提出自动编码器和 RBM 呢?事实证明,PCA 只允许数据向量的线性变换。也就是说,有 $m$ 个主成分 $c_1..c_m$,你只能表示向量 $x=\sum_{i=1}^{m}w_ic_i$。这已经很好了,但还不够。无论如何,您将 PCA 应用于数据多少次 - 关系将始终保持线性。
另一方面,自动编码器和 RBM 本质上是非线性的,因此它们可以学习可见单元和隐藏单元之间更复杂的关系。而且,它们可以堆叠,这使得它们更加强大。例如,您用 $n$ 可见和 $m$ 隐藏单元训练 RBM,然后在第一个 RBM 上放置另一个带有 $m$ 可见和 $k$ 隐藏单元的 RBM 并对其进行训练,等等。 完全相同的方式与自动编码器。
但你不只是添加新层。在每一层上,您都尝试从前一层中学习数据的最佳表示:
在上图中,有一个这样一个深度网络的例子。我们从普通像素开始,然后是简单的过滤器,然后是面部元素,最后是整个面部!这就是深度学习的精髓。
现在请注意,在此示例中,我们使用图像数据并顺序获取越来越大的空间接近像素区域。听起来是不是很相似?是的,因为它是深度卷积网络的一个例子。无论是基于自动编码器还是 RBM,它都使用卷积来强调局部性的重要性。这就是 CNN 与自动编码器和 RBM 有所不同的原因。
分类
这里提到的模型本身都不能用作分类算法。相反,它们用于预训练——学习从低级和难以消费的表示(如像素)到高级表示的转换。一旦对深度(或者可能不是那么深)网络进行了预训练,输入向量就会被转换为更好的表示形式,并且最终将得到的向量传递给真正的分类器(例如 SVM 或逻辑回归)。在上图中,这意味着在最底部还有一个实际进行分类的组件。
所有这些架构都可以解释为神经网络。AutoEncoder 和卷积网络之间的主要区别在于网络硬连线的级别。卷积网络几乎是硬连线的。卷积操作在图像域中几乎是局部的,这意味着神经网络视图中的连接数量更加稀疏。图像域中的池化(下采样)操作也是神经域中的一组硬连线神经连接。这种拓扑对网络结构的约束。给定这样的限制,CNN 的训练会学习到这个卷积操作的最佳权重(实际上有多个过滤器)。CNN 通常用于图像和语音任务,其中卷积约束是一个很好的假设。
相比之下,自动编码器几乎没有指定网络拓扑。它们更通用。这个想法是找到好的神经变换来重建输入。它们由编码器(将输入投影到隐藏层)和解码器(将隐藏层重新投影到输出)组成。隐藏层学习一组潜在特征或潜在因素。线性自动编码器与 PCA 跨越相同的子空间。给定一个数据集,他们学习基数来解释数据的基本模式。
RBM 也是一种神经网络。但对网络的解释完全不同。RBM 将网络解释为不是前馈,而是一个二分图,其想法是学习隐藏变量和输入变量的联合概率分布。它们被视为图形模型。请记住,AutoEncoder 和 CNN 都学习确定性函数。另一方面,RBM 是生成模型。它可以从学习的隐藏表示中生成样本。有不同的算法来训练 RBM。但是,归根结底,在学习 RBM 之后,您可以使用它的网络权重将其解释为前馈网络。
RBM 可以看作是某种概率自动编码器。实际上,已经证明在某些条件下它们是等价的。
然而,展示这种等价性要比仅仅相信它们是不同的野兽要困难得多。确实,当我开始仔细观察时,我发现这三者之间很难找到很多相似之处。
例如,如果你写下自动编码器、RBM 和 CNN 实现的功能,你会得到三个完全不同的数学表达式。
关于 RBM,我不能告诉你太多,但自动编码器和 CNN 是两种不同的东西。自编码器是一种以无监督方式训练的神经网络。自动编码器的目标是通过学习编码器(将数据转换为相应的紧凑表示)和解码器(重构原始数据)来找到数据的更紧凑表示。自编码器(最初是 RBM)的编码器部分已被用于学习更深架构的良好初始权重,但还有其他应用。本质上,自动编码器学习数据的聚类。相比之下,CNN 一词是指一种神经网络,它使用卷积算子(在用于图像处理任务时通常是 2D 卷积)从数据中提取特征。在图像处理、滤镜、与图像卷积的图像会自动学习以解决手头的任务,例如分类任务。训练标准是回归/分类(监督)还是重建(无监督)与卷积作为仿射变换的替代方案的想法无关。你也可以有一个 CNN 自动编码器。