Probabilistic Machine Learning:Introduction 概率机器学习:简介(4)-page44~57/858 1.3非监督学习-1.4强化学习-1.5数据

1.3 无监督学习
在监督学习中,我们假设训练集中的每个输入示例 x 都有一个关联的输出目标集 y,我们的目标是学习输入输出映射。虽然这是有用的,也可能很困难,但监督学习本质上只是“美化的曲线拟合”[Pea18]。
一个可能更有趣的任务是尝试“理解”数据,而不仅仅是学习一个映射。也就是说,我们只获得观察到的“输入” D = {xn:n = 1:N},没有任何对应的“输出” yn。这被称为无监督学习。
从概率的角度来看,我们可以将无监督学习的任务视为拟合形式为 p(x) 的无条件模型,该模型可以生成新的数据 x,而监督学习涉及拟合条件模型 p(y|x),该模型指定(在)给定输入时的输出分布。6
无监督学习避免了为训练收集大型标记数据集的需求,这通常可能是耗时且昂贵的(想象一下要求医生为医学图像标记标签)。
无监督学习还避免了学习如何将世界划分为通常是任意的类别的需要。例如,考虑标记视频中发生某种行为,如“喝水”或“抿嘴”的任务。是当人拿起玻璃时,还是当玻璃第一次接触嘴巴时,或者当液体流出时?如果他们倒出一些液体,然后停顿,然后再倒一次 — 那是两个动作还是一个动作?人们在这些问题上经常意见分歧 [Idr+17],这意味着任务没有明确定义。因此,期望机器学习这样的映射是不合理的。7
最后,无监督学习迫使模型“解释”高维输入,而不仅仅是低维输出。这允许我们学习更丰富的“世界运作方式”模型。正如多伦多大学机器学习领域的著名教授 Geoff Hinton 所说:
当我们学会看时,没有人告诉我们正确的答案是什么 — 我们只是看。你妈妈偶尔说“那是一只狗”,但那是非常有限的信息。如果你以每秒一个比特的速度得到几位信息,你会很幸运。大脑的视觉系统有 O(1014) 个神经连接。而你只能活 O(109) 秒。所以每秒学习一个比特没有用。你需要更像每秒 O(105) 比特的信息。而只有一个地方可以得到那么多的信息:来自输入本身。— Geoffrey Hinton, 1996(引用自 [Gor06])。

1.3.1 聚类
无监督学习的一个简单示例是在数据中找到聚类的问题。目标是将输入划分为包含“相似”点的区域。例如,考虑一个二维版本

在这里插入图片描述
图1.8: (a) 鸢尾花数据集中花瓣特征的散点图。 (b) 使用 K = 3 进行无监督聚类的结果。由 iris_kmeans.ipynb 生成。

在这里插入图片描述
图1.9: (a) 鸢尾花数据的散点图(前3个特征)。点按类别进行颜色编码。 (b) 我们使用主成分分析(PCA)将三维数据拟合到二维线性子空间。忽略了类别标签。红点是原始数据,黑点是使用 ˆx = Wz + µ 从模型生成的点,其中 z 是潜在的底层推断的二维线性流形上的点。由 iris_pca.ipynb 生成。

在图1.8a中,我们展示了鸢尾花数据集的点,没有任何类别标签。直观地说,数据中至少有两个簇,一个在左下角,一个在右上角。此外,如果我们假设一个“好”的簇集应该相当紧凑,那么我们可能希望将右上角分成(至少)两个子簇。结果分为三个簇的情况如图1.8b所示。(请注意,不存在正确的簇数;相反,我们需要考虑模型复杂性与对数据的拟合之间的权衡。我们将在第21.3.7节中讨论如何做出这种权衡。)

1.3.2 发现潜在的“变化因素”
在处理高维数据时,通常通过将其投影到能够捕捉数据“本质”的低维子空间来降低维度。解决这个问题的一种方法是假设每个观测到的高维输出 xn ∈ R^D 是由一组潜在的“因素”生成的。

在处理高维数据时,通常通过将其投影到低维子空间来降低维度,该子空间捕捉数据的“本质”。解决这个问题的一种方法是假设每个观测到的高维输出 xn ∈ R^D 是由一组隐藏或未观察到的低维潜在因素 zn ∈ R^K 生成的。我们可以通过以下方式用图表表示模型:zn → xn,其中箭头表示因果关系。由于我们不知道潜在因素 zn,我们通常假设 p(zn) 的简单先验概率模型,例如高斯分布,该分布表明每个因素是一个随机的 K 维向量。如果数据是实值的,我们还可以使用高斯似然性。

