嵌入:嵌入空间和静态嵌入

嵌入嵌入空间中数据的向量表示法。一般来说,模型会通过将初始数据向量的高维空间投影到低维空间来查找潜在的嵌入。如需了解高维数据与低维数据的对比,请参阅分类数据模块。

嵌入有助于更轻松地对大型特征向量(例如上一节中讨论的表示餐食项的稀疏向量)进行机器学习。有时,嵌入空间中项的相对位置可能具有潜在的语义关系,但通常,找到低维空间以及该空间中的相对位置的过程是人类无法解释的,并且生成的嵌入很难理解。

不过,为了便于人们理解,并大致了解嵌入向量如何表示信息,请考虑以下对菜肴热狗披萨沙拉沙瓦玛罗宋汤的一维表示,该表示的评分标准为“最不像三明治”到“最像三明治”。单个维度是衡量“三明治度”的虚构测量值。

图 3. 从“三明治度”轴来看,从低到高依次为:Borscht、沙拉、披萨、热狗、沙威玛。
图 3. 沿着想象的“三明治度”维度排列的食物。

苹果馅饼会落在线条上的哪个位置?可以说,它可以放置在 hot dogshawarma 之间。不过,苹果馅卷似乎还具有额外的甜度甜点感维度,这使其与其他选项截然不同。下图通过添加“甜度”维度直观地展示了这一点:

图 4. 与上图相同的图片,但垂直轴是甜度。苹果馅饼介于热狗和沙瓦玛之间,但在水平轴上较高,在甜度轴上更高。
图 4. 按“三明治度”和“甜点度”绘制的食物图。

嵌入使用 n 个浮点数(通常介于 -1 到 1 或 0 到 1 之间)表示 n 维空间中的每个项。图 3 中的嵌入使用单个坐标表示一维空间中的每种食物,而图 4 使用两个坐标表示二维空间中的每种食物。在图 4 中,“苹果馅饼”位于图表的右上象限,可以分配点 (0.5, 0.3),而“热狗”位于图表的右下象限,可以分配点 (0.2, –0.5)。

在嵌入中,任何两个项之间的距离都可以通过数学方法计算出来,并且可以被解释为衡量这两个项之间相对相似程度的指标。在模型对数据的表示中,彼此接近的两项(例如图 4 中的 shawarmahot dog)比彼此距离较远的两项(例如 apple strudelborscht)更相关。

另请注意,在图 4 中的二维空间中,apple strudelshawarmahot dog 的距离比在 1 维空间中要远得多,这与直觉相符:热狗和沙瓦玛之间的相似程度高于 apple strudel 与热狗或沙瓦玛之间的相似程度。

现在,考虑一下罗宋汤,它比其他食物含有更多的液体。这提示了第三个维度,即液体度,或食物的液体度。添加该维度后,您可以通过以下方式以 3D 方式可视化项:

图 5. 与上图相同的图片,但添加了第三个与其他两个轴正交的液体轴,并且酸菜汤沿着该轴移动了很远。
图 5. 按“三明治度”“甜点度”和“液体度”绘制的食物图。

在 3D 空间中,汤圆会位于何处?它是汤状的,如罗宋汤,也是甜点,如苹果卷,绝对不是三明治。以下是一个可能的展示位置:

图 6. 与上图相同的图片,但汤圆在甜点度和液体度方面得分较高,在三明治度方面得分较低。
图 6. 在前一张图片中添加了汤圆,其“甜点度”和“液体度”较高,“三明治度”较低。

请注意这三个维度中包含了多少信息。 您可以想象添加其他维度,例如食物的肉质或烘烤程度,但 4D、5D 和更高维度的空间很难直观呈现。

真实的嵌入空间

在现实世界中,嵌入空间是 d 维的,其中 d 远高于 3,但低于数据的维度,并且数据点之间的关系不一定像上图中那样直观。(对于词嵌入,d 通常为 256、512 或 1024。1

在实践中,机器学习从业者通常会设置特定任务和嵌入维度数。然后,模型会尝试在指定维度数的嵌入空间中将训练示例排列得较近,或者根据维度数进行调整(如果 d 不固定)。单个维度很少像“甜度”或“流动性”那样易于理解。有时,可以推断出它们的“含义”,但并不总是如此。

嵌入通常因任务而异,如果任务不同,嵌入也会不同。例如,用于分类素食与非素食的模型生成的嵌入会不同于根据时间或季节推荐菜肴的模型生成的嵌入。例如,“麦片”和“早餐香肠”在时段模型的嵌入空间中可能相距不远,但在素食与非素食模型的嵌入空间中相距甚远。

静态嵌入

虽然嵌入因任务而异,但有一个任务具有一定的普遍适用性:预测字词的上下文。经过训练来预测字词上下文的模型会假定出现在类似上下文中的字词在语义上相关。例如,如果训练数据包含“他们骑着骡子下到了大峡谷”和“他们骑着马下到了峡谷”这两个句子,则表明“马”出现在与“骡子”类似的上下文中。事实证明,基于语义相似性的嵌入在许多常规语言任务中都非常有效。

虽然 word2vec 模型是一个较旧的示例,并且在很大程度上已被其他模型取代,但仍有助于说明问题。word2vec 会对文档语料库进行训练,以便为每个字词获取单个全局嵌入。如果每个字词或数据点都有单个嵌入向量,则称为静态嵌入。以下视频简要介绍了 word2vec 训练。

研究表明,这些静态嵌入在训练后会编码一定程度的语义信息,尤其是字词之间的关系。也就是说,在类似情境中使用的字词在嵌入空间中会彼此靠近。生成的具体嵌入向量将取决于用于训练的语料库。请参阅 T. 如需了解详情,请参阅 Mikolov 等人 (2013) 的“Efficient estimation of word representations in vector space”(在向量空间中高效估算词表示)。


  1. François Chollet,使用 Python 进行深度学习(Shelter Island, NY: Manning, 2017),6.1.2。