图解word2vec

本文为The Illustrated Word2vec的基础上与加上自己的一些理解完成。

Word2vec是一种有效创建单词嵌入的方法,自2013年以来一直存在。但是,除了其作为词嵌入方法的效用之外,它的某些概念甚至在商业性非语言任务中也被证明可以有效地创建推荐引擎并理解顺序数据。像Airbnb,阿里巴巴,Spotify和Anghami这样的公司都受益于从NLP领域中雕刻出这台出色的机器并将其用于生产中,从而为新型推荐引擎提供支持。

在本文中,我将介绍嵌入(embeddings)的概念以及使用word2vec生成嵌入的机制。 但是,让我们从一个示例开始,以熟悉如何使用向量来表示事物。 你是否知道五个数字(一个向量)可以代表你的个性?

个性嵌入:你喜欢什么?

以0到100的比例,你内向/外向度如何(其中0是内向度最高,而100是内向度最高)? 你是否曾经参加过MBTI之类的性格测验-甚至更好地参加了“五种人格特质”测验? 如果你还没有,这些测试会询问你一系列问题,然后在多个轴上给你打分,其中内向/外向就是其中之一。

 Big Five Personality Trait 测试结果的示例。 它可以真正告诉你很多有关您自己的信息,并显示出对学术,个人和专业成功的预测能力。 这是查找结果的地方。

想象一下,我的内向/外向得分为38/100。 我们可以这样绘制:

让我们将范围切换为从-1到1:

你觉得你知道一个人只知道关于他们的这一条信息吗? 不多。 人是复杂的。 所以让我们增加另一个维度-测试中另一个特征的分数。

我们可以将两个维度表示为图上的一个点,或者更好地表示为从原点到该点的向量。 我们有难以置信的工具来处理向量,很快就会派上用场。

我已经隐藏了我们正在绘制的那些特征,这样你就习惯了不知道每个维度代表了什么-但仍然从一个人个性的向量表示中获得了很多价值。

我们现在可以说,这个向量部分地代表了我的个性。 当你想把另外两个人和我比较时,这种表示的有用性就来了。 假设我被公共汽车撞了,我需要被一个性格相似的人取代。 在下图中,两个人中哪一个更像我?

在处理向量时,计算相似分的常用方法cosine_similarity:

person#1在性格上更像我。 指向同一方向(长度也起作用)的向量具有较高的余弦相似度得分。

然而,两个维度还不足以捕捉到足够的信息,了解不同的人是如何不同的。 几十年的心理学研究已经导致了五大特征(以及大量的子特性)。 所以让我们在比较中使用所有五个维度:

五个维度的问题是,我们失去了在两个维度绘制整洁的小箭头的能力。 这是机器学习中的一个常见挑战,在那里我们经常不得不在高维空间中思考。 但好的是,cosine_similarity仍然有效。 它与任意数量的维度一起工作:

cosine_similarity适用于任意数量的尺寸。 这些是更好的分数,因为它们是根据比较事物的更高分辨率表示来计算的。

在本节的最后,提出两个中心思想:

  • 我们可以将人(和事物)表示为数字的向量(这对机器来说很棒! )。

  • 我们可以很容易地计算出向量彼此之间有多相似。

词嵌入(Word Embeddings)

有了这一理解,我们可以继续查看经过训练的word-vector示例(也称为word-embeddings),并开始查看它们的一些有趣的属性。

这是一个“king”的word embeddings(使用维基百科的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更为相似。告诉你一些事情, 这些向量表示捕获了这些单词的相当一部分信息/意义/关联。

下面是另一个示例列表(通过垂直扫描寻找颜色相似的列来比较):

这里有几点是需要指出的:

  • 所有这些不同的单词都有一个直的红色列。他们在这个维度上相似的(我们并不知道每个维度代码是什么)
  • 我们可以发现woman和girl在很多地方都是彼此相似的,同样的是man和boy。
  • boy和girl也有彼此相似的地方,但与man和woman不同。这些可能是在编码一个模糊的青年概念吗?可能是这样。
  • 除了最后一个词外,所有的词都是代表人的词。 我添加了一个对象(水)来显示类别之间的差异。 例如,我们可以看到蓝色列一直向下,并在“water”的embedding之前停止”。
  • 有个明确的地方,“king”和“queen”是相似的,并有别于所有其他。 这些是不是在编码为一个模糊的皇室概念?

类比

著名的例子显示了一个难以置信的属性嵌入是类比的概念。 我们可以加减word embedding,并得出有趣的结果。 最著名的例子是公式:"king"-"man"+"woman":

使用python中的Gensim库,我们可以添加和减去单词向量,它会找到与结果向量最相似的单词。 图像显示了一个最相似的单词列表,每个单词都有其余弦相似度。

我们可以像以前那样想象这个类比:

"king"-"man"+"woman"的向量并不完全等于“queen”,但是“queen”是我们在这个集合中嵌入的40万个单词中最接近的词。

现在我们已经研究了经过训练的单词嵌入,让我们了解更多关于训练过程的信息。 但是在我们到达word2vec之前,我们需要看看单词嵌入的概念父级:神经语言模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值