最简单的例子是使用线性模型,即 p(xn|zn; θ) = N (xn|Wzn + µ, Σ)。由此产生的模型被称为因子分析(FA)。它类似于线性回归,但我们只观察到输出 xn,而不观察输入 zn。在 Σ = σ^2I 的特殊情况下,这缩减为一种称为概率主成分分析(PCA)的模型,我们将在第20.1节中解释。在图1.9中,我们演示了这种方法在应用于一些简单的3D数据时如何找到2D线性子空间。

当然,假设从 zn 到 xn 的线性映射是非常限制的。然而,我们可以通过定义 p(xn|zn; θ) = N (xn|f(zn; θ), σ^2I),其中 f(z; θ) 是非线性模型(例如深度神经网络)来创建非线性扩展。拟合这样的模型变得更加困难(即估计参数 θ),因为必须推断神经网络的输入以及模型的参数。然而,有各种近似方法,如变分自动编码器,可供应用(见第20.3.5节)。

1.3.3 自监督学习
近来,无监督学习的一种流行方法被称为自监督学习。在这种方法中,我们从未标记的数据中创建代理监督任务。例如,我们可以尝试学习从灰度图像预测彩色图像,或者对句子中的单词进行屏蔽,然后尝试根据周围上下文预测它们。希望得到的预测器 ˆx1 = f(x2; θ),其中 x2 是观察到的输入,而 ˆx1 是预测的输出,将从数据中学到有用的特征,然后可以在标准的下游监督任务中使用。这避免了尝试推断观察到的数据背后的“真实潜在因素”z的困难问题,而是依赖于标准的监督学习方法。我们在第19.2节中更详细地讨论了这种方法。

1.3.4 评估无监督学习
尽管无监督学习具有吸引力,但很难评估无监督学习方法的输出质量,因为没有地面实况可供比较 [TOB16]。评估无监督模型的一种常见方法是测量模型分配给未见过的测试示例的概率。我们可以通过计算数据的(无条件的)负对数似然来实现这一点:
L(θ; D) = −1|D|ΣX∈Dlog p(x|θ) (1.33)
这将无监督学习问题视为密度估计问题。其思想是,一个好的模型不会对实际数据样本感到“惊讶”(即,将它们分配高概率)。此外,由于概率必须总和为1.0,如果模型为数据空间的某些区域分配高概率,其中数据样本来自,它隐含地将低概率分配给数据不来自的区域。因此,模型已学会捕捉数据中的典型模式。这可以用于数据压缩算法内。

不幸的是,密度估计在高维度下是困难的。此外,一个给数据分配高概率的模型可能并未学到有用的高层次模式(毕竟,该模型可能只是记住了所有的训练样本)。

另一种评估指标是使用学到的无监督表示作为特征或输入到下游监督学习方法中。如果无监督方法发现了有用的模式,那么应该可以利用这些模式使用比使用原始特征时更少的标记数据执行监督学习。例如,在第1.2.1.1节中,我们看到鸢尾花的4个手动定义的特征包含执行分类所需的大部分信息。因此,我们能够使用只有150个示例就能训练一个几乎完美性能的分类器。如果输入是原始像素,我们将需要更多的示例才能达到相当的性能(见第14.1节)。也就是说,我们可以通过先学习一个良好的表示来提高学习的样本效率(即减少获得良好性能所需的标记示例数量)。

增加样本效率是一个有用的评估指标,但在许多应用中,特别是在科学领域,无监督学习的目标是获得理解,而不是提高在某些预测任务上的性能这需要使用可解释的模型,但这些模型也必须能够生成或“解释”数据中观察到的大部分模式。用柏拉图的话来说,目标是发现如何“在其关节处雕刻自然”。当然,评估我们是否成功地发现了某个数据集背后的真实基础结构通常需要进行实验,并因此与世界互动。我们将在第1.4节中进一步讨论这个主题。

