5.8 无监督学习算法
回顾第5.1.3节,无监督算法只处理“特征”,不操作监督信号。监督和无监督算法之间的区别没有规范严格的定义,因为没有客观的判断来区分监督者提供的值是特征还是目标。通俗地说,无监督学习的大多数尝试是指从不需要人为注释的样本的分布中抽取信息。该术语通常与密度估计相关,学习从分布中采样、学习从分布中去噪、寻找数据分布的流形或是将数据中相关的样本聚类。
一个经典的无监督学习任务是找到数据的“最佳”表示。“最佳”可以是不同的表示,但是一般来说,是指该表示在比本身表示的信息更简单或更易访问而受到一些惩罚或限制的情况下,尽可能地保存关于x更多的信息。
有很多方式定义较简单的表示。最常见的3种包括低维表示、稀疏表示和独立表示。低维表示尝试将x中的信息尽可能压缩在一个较小的表示中。稀疏表示将数据集嵌入到输入项大多数为零的表示中(Barlow,1989;Olshausen and Field,1996;Hinton and Ghahramani,1997)。稀疏表示通常用于需要增加表示维数的情况,使得大部分为零的表示不会丢失很多信息。这会使得表示的整体结构倾向于将数据分布在表示空间的坐标轴上。独立表示试图分开数据分布中变化的来源,使得表示的维度是统计独立的。
当然,这3个标准并非相互排斥的。低维表示通常会产生比原始的高维数据具有较少或较弱依赖关系的元素。这是因为减少表示大小的一种方式是找到并消除冗余。识别并去除更多的冗余使得降维算法在丢失更少信息的同时显现更大的压缩。
表示的概念是深度学习核心主题之一,因此也是本书的核心主题之一。本节会介绍表示学习算法中的一些简单示例。总的来说,这些示例算法会说明如何实施上面的3个标准。剩余的大部分章节会介绍额外的表示学习算法,它们以不同方式处理这3个标准或是引入其他标准。
5.8.1 主成分分析
在第2.12节中,我们看到PCA算法提供了一种压缩数据的方式。我们也可以将PCA视为学习数据表示的无监督学习算法。这种表示基于上述简单表示的两个标准。PCA学习一种比原始输入维数更低的表示。它也学习了一种元素之间彼此没有线性相关的表示。这是学习表示中元素统计独立标准的第一步。要实现完全独立性,表示学习算法也必须去掉变量间的非线性关系。
如图5.8所示,PCA将输入x投影表示成z,学习数据的正交线性变换。在第2.12节中,我们看到了如何学习重建原始数据的最佳一维表示(就均方误差而言),这种表示其实对应着数据的第一个主要成分。因此,我们可以用PCA作为保留数据尽可能多信息的降维方法(再次就最小重构误差平方而言)。在下文中,我们将研究PCA表示如何使原始数据表示X去相关的。
图5.8 PCA学习一种线性投影,使最大方差的方向和新空间的轴对齐。(左)原始数据包含了x的样本。在这个空间中,方差的方向与轴的方向并不是对齐的。(右)变换过的数据在轴z1的方向上有最大的变化。第二大变化方差的方向沿着轴z2
假设有一个m×n的设计矩阵X,数据的均值为零,。若非如此,通过预处理步骤使所有样本减去均值,数据可以很容易地中心化。
X对应的无偏样本协方差矩阵给定如下
PCA通过线性变换找到一个Var[z]是对角矩阵的表示。
在第2.12节,我们已知设计矩阵X的主成分由的特征向量给定。从这个角度,我们有
本节中,我们会探索主成分的另一种推导。主成分也可以通过奇异值分解(SVD)得到。具体来说,它们是X的右奇异向量。为了说明这点,假设W是奇异值分解的右奇异向量。以W作为特征向量基,我们可以得到原来的特征向量方程:
SVD有助于说明PCA后的Var[z]是对角的。使用X的SVD分解,X的方差可以表示为
其中,我们使用,因为根据奇异值的定义矩阵U是正交的。这表明z的协方差满足对角的要求:
其中,再次使用SVD的定义有。
以上分析指明当我们通过线性变换W将数据x投影到z时,得到的数据表示的协方差矩阵是对角的(即Σ2),立刻可得z中的元素是彼此无关的。
PCA这种将数据变换为元素之间彼此不相关表示的能力是PCA的一个重要性质。它是消除数据中未知变化因素的简单表示示例。在PCA中,这个消除是通过寻找输入空间的一个旋转(由W确定),使得方差的主坐标和z相关的新表示空间的基对齐。
虽然相关性是数据元素间依赖关系的一个重要范畴,但我们对于能够消除更复杂形式的特征依赖的表示学习也很感兴趣。对此,我们需要比简单线性变换更强的工具。
5.8.2 k-均值聚类
另外一个简单的表示学习算法是k-均值聚类。k-均值聚类算法将训练集分成k个靠近彼此的不同样本聚类。因此我们可以认为该算法提供了k-维的one-hot编码向量h以表示输入x。当x属于聚类i时,有hi=1,h的其他项为零。
k-均值聚类提供的one-hot编码也是一种稀疏表示,因为每个输入的表示中大部分元素为零。之后,我们会介绍能够学习更灵活的稀疏表示的一些其他算法(表示中每个输入x不只一个非零项)。one-hot编码是稀疏表示的一个极端示例,丢失了很多分布式表示的优点。one-hot编码仍然有一些统计优点(自然地传达了相同聚类中的样本彼此相似的观点),也具有计算上的优势,因为整个表示可以用一个单独的整数表示。
k-均值聚类初始化k个不同的中心点{µ(1),...,µ(k)},然后迭代交换两个不同的步骤直到收敛。步骤一,每个训练样本分配到最近的中心点µ(i)所代表的聚类i。步骤二,每一个中心点µ(i)更新为聚类i中所有训练样本x(j)的均值。
关于聚类的一个问题是,聚类问题本身是病态的。这是说没有单一的标准去度量聚类的数据在真实世界中效果如何。我们可以度量聚类的性质,例如类中元素到类中心点的欧几里得距离的均值。这使我们可以判断从聚类分配中重建训练数据的效果如何。然而我们不知道聚类的性质是否很好地对应到真实世界的性质。此外,可能有许多不同的聚类都能很好地对应到现实世界的某些属性。我们可能希望找到和一个特征相关的聚类,但是得到了一个和任务无关的,同样是合理的不同聚类。例如,假设我们在包含红色卡车图片、红色汽车图片、灰色卡车图片和灰色汽车图片的数据集上运行两个聚类算法。如果每个聚类算法聚两类,那么可能一个算法将汽车和卡车各聚一类,另一个根据红色和灰色各聚一类。假设我们还运行了第3个聚类算法,用来决定类别的数目。这有可能聚成了4类,红色卡车、红色汽车、灰色卡车和灰色汽车。现在这个新的聚类至少抓住了属性的信息,但是丢失了相似性信息。红色汽车和灰色汽车在不同的类中,正如红色汽车和灰色卡车也在不同的类中。该聚类算法没有告诉我们灰色汽车和红色汽车的相似度比灰色卡车和红色汽车的相似度更高。我们只知道它们是不同的。
这些问题说明了一些我们可能更偏好于分布式表示(相对于one-hot表示而言)的原因。分布式表示可以对每个车辆赋予两个属性——一个表示它的颜色,一个表示它是汽车还是卡车。目前仍然不清楚什么是最优的分布式表示(学习算法如何知道我们关心的两个属性是颜色和是否汽车或卡车,而不是制造商和车龄?),但是多个属性减少了算法去猜我们关心哪一个属性的负担,允许我们通过比较很多属性而非测试一个单一属性来细粒度地度量相似性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论