在本书的前两部分,我们已经展示了如何解决监督学习问题,即在给定足够的映射样本的情况下,学习将一个向量映射到另一个。我们想要解决的问题并不全都属于这个类别。我们可能希望生成新的样本、或确定一个点的似然性、或处理缺失值以及利用一组大量的未标记样本或相关任务的样本。当前应用于工业的最先进技术的缺点是我们的学习算法需要大量的监督数据才能实现良好的精度。在本书这一部分,我们讨论一些推测性的方法,来减少现有模型工作所需的标注数据量,并适用于更广泛的任务。实现这些目标通常需要某种形式的无监督或半监督学习。
无监督学习困难的核心原因是被建模的随机变量的高维度。这带来了两个不同的挑战:统计挑战和计算挑战。 统计挑战与泛化相关:我们可能想要区分的配置数会随着感兴趣的维度数指数增长,并且这快速变得比可能具有的(或者在有限计算资源下使用的)样本数大得多。计算挑战源于用于学习或使用训练模型的许多算法(特别是基于估计显式概率函数的算法)涉及难处理的计算量,并且随维数呈指数增长。
线性因子模型
无监督学习常常需要建立一种依赖于观察数据的概率模型,原则上说,给定任何其他变量的情况下,这样的模型可以使用概率推断来预测其环境中的任何变量。但由于实际观察的数据x常常比较杂乱没有规律,通常我们会用某种代表了更低维基本特征的潜变量(latent variables) h来更好的表征数据,将问题转化为
![]()
这一章主要介绍了最基本的利用潜变量的概率模型——线性因子模型(Linear Factor model),即假定h取自某种先验分布(prior distribution) h ∼ p(h),其中 p(h) 是一个因子分布,满足
![]()
而我们观察到的数据是h的线性变换与一些随机噪声的叠加,其中噪声通常是对角化的(在维度上是独立的)且服从高斯分布

概率 PCA( probabilistic PCA)、 因子分析和其他线性因子模型仅在对观测到 x 之前的噪声分布和潜变量h 先验的选择上有所不同
在 因子分析( factor analysis)中, 潜变量的先验是一个方差为单位矩阵的高斯分布h ∼ N(h; 0, I)。同时,假定在给定 h 的条件下观察值 xi 是 条件独立( conditionally independent)的。假设噪声是从对角协方差矩阵的高斯分布中抽出的, 协方差矩阵为 = diag(σ2),其中 σ2 = [σ12, σ22, ... , σn2]⊤ 表示一个向量,每个元素表示一个变量的方差。可以容易地看出 x 服从多维正态分布,并满足x ∼ N(x; b, WW⊤ + φ)。
概率主成分分析(Probabilistic PCA)模型与因子分析模型类似,但是我们令所有的协方差σi2都相等,x = Wh + b + σz,其中 z ∼ N(z; 0, I) 是高斯噪声。概率 PCA模型利用了这样一种观察现象:除了一些微小残余的 重构误差( reconstruction error)(至多为 σ2),数据中的大多数变化可以由潜变量 h 描述。
独立成分分析( independent component analysis, ICA)旨在将观察到的信号分离成许多潜在信号,这些潜在信号通过缩放和叠加可以恢复成观察数据,例如将收集到的不同人的语音信息的叠加分割成原本每个人的语音。这些信号是完全独立的,而不是仅仅彼此不相关。由于目的是隐性变量相互独立,所以其先验分布为非高斯分布。另外,ICA并不一定需要生成模型知道怎样模拟 h的生成概率分布 p(h),许多ICA的变种只是将目标定为尽量提高 h = W-1x的峰度以尽可能偏离高斯分布,而无需明确的表示 h的生成概率分布p(h)
慢特征分析(slow feature analysis, SFA)的想法源于所谓的 慢性原则( slowness principle)。其基本思想是,与场景中起描述作用的单个量度相比,场景的重要特性通常变化得非常缓慢。例如,在计算机视觉中,单个像素值可以非常快速地改变。如果斑马从左到右移动穿过图像并且它的条纹穿过对应的像素时,该像素将迅速从黑色变为白色,并再次恢复成黑色。通过比较,指示斑马是否在图像中的特征将不发生改变,并且描述斑马位置的特征将缓慢地改变。因此,我们可能希望将模型正则化,从而能够学习到那些随时间变化较为缓慢的特征。可以向代价函数添加以下项