1.4 强化学习
除了监督学习和无监督学习之外,还有一种机器学习的第三种类型,被称为强化学习(RL)。在这类问题中,系统或代理必须学会与其环境进行交互。这可以通过策略 a = π(x) 来编码,该策略指定对每个可能的输入 x(来自环境状态)采取哪种行动。
例如,考虑一个学会玩视频游戏的代理,比如《Atari Space Invaders》(见图1.10a)。在这种情况下,输入 x 是图像(或过去图像的序列),输出 a 是移动的方向(左或右)以及是否发射导弹。作为更复杂的例子,考虑一个机器人学会行走的问题(见图1.10b)。在这种情况下,输入 x 是所有肢体的关节位置和角度,输出 a 是一组激励或电机控制信号。
与监督学习(SL)的不同之处在于,系统不会被告知采取哪个行动是最佳的(即,为给定的输入生成哪个输出)。相反,系统只是在采取行动后偶尔接收到奖励(或惩罚)信号。这就像与一个批评者一起学习,批评者偶尔点赞或点踩,而不是与一位老师一起学习,老师告诉你每一步该做什么。
强化学习近来因其广泛的适用性而变得越来越受欢迎(因为代理试图优化的奖励信号可以是任何感兴趣的指标)。然而,相对于监督或无监督学习,使强化学习生效可能更为困难,原因有多种。一个关键困难是奖励信号可能只在偶尔给出(例如,如果代理最终达到期望的状态),而且即便如此,代理也可能不清楚其众多行动中的哪一个导致了奖励。 (想象一下玩象棋这样的游戏,在游戏结束时只有一个胜负信号。)
为了弥补来自奖励信号的最小信息量,通常使用其他信息源,比如专家演示,可以在监督方式下使用,或者无标签数据,可以由无监督学习系统用来发现环境的潜在结构。这使得能够从有限次试验(与环境的交互)中学习成为可能。正如Yann LeCun在2016年NIPS大会的一次邀请演讲中所说:“如果智能是一块蛋糕,无监督学习就是巧克力海绵蛋糕,监督学习就是糖衣,强化学习就是樱桃。”这在图1.11中有所说明。

在这里插入图片描述
图1.10:一些控制问题的示例。 (a) Space Invaders Atari游戏。来源:https://gymnasium.farama.org/environments/atari/space_invaders/。 (b) 在MuJuCo模拟器中控制一个人形机器人,使其尽可能快地行走而不摔倒。来源:https://gymnasium.farama.org/environments/mujoco/humanoid/。

