入门自然言语处理必看:图解词向量

图灵汇官网

词嵌入(embedding)是机器学习中的一个重要技术,尤其在自然语言处理领域。如果你使用过输入法的自动补全功能,你可能已经体验到了词嵌入带来的便利。

在过去几十年中,基于神经网络的词嵌入技术得到了快速发展。特别是近年来,通过使用诸如BERT和GPT2等先进的模型,词嵌入技术变得更加成熟。

Word2vec是一种有效的词嵌入方法,首次提出于2013年。除了作为一种词嵌入的方法,它的一些概念已经被应用于推荐系统和时间序列数据分析。

本文将探讨词嵌入的概念及其应用。我们将从一个具体的例子开始,了解如何使用向量来表示事物。例如,你的性格是否可以用一个由五个数字组成的列表(向量)来表示?

词嵌入表示你的性格

如何用0到100的范围来表示一个人的外向程度(其中0代表最内向,100代表最外向)?你是否参加过MBTI或其他人格测试?如果还没有,这些测试会通过一系列问题来评估你在多个维度上的得分,包括外向程度。

假设我的外向程度评分为38/100。我们可以用图表来表示这一点:

通过将范围缩小到-1到1,可以更直观地展示这一数据:

当只有这一个维度的信息时,你能多大程度上了解一个人?人性非常复杂,因此需要更多的测试维度来全面描述一个人。

现在,我们可以将两个维度表示为坐标平面上的一个点,或者作为从原点到该点的向量。

在这种情况下,向量可以代表我的一部分性格。当我们想要比较两个人的性格时,这种方法就显得非常有用。例如,如果我要找一个性格相似的人,我们可以通过比较向量来找出最合适的替代者:

处理向量时,常用的计算相似度的方法是余弦相似度:

显然,1号替身在性格上与我更为相似。指向相反方向的向量(长度也起作用)具有更高的余弦相似度。

两个维度还远远不够捕捉不同人群的全部信息。心理学家发现,五大人格特征(以及许多子特征)是描述人的主要维度。因此,我们需要使用所有五个维度来进行比较:

在高维度空间中,很难用二维图来展示这些信息。然而,余弦相似度的计算仍然有效,适用于任意维度:

余弦相似度适用于任意维度的数据,因此在高维度空间中也能得到合理的相似度得分。

总结两个核心思想: 1. 可以将人和事物表示为代数向量,这样机器可以进行处理。 2. 可以轻松计算向量之间的关系,从而判断它们是否相似。

词嵌入

通过上文的了解,接下来我们将探讨训练好的词向量(即词嵌入),并进一步探索它们的一些有趣特性。

这是一个“king”这个词的词嵌入(在维基百科上训练的GloVe向量): [ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

这是一个包含50个数字的列表。单独看这些数字可能看不出什么,但通过简单的可视化处理,可以更容易地与其他词向量进行比较。把这些数字排成一行:

将单元格的颜色根据数值变化进行编码(接近2为红色,接近0为白色,接近-2为蓝色),可以得到如下图像:

忽略数字,仅查看单元格的颜色。现在,我们来比较“king”和其他单词:

可以看出,“man”和“woman”彼此之间更加相似,而“king”相对不同。这表明词向量很好地反映了这些单词的意义和关联。

这是另一个示例列表:

总结: 1. 所有的单词都有一个直的红色列,表明它们在某个维度上是相似的(尽管不知道具体含义)。可以看到,“woman”和“girl”在许多维度上相似,“man”和“boy”也是如此。“boy”和“girl”也有某些相似之处,但这些相似之处与“woman”或“man”不同。这些维度能否总结出一个模糊的“youth”概念?除了最后一个单词,所有单词都代表人。通过加入“water”这个物体,可以展示不同类别之间的差异。可以看到,蓝色列一直向下,并在“water”的词嵌入前停止。“king”和“queen”彼此之间相似,但与其它单词不太相似。这些不相似的维度能否总结出一个模糊的“royalty”概念?

类比

词嵌入的有趣属性之一是类比。通过加减词向量可以得到一些有趣的结果。一个经典的例子是公式:“king”-“man”+“woman”:

在Python中,使用Gensim库可以添加和减去词向量,并找到与结果向量最相似的单词。该图像显示了最相似的单词列表,输入其与每个单词的余弦相似性。

同样进行可视化:

虽然“king”-“man”+“woman”生成的向量并不完全等同于“queen”,但“queen”是整个40万词汇中最接近它的单词。

至此,我们已经了解了训练好的词嵌入向量。接下来,我们将详细介绍训练过程。在使用Word2vec之前,还需要了解词嵌入的上层概念:神经语言模型。

神经语言模型

自然语言处理中最常见的应用之一是智能手机输入法中的下一个单词预测功能。

单词预测可以通过语言模型来实现,语言模型会从已知单词列表中预测可能紧跟其后的单词。

在下面的手机截屏中,模型接收了两个绿色单词(thou shalt),并推荐了一组单词(“not” 是其中一个可能性最大的):

可以将这个模型想象成一个黑盒子:

实际上,该模型并不会只输入一个单词。实际上,所有已知单词(模型的词库,可能有数千到数百万个单词)都会按可能性打分,输入法程序会选择其中得分最高的推荐给用户。

自然语言模型的输入是模型所知单词的概率评分,通常用百分比表示,在实际应用中,40%的分数在输入向量中表示为0.4。

自然语言模型(参考Bengio 2003)在训练完成后,将按照以下三个步骤进行预测:

第一步与本文主题最为相关,因为它讨论的是Embedding。模型经过训练后会生成一个映射所有单词的词向量矩阵。在预测时,输入法预测算法会查询输入单词的词向量,然后计算预测值:

接下来,我们将重点关注模型的训练过程,了解它是如何构建这个映射矩阵的。欢迎继续关注。 [/indent]

本文来源: 图灵汇 文章作者: 张娇
    下一篇