向量嵌入是机器学习领域中一项引人入胜且极具实用性的技术。它们构成了众多自然语言处理(NLP)、推荐系统和搜索算法的基础。如果您曾经使用过推荐引擎、语音助手或语言翻译工具,那么您已经体验过嵌入技术的强大功能。
机器学习算法,与大多数软件算法一样,需要数字来进行计算。有时我们处理的是包含数值的列数据集,或者是可以转换为数值的数据(如序数、分类数据等)。而在其他情况下,我们可能会遇到更为抽象的数据,例如一整篇文本。这时,我们会创建向量嵌入,即将数据转换为数字列表,以便于执行各种操作。无论是一段文本还是其他任何对象,都可以被简化表示为一个向量,甚至数值数据也可以转换为向量,以便于进一步处理。
向量之所以如此有用,是因为它们能够在向量空间中表达语义相似性,即将人类感知到的相似性转化为向量的接近程度。
换言之,当我们将现实世界中的对象和概念,如图像、音频记录、新闻文章、用户资料、天气模式和政治观点等,通过向量嵌入进行表示时,它们之间的语义相似性可以通过这些点在向量空间中的接近程度来量化。因此,向量嵌入适用于聚类、推荐和分类等常见的机器学习任务。
例如,在聚类任务中,算法会将相似的点归为同一簇,并尽可能保持不同簇之间的差异。在推荐任务中,推荐系统会根据向量嵌入的相似性,寻找与给定对象最相似的其他对象。在分类任务中,我们根据最相似对象的标签来进行新对象的分类。
创建向量嵌入的一种方法是利用领域知识来设计向量值,这个过程称为特征工程。例如,在医学成像中,我们会利用医学知识来量化图像中的一系列特征,如形状、颜色和区域等,以捕捉其语义信息。然而,这种方法需要领域专家知识,且难以大规模应用。
更常见的做法是训练模型自动将对象转换为向量,深度神经网络是实现这一目标的常用工具。这些模型产生的嵌入通常是高维的(可达两千维)且密集的(所有值非零)。对于文本数据,Word2Vec、GLoVE和BERT等模型可以将单词、句子或段落转换为向量嵌入。图像可以通过卷积神经网络(CNN)等模型进行嵌入,例如VGG和Inception。音频记录也可以通过其频谱图的视觉表示转换为向量。
以卷积神经网络进行图像嵌入为例,原始图像可以表示为灰度像素,相当于一个包含0到255整数值的矩阵。0代表黑色,255代表白色。图像的灰度像素、像素灰度值和矩阵三者之间的对应关系如下:
-
左侧子图像展示灰度像素。
-
中间子图像列出像素的灰度值。
-
最右侧子图像定义了整个矩阵。
这种嵌入方式非常适合保留图像中像素邻域的语义信息,但对图像变换(如平移、缩放、裁剪等)非常敏感,因此通常作为学习更稳健嵌入的原始输入。
卷积神经网络通过层级化的小局部子输入——感受野——来处理输入数据。每个网络层的神经元处理来自前一层的特定感受野。网络的每一层要么对感受野应用卷积操作,要么通过子采样减小输入尺寸。
学习网络权重,即嵌入模型,需要大量标记图像。权重的优化方式是使得相同标签的图像嵌入比不同标签的图像更接近。一旦我们学习了CNN嵌入模型,就可以将图像转换为向量,并使用K-最近邻索引进行存储。这样,对于任何一个新的未见过的图像,我们都可以利用CNN模型进行转换,检索其k个最相似的向量,从而找到相应的相似图像。
尽管这里以图像和CNN为例,但向量嵌入可以应用于任何类型的数据,并且有多种模型和方法可以用来创建它们。
嵌入向量使执行自然语言和代码任务变得容易,如语义搜索、聚类、主题建模和分类。嵌入对于处理自然语言和代码非常有用,因为它们可以被其他机器学习模型和算法(如聚类或搜索)轻松地消费和比较。
数值上相似的嵌入在语义上也是相似的。例如,“canine companions say”的嵌入向量与“woof”的嵌入向量比与“meow”的嵌入向量更为接近。
嵌入可以将对象表示为包含其语义信息的密集向量,这使它们在广泛的机器学习应用中非常有用。
相似性搜索是向量嵌入最受欢迎的用途之一。像KNN和ANN这样的搜索算法需要计算向量之间的距离以确定它们的相似性。向量嵌入可以用来计算这些距离,而最近邻搜索可以用于去重、推荐、异常检测、反向图像搜索等任务。
即使我们不直接在应用程序中使用嵌入,许多流行的机器学习模型和方法在内部也依赖于它们。例如,在编码器-解码器架构中,编码器生成的嵌入包含了解码器产生结果所需的信息,这种架构在机器翻译和标题生成等应用中得到了广泛应用。