在这里插入图片描述
图1.11:将三种机器学习类型可视化为巧克力蛋糕的层次。此图(原始来源:https://bit.ly/2m65Vs1)是Yann LeCun在NIPS’16大会上演讲时使用的,并经过他慷慨允许后在此使用。

关于强化学习的更多信息可以在本书的续篇中找到,[Mur23]。

1.5 数据
机器学习关注使用各种算法将模型拟合到数据中。尽管我们侧重于建模和算法方面,但值得一提的是,训练数据的性质和质量也在任何学习模型的成功中发挥着至关重要的作用。
在本节中,我们简要介绍一些本书中将使用的常见图像和文本数据集。我们还简要讨论数据预处理的主题。
1.5.1 一些常见的图像数据集
在本节中,我们将简要讨论一些本书中将使用的图像数据集。
1.5.1.1 小型图像数据集
其中一个最简单且最广泛使用的是被称为MNIST [LeC+98; YB19] 的数据集。这是一个包含60,000个训练图像和10,000个测试图像的数据集,每个图像的大小为28×28(灰度),展示了10个类别的手写数字。每个像素都是范围在{0, 1, . . . , 255}的整数;通常会将它们重新缩放到[0, 1],以表示像素强度。我们可以选择通过阈值处理将其转换为二进制图像。请参见图1.12a进行说明。
在这里插入图片描述
图1.12:(a) MNIST数据集的可视化。每个图像是28 × 28。有60,000个训练示例和10,000个测试示例。我们展示了训练集中的前25个图像。由mnist_viz_tf.ipynb生成。 (b) EMNIST数据集的可视化。有697,932个训练示例和116,323个测试示例,每个图像的大小为28 × 28。有62个类别(a-z,A-Z,0-9)。我们展示了训练集中的前25个图像。由emnist_viz_jax.ipynb生成。

在这里插入图片描述
图1.13:(a) Fashion-MNIST数据集[XRV17]的可视化。该数据集与MNIST具有相同的大小,但更难分类。有10个类别:T恤/上衣、裤子、套头衫、连衣裙、外套、凉鞋、衬衫、运动鞋、包和短靴。我们展示了训练集中的前25个图像。由fashion_viz_tf.ipynb生成。 (b) CIFAR-10数据集[KH09]中的一些图像。每个图像的大小为32 × 32 × 3,其中大小为3的最后一个维度表示RGB。有50,000个训练示例和10,000个测试示例。有10个类别:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。我们展示了训练集中的前25个图像。由cifar_viz_tf.ipynb生成。

MNIST在机器学习社区中被广泛使用,以至于著名的机器学习研究员Geoff Hinton将其称为“机器学习的果蝇”,因为如果我们无法使一种方法在MNIST上表现良好,那么它可能在更难的数据集上也表现不佳。然而,如今MNIST分类被认为是“太简单”,因为通过仅查看单个像素就可以区分大多数数字对。各种扩展已经被提出。

在[Coh+17]中,他们提出了EMNIST(扩展的MNIST),它还包括小写和大写字母。请参见图1.12b进行可视化。这个数据集比MNIST要困难得多,因为有62个类别,其中一些相当模糊(例如数字1与小写字母l)。

在[XRV17]中,他们提出了Fashion-MNIST,其大小和形状与MNIST完全相同,但其中每个图像是一件衣物的图片,而不是手写数字。请参见图1.13a进行可视化。

对于小型彩色图像,最常见的数据集是CIFAR [KH09]。这是一个包含60,000个图像的数据集,每个图像的大小为32×32×3,表示来自10或100个类别的日常物品;请参见图1.13b进行说明。

在这里插入图片描述
图1.14:(a) ImageNet数据集[Rus+15]中的样本图像。该子集包含1.3百万个彩色训练图像,每个图像的大小为256 × 256像素。有1000个可能的标签,每个图像一个标签,任务是最小化前5错误率,即确保正确的标签在5个最有可能的预测中。在每个图像下面,我们显示真实标签和前5个预测标签的分布。如果真实标签在前5位之内,则其概率条将变为红色。预测由名为“AlexNet”的卷积神经网络(CNN)生成(见第14.3.2节)。来自[KSH12]的第4图。获得了Alex Krizhevsky的友好许可使用。 (b) ImageNet竞赛随时间变化的误分类率(前5)。获得了Andrej Karpathy的友好许可使用。

1.5.1.2 ImageNet
小型数据集对于原型设计想法非常有用,但在更大的数据集上测试方法同样重要,无论是在图像大小还是标记示例数量方面。这类数据集中最广泛使用的是称为ImageNet [Rus+15] 的数据集。这是一个包含约14百万张大小为256 × 256 × 3的图像的数据集,展示了来自20,000个类别的各种对象;请参见图1.14a以获取一些示例。

ImageNet数据集被用作ImageNet大规模视觉识别挑战(ILSVRC)的基础,该挑战从2010年持续到2018年。这使用了来自1000个类别的1.3百万张图像的子集。在比赛过程中,社区取得了显著的进展,如图1.14b所示。特别是,2015年标志着CNN首次在ImageNet上的图像分类任务上超越了人类(或至少超越了安德烈·卡帕西)。请注意,这并不意味着CNN在视觉方面优于人类(例如,参见[YL21]以了解一些常见的失败模式)。相反,这很可能反映了该数据集进行了许多细粒度的分类区分,例如“老虎”和“虎猫”之间的区别,这对人类来说很难理解;相比之下,足够灵活的CNN可以学习任意模式,包括随机标签[Zha+17a]。

尽管ImageNet作为一个分类基准测试要比MNIST和CIFAR难得多,但它也几乎达到了“饱和”[Bey+20]。然而,方法在ImageNet上的相对性能通常是对其他不相关的图像分类任务性能的出奇好的预测指标(参见例如[Rec+19]),因此它仍然被广泛使用。
在这里插入图片描述
表1.3:我们展示了IMDB电影评论数据集中前两个句子的片段。第一个例子被标记为正面,第二个标记为负面。 (表示未知标记。)

1.5.2 一些常见的文本数据集
机器学习经常被应用于文本,以解决各种任务。这被称为自然语言处理或NLP(详见例如[JM20])。以下简要介绍一些本书中将使用的文本数据集。
1.5.2.1 文本分类
一个简单的NLP任务是文本分类,可用于电子邮件垃圾分类、情感分析(例如,电影或产品评论是积极的还是消极的)等。用于评估这类方法的常见数据集是[Maa+11]中的IMDB电影评论数据集。 (IMDB代表“互联网电影数据库”。)其中包含25,000个用于训练的标记示例和25,000个用于测试的标记示例。每个示例都有一个二进制标签,表示积极或消极的评分。请参见表1.3中的一些示例句子。
1.5.2.2 机器翻译
一个更难的NLP任务是学习将一种语言中的句子x映射到另一种语言中的“语义等价”句子y;这称为机器翻译。训练这样的模型需要对齐的(x,y)对。幸运的是,存在几个这样的数据集,例如来自加拿大议会(英语 - 法语对)和欧洲联盟(Europarl)。后者的一个子集,称为WMT数据集(机器翻译研讨会),包含英语 - 德语对,并被广泛用作基准数据集。
1.5.2.3 其他seq2seq任务
机器翻译的一般化是学习从一个序列x映射到另一个序列y。这被称为seq2seq模型,并且可以看作是高维分类的一种形式(详见第15.2.3节)。这个问题的这种框架非常通用,包括许多任务,例如文档摘要、问答等。例如,表1.4显示了如何将问答问题制定为seq2seq问题:输入是文本T和问题Q,输出是答案A,可能是从输入中提取的一组单词。

在这里插入图片描述
表1.4:SQuAD数据集中一个样本段落的问答对。每个答案都是段落中的文本片段。这可以使用句子对标记进行解决。输入是段落文本T和问题Q。输出是对T中相关单词的标记,这些单词回答了Q中的问题。来自[Raj+16]的图1。感谢Percy Liang慷慨许可使用。

1.5.2.4 语言建模

相当宏伟的术语“语言建模”指的是创建文本序列的无条件生成模型,即 p(x1, . . . , xT)。这只需要输入句子 x,没有相应的“标签”y。因此,我们可以将其视为一种无监督学习形式,我们将在第1.3节中进行讨论。如果语言模型对输入生成输出,就像 seq2seq 一样,我们可以将其视为条件生成模型。

1.5.3 处理离散输入数据

许多机器学习模型假设数据由实值特征向量组成,x ∈ R^D。然而,有时输入可能具有离散的输入特征,如种族和性别等分类变量,或来自某个词汇表的单词。在下面的部分中,我们讨论了将这些数据预处理为向量形式的一些方法。这是一种常见的操作,用于许多不同类型的模型。

1.5.3.1 独热编码

当我们有分类特征时,我们需要将它们转换为数值尺度,以便计算输入的加权组合是有意义的。处理这种分类变量的标准方法是使用独热编码,也称为虚拟编码。如果变量 x 有 K 个值,我们将其虚拟编码表示为:one-hot(x) = [I(x = 1), . . . , I(x = K)]。例如,如果有3种颜色(比如红色、绿色和蓝色),相应的独热向量将是 one-hot(red) = [1, 0, 0],one-hot(green) = [0, 1, 0],one-hot(blue) = [0, 0, 1]。

1.5.3.2 特征交叉

使用对每个分类变量使用虚拟编码的线性模型可以捕捉每个变量的主要影响,但无法捕捉它们之间的交互效应。例如,假设我们想要根据两个分类输入变量(类型和原产国)预测车辆的燃油效率。如果我们连接三元和二元特征的独热编码,我们得到以下输入编码:

[ \phi(x) = [1, I(x_1 = S), I(x_1 = T), I(x_1 = F), I(x_2 = U), I(x_2 = J)] ]

其中 (x_1) 是类型,(x_2) 是原产国。

这个模型无法捕捉特征之间的依赖关系。例如,我们期望卡车的燃油效率较低,但也许来自美国的卡车的效率比来自日本的卡车低。由于原产国的贡献独立于汽车类型,这在线性模型中无法捕捉。

我们可以通过计算明确的特征交叉来解决这个问题。例如,我们可以定义一个具有 3 × 2 个可能值的新复合特征,以捕捉类型和原产国的交互。新模型变为:

[ f(x; w) = w^T \phi(x) ]

[ = w_0 + w_1I(x_1 = S) + w_2I(x_1 = T) + w_3I(x_1 = F) + w_4I(x_2 = U) + w_5I(x_2 = J) + w_6I(x_1 = S, x_2 = U) + w_7I(x_1 = T, x_2 = U) + w_8I(x_1 = F, x_2 = U) + w_9I(x_1 = S, x_2 = J) + w_{10}I(x_1 = T, x_2 = J) + w_{11}I(x_1 = F, x_2 = J) ]

我们可以看到使用特征交叉将原始数据集转换为宽格式,具有更多的列。

1.5.4 文本数据预处理

在第1.5.2节中,我们简要讨论了文本分类和其他自然语言处理(NLP)任务。为了将文本数据输入分类器,我们需要解决各种问题。首先,文档具有可变长度,因此不像许多模型所假设的固定长度特征向量。其次,单词是具有许多可能值(等于词汇表大小)的分类变量,因此相应的独热编码将是非常高维的,没有自然的相似性概念。第三,我们可能在测试时遇到在训练期间未见过的单词(称为词汇外或OOV单词)。我们在下面讨论了这些问题的一些解决方案。更多细节可以在例如 [BKL10; MRS08; JM20] 中找到。

1.5.4.1 词袋模型

处理可变长度文本文档的一种简单方法是将其解释为词袋,其中我们忽略单词的顺序。为了将其转换为固定输入空间的向量,我们首先将每个单词映射到来自某个词汇表的标记。

为了减少标记的数量,我们经常使用各种预处理技术,例如:去掉标点符号,将所有单词转换为小写;去掉常见但无信息的单词,如“and”和“the”(称为停用词移除);用其基本形式替换单词,例如用“run”替换“running”和“runs”(称为词干提取);等等。有关详细信息,请参见例如 [BL12],以及一些示例代码,请参见 text_preproc_jax.ipynb。设 xnt 是第 n 个文档中位置 t 处的标记。如果词汇表中有 D 个唯一标记,则可以将第 n 个文档表示为 D 维向量 ˜xn,其中 ˜xnv 是单词 v 在文档 n 中出现的次数:

[ \tilde{x}{nv} = \sum{t=1}^{T} I(x_{nt} = v) ]

其中 T 是文档 n 的长度。现在,我们可以将文档解释为 R^D 中的向量。这被称为文本的向量空间模型 [SWY75; TP10]。

传统上,我们将输入数据存储在一个 N × D 的设计矩阵 X 中,其中 D 是特征的数量。在向量空间模型的上下文中,更常见的是将输入数据表示为一个 D × N 的词频矩阵,其中 TFij 是文档 j 中词汇 i 的频率。

在这里插入图片描述
Figure 1.15: 一个词项-文档矩阵的示例,其中原始计数已被它们的TF-IDF值替换(参见第1.5.4.2节)。较深的单元格表示较大的值。来自 https://bit.ly/2kByLQI 。获得了Christoph Carl Kling的友好许可。

1.5.4.2 TF-IDF
将文档表示为词频向量的一个问题是,常见词可能会产生不当的影响,仅仅因为它们的词频幅度更高,即使它们并没有携带太多语义内容。解决这个问题的一种常见方法是通过对计数取对数来减小单词在单个文档中出现许多次的影响。

为了减小在整体上(跨所有文档)出现许多次的单词的影响,我们计算一个称为逆文档频率(IDF)的数量,定义如下:[IDF_i = \log \frac{N}{1 + DF_i},]
其中 (DF_i) 是包含词项 (i) 的文档数。我们可以将这些变换结合起来计算 TF-IDF 矩阵,如下所示:[TFIDF_{ij} = \log(TF_{ij} + 1) \times IDF_i.]
(通常我们还规范化每一行。)这提供了文档的更有意义的表示,并可用作许多机器学习算法的输入。有一个示例可以在 tfidf_demo.ipynb 中找到。

1.5.4.3 词嵌入
虽然 TF-IDF 转换通过更多地权重分配给“信息丰富”的单词以及减少对“无信息”的单词的权重来改善原始计数向量,但它并没有解决使用独热编码(从中派生计数向量)存在的基本问题,即在向量空间中,“man” 和 “woman” 这样的语义相似的单词可能不会比 “man” 和 “banana” 这样语义不相似的单词更接近。因此,大多数预测模型隐含地假设输入空间中接近的点应该具有相似的输出的假设是无效的。

解决这个问题的标准方法是使用词嵌入,其中我们将每个稀疏的独热向量 (x_{nt} \in {0, 1}^V) 映射到一个低维稠密向量 (e_{nt} \in \mathbb{R}^K),使用 (e_{nt} = E x_{nt}),其中 (E \in \mathbb{R}^{K \times V}) 是学习得到的,以便将语义相似的单词放置在附近。有许多学习这样的嵌入的方法,我们将在第 20.5 节中讨论。

一旦我们有了一个嵌入矩阵,我们就可以将一个变长文本文档表示为一组词嵌入。然后,我们可以通过对这些嵌入求和(或平均)来将其转换为固定长度的向量:
[e_n = \sum_{t=1}^{T} e_{nt} = E \tilde{x}_n.]
其中 (\tilde{x}_n) 是来自方程 (1.37) 的词袋表示。然后,我们可以在逻辑回归分类器内部使用这个表示,我们在第 1.2.1.5 节中简要介绍过。整体模型的形式为
[p(y = c|x_n, \theta) = \text{softmax}_c(WE \tilde{x}_n).]
我们经常使用预先训练好的词嵌入矩阵 (E),在这种情况下,模型对 (W) 是线性的,这简化了参数估计(见第 10 章)。另请参阅第 15.7 节,讨论上下文词嵌入。

1.5.4.4 处理新词
在测试时,模型可能会遇到完全不同的单词,它以前从未见过。这被称为词汇外或OOV问题。由于单词集是一个开放类别,因此肯定会遇到这样的新词。例如,专有名词(人名和地名)的集合是无界的。

解决此问题的标准启发式方法是用特殊符号 UNK 替换所有新单词,表示“未知”。然而,这会丢失信息。例如,如果我们遇到单词 “athazagoraphobia”,我们可能会猜测它的意思是 “害怕某事”,因为 “phobia” 是英语中一个常见的后缀(源自希腊语),表示 “害怕”。(事实上,athazagoraphobia 意味着 “害怕被遗忘或被忽视”。)

我们可以在字符级别上进行处理,但这将要求模型学习如何将常见的字母组合成单词。更好的方法是利用单词具有子结构这一事实,然后将子词单元或单词片段作为输入 [SHB16; Wu+16];这些通常是使用一种称为字节对编码 [Gag94]

1.5.5 处理缺失数据
有时我们可能有缺失数据,其中输入 (x) 或输出 (y) 的某些部分可能是未知的。如果在训练期间输出未知,则该示例是无标签的;我们在第 19.3 节中考虑了这样的半监督学习场景。因此,我们重点关注输入特征的一些部分可能在训练或测试时缺失,或两者都缺失的情况。

为了建模这一点,让 (M) 是一个 (N \times D) 的二进制变量矩阵,其中 (M_{nd} = 1) 表示示例 (n) 中的特征 (d) 缺失,否则 (M_{nd} = 0)。让 (X_v) 为输入特征矩阵的可见部分,对应于 (M_{nd} = 0),并且 (X_h) 为缺失部分,对应于 (M_{nd} = 1)。让 (Y) 为输出标签矩阵,我们假设它是完全观察到的。如果我们假设 (p(M|X_v, X_h, Y) = p(M)),我们说数据是完全随机缺失的(MCAR),因为缺失不依赖于隐藏或观察到的特征。如果我们假设 (p(M|X_v, X_h, Y) = p(M|X_v, Y)),我们说数据是随机缺失的(MAR),因为缺失不依赖于隐藏特征,但可能依赖于可见特征。如果这些假设都不成立,我们说数据不是随机缺失的(NMAR)。

在 MCAR 和 MAR 情况下,我们可以忽略缺失机制,因为它对隐藏特征一无所知。然而,在 NMAR 情况下,我们需要建模缺失数据机制,因为缺乏信息可能是有信息的。例如,某人未填写调查中的敏感问题的答案(例如“您是否患有 COVID?”)可能对潜在值具有信息性。有关缺失数据模型的更多信息,请参见例如 [LR87; Mar08]。

在本书中,我们将始终做出 MAR 假设。然而,即使在这个假设下,当我们有缺失的输入特征时,我们不能直接使用判别模型,比如 DNN,因为输入 (x) 将具有一些未知的值。

一种常见的启发式方法称为均值插补,其中将缺失值替换为它们的经验均值。更一般地,我们可以对输入拟合一个生成模型,并使用它来填充缺失值。我们在第 20 章中简要讨论了这个任务的一些适当的生成模型,并在本书的续篇 [Mur23] 中详细讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王知为

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值