其中 λ 是确定慢度正则化强度的超参数项, t 是样本时间序列的索引, f 是需要正则化的特征提取器, L 是测量 f(x(t)) 和 f(x(t+1)) 之间的距离的损失函数。 L 的一个常见选择是均方误差。像 ICA 的一些变种一样, SFA 本身并不是生成模型,只是在输入空间和特征空间之间定义了一个线性映射,但是没有定义特征空间的先验,因此没有在输入空间上施加分布 p(x)
自编码器
自编码器( autoencoder)是神经网络的一种,经过训练后能尝试将输入复制到输出。该网络可以看作由两部分组成:一个由函数 h = f(x) 表示的编码器,将输入信息映射到某个更低维度的空间,生成包含重要特征的编码code,这部分称为Encoder;一个生成重构的解码器 r = g(h),将code重构成为尽量能还原原输入的结果。现代自编码器将编码器和解码器的概念推而广之,将其中的确定函数推广为随机映射 pencoder(h|x) 和 pdecoder(x|h)。将输入复制到输出听起来没什么用,但我们通常不关心解码器的输出,相反,我们希望通过训练自编码器对输入进行复制而使 h 获得有用的特性。
欠完备自编码器
限制 h 的维度比 x 小,这种编码维度小于输入维度的自编码器称为 欠完备( undercomplete) 自编码器。学习欠完备的表示将强制自编码器捕捉训练数据中最显著的特征.
学习过程可以简单地描述为最小化一个损失函数L(x, g(f(x)))。其中 L 是一个损失函数,惩罚 g(f(x)) 与 x 的差异,如均方误差。
当解码器是线性的且 L 是均方误差, 欠完备的自编码器会学习出与PCA 相同的生成子空间。这种情况下, 自编码器在训练来执行复制任务的同时学到了训练数据的主元子空间。
因此,拥有非线性编码器函数 f 和非线性解码器函数 g 的自编码器能够学习出更强大的 PCA 非线性推广。如果编码器和解码器被赋予过大的容量, 自编码器会执行复制任务而捕捉不到任何有关数据分布的有用信息。所以怎样限制模型的容量是关键。
正则自编码器
通过向损失函数中加入对模型复杂度的惩罚项可以有效的解决模型容量过大的问题。模型的训练过程就需要在如下两种冲突中寻找平衡:1. 学习输入数据x的有效表示h ,使得decoder可以有效的h通过重构x。2.满足惩罚项带来的限制条件,这可以通过限制模型的容量大小,也可以通过改变模型的重构损失,通常会使模型对于输入的扰动更不敏感。根据损失函数的不同形式主要有如下几种
稀疏自编码器
向损失函数中加入关于编码的稀疏惩罚项Ω(h), 可以简单地将惩罚项 Ω(h) 视为加到前馈网络的正则项
去噪自编码器
去噪自编码器(Denoising Autoencoder)简称DAE,其输入是被损坏的数据,结果是希望能够重构未损坏的原数据。
收缩自编码器
使用一个类似稀疏自编码器中的惩罚项 Ω,但 Ω 的形式不同:
这迫使模型学习一个在 x 变化小时目标也没有太大变化的函数。因为这个惩罚只对训练数据适用,它迫使自编码器学习可以反映训练数据分布信息的特征。
自编码器的应用
自编码器已成功应用于降维和信息检索任务。低维表示可以提高许多任务的性能,例如分类。小空间的模型消耗更少的内存和运行时间。据 Salakhutdinov and Hinton (2007b) 和 Torralba et al. (2008) 观察,许多降维的形式会将语义上相关的样本置于彼此邻近的位置。映射到低维空间所提
供的线索有助于泛化。
信息检索( information retrieval)从数据库中找到与用户的查询条目相近的条目。如果我们利用autoencoder有效的将每个条目降维并用二进制编码每个维度上的值,那么我们就可以将所有数据库条目在哈希表映射为二值编码向量,这个哈希表返回具有相同二值编码的数据库条目作为查询结果进行信息检索。我们也可以改变某几个位上的比特值来寻找与用户查询相类似的条目,这种通过降维和二值化的信息检索方法被称为 语义哈希( semantic hashing),已经被用于文本输入和图像。
表示学习
表示学习提供了进行无监督学习和半监督学习的一种方法。我们通常会有巨量的未标注训练数据和相对较少的标注训练数据。在非常有限的标注数据集上监督学习通常会导致严重的过拟合。可以进行无监督学习/半监督学习从未标注数据提取出特征,而这些特征可用来更好的进行监督学习,或者将这些特征迁移到其他相关任务中。
可以将监督学习训练的前馈神经网络看做是一种表示学习,通常神经网络的最后一层是个分类器如softmax,它之前的隐藏层可以看做是给这个分类器提供一个高效的表征。
贪心逐层无监督预训练
无监督预训练,或者更精确地,贪心逐层无监督预训练(Greedy Layer-Wise Unsupervised Pretraining),包括了RBM,单层自编码器,稀疏自编码器等等,它可以通过无监督学习得到输入数据的分布,监督学习阶段可能会使用得到的顶层特征训练一个简单分类器,或者可能会对预训练阶段得到的整个网络进行监督精调( fine-tune)。在监督学习任务中,它可以被看作是正则化项(在一些实验中, 预训练不能降低训练误差,但能降低测试误差)和参数初始化的一种形式
贪心逐层无监督预训练每次处理一层网络,将前一层的输出作为输入,输出数据的新的表示,训练第 k 层时保持前面的网络层不变。特别地,低层网络(最先训练的)不会在引入高层网络后进行调整。它被称为 无监督( unsupervised)的,是因为每一层用无监督表示学习算法训练。
无监督预训练结合了两种不同的想法。第一,它利用了深度神经网络对初始参数的选择,可以对模型性能有着显著的正则化效果(在较小程度上,可以改进优化)的想法。第二,学习算法可以使用无监督阶段学习的信息,在监督学习的阶段表现得更好。其基本想法是对于无监督任务有用的一些特征对于监督学习任务也可能是有用的。
从无监督预训练作为正则化项的角度来看,可以期望无监督预训练在标注样本数量非常小时很有帮助。因为无监督预训练添加的信息来源于未标注数据,所以当未标注样本的数量非常大时,我们也可以期望无监督预训练的效果最好。我们要学习的函数非常复杂时, 无监督预训练可能会非常有用。无监督学习不同于权重衰减这样的正则化项,它不偏向于学习一个简单的函数,而是学习对无监督学习任务有用的特征函数。如果真实的潜在函数是复杂的,并且由输入分布的规律塑造,那么无监督学习更适合作为正则化项。
与无监督学习的其他形式相比, 无监督预训练的缺点是其使用了两个单独的训练阶段。无监督预训练有许多超参数,但其效果只能之后度量,通常难以提前预测。具有两个单独的训练阶段的另一个缺点是每个阶段都具有各自的超参数。第二阶段的性能通常不能在第一阶段期间预测,因此在第一阶段提出超参数和第二阶段根据反馈来更新之间存在较长的延迟。
贪心逐层无监督预训练也能用作其他无监督学习算法的初始化,比如深度自编码器和具有很多潜变量层的概率模型。这些模型包括深度信念网络和深度玻尔兹曼机
随着深度学习的发展,无监督预训练重要性逐渐下降,除了自然语言处理外,在其他应用场景如图像识别渐渐被监督预训练所取代,即利用某些在大量有标记图像数据下学习到的公开的较好的配置来初始化我们具体问题的模型。
迁移学习和领域自适应
迁移学习和领域自适应指的是利用一个情景(例如,分布 P1)中已经学到的内容去改善另一个情景(比如分布 P2)中的泛化情况
许多视觉类别共享一些低级概念,比如边缘、视觉形状、几何变化、光照变化的影响等等。一般而言,当存在对不同情景或任务有用特征时,并且这些特征对应多个情景出现的潜在因素, 迁移学习、 多任务学习和领域自适应可以使用表示学习来实现。
分布式表示
分布式表示(Distributed Representation)指的是我们希望学习到的表示是由各个相互独立的基本元素组成的,这样我们可以高效的将空间进行分割。分布式表示非常强大,因为他们能用具有 k 个
值的 n 个特征去描述 个不同的概念。
(未完待续)
本文深入探讨无监督学习,包括线性因子模型、自编码器及其各种变体,如欠完备自编码器、正则自编码器、稀疏自编码器、去噪自编码器和收缩自编码器。自编码器在降维、信息检索和表示学习中的应用被广泛讨论,而表示学习则为无监督和半监督学习提供了有效方法,如贪心逐层无监督预训练。
1307

被折叠的 条评论
为什么被折叠?



