原始数据,以其最初形式,例如图像的像素值数组或文本的字符序列,通常不适合直接用于机器学习算法。从这类数据中手动构建特征,即特征工程,可能是一项劳动密集型、特定于领域的工作,而且可能无法始终捕捉数据中最具信息量的部分。表示学习,也称为特征学习,提供了一种自动化此发现过程的方法。它包含各种技术,使系统能够直接从原始数据中自动识别特征检测或分类等任务所需的表示。主要目的是学习输入数据的变换,从而得到一种新的表示。这种新的表示旨在更有效地解决特定任务或更清晰地显示数据的基础结构。这种能力在处理复杂、高维数据时尤其重要,因为其中导致变化的潜在因素并不明显。表示学习算法旨在从数据本身自然地学习这些特征,而不是依赖人类直觉来定义特征。这是深度学习的一个基本构成,神经网络中的层逐步学习输入越来越复杂和抽象的表示。基本目标有效表示的开发是由几个基本目标驱动的:提取显著信息: 一个主要目标是将输入数据提炼成其最具信息量的本质,专注于与预期任务相关的内容。这不仅涉及保留有用信息,还涉及过滤掉噪声或不相关的细节。例如,在图像分类任务中,表示应突出区分对象类别的特征,同时对不属于该类别的次要光照变化或背景杂乱等变化不那么敏感。识别潜在变化因素: 数据通常由几个不同的潜在解释因素生成。以人脸图像为例:它们的外观受身份、表情、姿态、光照、年龄等因素影响。一个强大的表示理想情况下会隔离这些单独的因素。如果我们能学习到一种表示,其中不同的维度(或维度组)与这些独立的因素对应,我们就能操控它们,更好地理解数据生成过程,并在生成任务中实现更精细的控制。促进下游任务: 最终,表示的实用价值通过其增强后续机器学习模型性能的能力来衡量。一个良好的表示应使分类、回归、聚类或数据生成等任务更简单、更准确。例如,如果一个表示可以将非线性可分离的数据转换为线性可分离的空间,那么一个简单的线性分类器就能实现高准确度。改善泛化能力: 成功捕捉数据真实潜在结构的已学习表示,而不是仅仅记忆训练集中存在的表面模式,更可能促进对未见数据的更好泛化。通过关注这些基本因素,模型变得不易过拟合训练样本的特定特性。有效表示的属性这些广泛目标显示出已学习表示中几个非常理想的特定属性。这些属性通常指导表示学习算法的设计。不变性与等变性:不变性描述了表示对输入某些变换的不敏感性,这些变换不改变与任务相关的主要信息。对于对象识别,猫的表示理想情况下应保持一致,无论其在图像中的位置(平移不变性)或光照的微小变化。等变性则意味着,如果输入发生特定变换,表示会以可预测的、相应的方式变化。例如,如果图像中的一个对象旋转,其等变表示也可能旋转或以直接反映输入旋转的方式变化。卷积神经网络(CNN)在其特征图中固有地包含一定程度的平移等变性。解耦性: 这是一个特别有价值的属性,特别是在变分自编码器(VAE)等生成模型框架内。解耦表示是指在已学习的潜在空间中,单个维度(或不同的维度组)对应于数据中独立、可解释的变化因素。例如,在建模人脸时,理想的解耦表示可能包含一个控制微笑强度的潜在维度,另一个控制头部旋转,第三个控制头发颜色,所有这些维度都独立运行。实现良好的解耦能增强可解释性,对数据生成进行更精细的控制,并能带来更好的泛化能力。我们将在第5章专门对解耦进行详细讨论。digraph G { rankdir=TB; node [shape=box, style=rounded, fontname="Arial", fontsize=10]; edge [arrowhead=vee, color="#495057"]; graph [fontname="Arial", fontsize=12, labelloc="t", label="解耦潜在空间映射"]; Z [label="潜在空间 (z)", shape=ellipse, style=filled, fillcolor="#bac8ff"]; Z_dim1 [label="潜在维度 z1\n(例如,对象旋转)", style=filled, fillcolor="#a5d8ff"]; Z_dim2 [label="潜在维度 z2\n(例如,对象大小)", style=filled, fillcolor="#99e9f2"]; Z_dim_dots [label="...", shape=none]; Z_dimN [label="潜在维度 zN\n(例如,对象颜色)", style=filled, fillcolor="#b2f2bb"]; Data [label="观测数据 X\n(例如,图像)", shape=cylinder, style=filled, fillcolor="#ffec99"]; Factor1 [label="因素:旋转", shape=ellipse, style=filled, fillcolor="#ffd8a8"]; Factor2 [label="因素:大小", shape=ellipse, style=filled, fillcolor="#ffc078"]; FactorN [label="因素:颜色", shape=ellipse, style=filled, fillcolor="#ffc9c9"]; Data -> Factor1 [style=dashed, arrowhead=none, label=" 表现出"]; Data -> Factor2 [style=dashed, arrowhead=none, label=" 表现出"]; Data -> FactorN [style=dashed, arrowhead=none, label=" 表现出"]; Factor1 -> Z_dim1 [label=" 编码为"]; Factor2 -> Z_dim2 [label=" 编码为"]; FactorN -> Z_dimN [label=" 编码为"]; Z_dim1 -> Z; Z_dim2 -> Z; Z_dim_dots -> Z; Z_dimN -> Z; {rank=same; Z_dim1 Z_dim2 Z_dim_dots Z_dimN} {rank=same; Factor1 Factor2 FactorN} }图表说明了数据中不同的潜在变化因素如何理想地映射到解耦潜在空间 $z$ 中单独、独立的维度。低维性与流形假设: 高维数据,例如图像或音频信号,通常位于环境高维空间中嵌入的低维流形上或附近。流形假设表明,观测数据点集中在具有比其嵌入空间低得多的内在维度的区域。表示学习的一个主要目标是发现这个潜在流形并为其学习一个坐标系统。这通常意味着学习一种捕捉数据基本结构的低维表示,从而丢弃冗余或嘈杂的维度。{"data": [{"type": "scatter3d", "x": [0.96,0.88,0.73,0.53,0.29,0.02,-0.26,-0.51,-0.71,-0.86,-0.95,-0.98,-0.94,-0.83,-0.67,-0.46,-0.22,0.06,0.32,0.56,0.75,0.89,0.97,0.98,0.92,0.8,0.62,0.39,0.13,-0.16,-0.42,-0.64,-0.8,-0.91,-0.96,-0.95,-0.87,-0.74,-0.55,-0.31,-0.05,0.23,0.49,0.7,0.85,0.94,0.98,0.95], "y": [0.27,0.48,0.68,0.85,0.96,0.99,0.97,0.88,0.73,0.54,0.32,0.07,-0.19,-0.41,-0.6,-0.76,-0.88,-0.95,-0.97,-0.92,-0.81,-0.65,-0.44,-0.21,0.05,0.29,0.51,0.7,0.85,0.95,0.99,0.97,0.89,0.76,0.58,0.37,0.12,-0.14,-0.38,-0.59,-0.77,-0.89,-0.96,-0.98,-0.93,-0.83,-0.67,-0.47], "z": [-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.4,1.3,1.2,1.1,1.0,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1,0.0,-0.1,-0.2], "mode": "markers", "marker": {"size": 3, "color": "#4263eb"}, "name": "数据点 (3D)"}, {"type": "mesh3d", "x": [1,0,-1,1,0,-1], "y": [0,1,0,0,1,0], "z": [-1.5,-1.5,-1.5,1.5,1.5,1.5], "i": [0,0,1,1,2,2,0,1,3,4], "j": [1,3,2,4,3,5,1,2,4,5], "k": [3,4,4,5,5,0,2,3,5,0],"opacity":0.4, "color": "#91a7ff", "name": "内在流形 (2D)"}], "layout": {"title": "流形假设:3D数据中的内在2D结构", "scene": {"xaxis":{"title":"维度 1"},"yaxis":{"title":"维度 2"},"zaxis":{"title":"维度 3"}},"margin":{"l":0,"r":0,"b":0,"t":40}}}高维数据(蓝色点)通常位于低维流形(浅蓝色/靛蓝色表面)附近。表示学习旨在找到这种内在的低维结构。平滑性与连续性: 有效的表示空间通常表现出平滑性。这意味着输入数据中的微小扰动应导致表示中相应的小变化。反之,表示空间中接近的点应对应相似的输入。这一属性对于泛化能力很重要,因为它表明学习到的函数在已知数据点附近表现可预测。它还有助于潜在空间内的插值,这是生成模型的一个有用属性。分层结构: 许多现象具有分层构成特征。例如,图像由形成边缘的像素组成;边缘组合形成图案;图案组装成对象的各个部分;这些部分构成完整的对象。深度学习模型,特别是多层模型,擅长学习这种分层表示。每层可以学习不同抽象层次的特征,早期层捕获低级细节,后续层结合这些细节以表示更复杂和抽象的信息。VAEs 也可以设计为具有分层潜在变量来建模此类结构,我们将在第3章讨论分层 VAE 时介绍这个主题。概率模型背景下的表示学习表示学习与概率模型,尤其是潜在变量模型之间的联系很大。如本章前面所述,潜在变量模型基于观测数据 $x$ 由一些未观测(潜在)变量 $z$ 生成的前提。这些潜在变量 $z$ 可以自然地解释为 $x$ 的表示。从 $x$ 推断 $z$ 的过程(即估计后验分布 $p(z|x)$)类似于将数据编码为其潜在表示。同样,从 $z$ 生成 $x$ 的过程(即使用似然 $p(x|z)$)类似于将表示解码回数据空间。因此,通过引入潜在变量 $z$ 来学习概率模型 $p(x)$ 本身就包含学习一个表示。这个表示的质量和特性受以下因素的很大影响:潜在变量的假设先验分布 $p(z)$。条件分布 $p(x|z)$,它定义了从潜在空间到数据空间的生成过程。用于近似真实后验 $p(z|x)$ 的推断机制。变分自编码器是本课程的主要内容,它是一个主要例子。它们明确定义一个编码器网络,通常表示为 $q_\phi(z|x)$,它学习将输入数据 $x$ 映射到潜在编码 $z$ 的分布。相应地,一个解码器网络 $p_\theta(x|z)$ 学习将这些潜在编码映射回数据空间。VAE 目标函数,我们将在第2章进行讨论,被设计用于训练这些网络,使得 $z$ 发展成为 $x$ 的一个有用、通常是低维且可能解耦的表示。衡量表示的“优劣”定义“好”表示的属性是一个方面;定量衡量其质量是另一个通常更具挑战性的任务。已学习表示的有效性通常通过两种主要方法评估:下游任务性能(外在评估): 在这种方法中,已学习表示被用作单独的监督或无监督任务的输入特征,例如分类、回归或聚类。此任务上的性能指标(例如准确度、F1分数、轮廓系数)作为表示效用的间接衡量标准。如果表示能使更简单的下游模型实现优异性能或促进以前困难的学习,则认为它是有效的。内在评估: 这种方法涉及评估表示本身的属性,通常不直接参考特定的下游应用。例子包括:重建质量: 对于基于自编码器的模型,原始数据能从其表示中多么忠实地重建?解耦性指标: 这些指标量化了已学习的潜在维度在分离数据中真实潜在变化因素方面的成功程度。常见指标包括互信息间隙(MIG)、分离属性可预测性(SAP)以及解耦性、完备性和信息性(DCI),我们将在第5章详细讨论。平滑性与连续性: 评估相似输入的表示是否在潜在空间中聚类,以及微小的输入变化是否导致表示的微小变化。信息量: 采用信息论度量(如本章“表示学习中的信息论”部分提及的那些)来评估表示捕获的信息量和相关性。全面评估通常结合内在和外在度量。指标的选择很大程度上取决于已学习表示的预期应用以及希望在其中培养的特定属性。本章后面的“评估表示质量:指标和方法论”部分将对这些评估技术进行更详细的检查。