当前位置:   article > 正文

小孩都看得懂的 Embedding

embedding vector (list) 中文


全文共 2014 字,16 幅图,

预计阅读时间 20 分钟。

本文是「小孩都看得懂」系列的第七篇,本系列的特点是极少公式没有代码只有图画只有故事。内容不长,碎片时间完全可以看完,但我背后付出的心血却不少。喜欢就好!

  1. 小孩都看得懂的神经网络

  2. 小孩都看得懂的推荐系统

  3. 小孩都看得懂的逐步提升

  4. 小孩都看得懂的聚类

  5. 小孩都看得懂的主成分分析

  6. 小孩都看得懂的循环神经网络

  7. 小孩都看得懂的 Embedding

本文受 Jay Alammar 2019年在 QCon 做的演讲启发,纯纯的致敬!

Embedding 中文是嵌入,一种把对象 (object) 映射 (map) 为实数域向量 (vector) 的技术。

看不懂?我们来举个性格嵌入 (personality embedding) 的例子。

1

场景:斯蒂文的新工作面试到了最后一轮,拿到 offer 基本已定,只需要完成一个性格测试,从不同维度上给自己在 0 到 100 的范围打分。

2

斯蒂文认为自己比较外向,给自己在「外向-内向」的维度上在打了 20 分。注意 0 分是极度外向,100 分是极度内向。

标准化得分使其在 -1 和 1 之间,得到的分数是 -0.4。解下列方程即可。

    20/(100 - 0) = x/(1 - (-1))

这样斯蒂文在「外向-内向」维度由一个实数 -0.4 来表示,该维度可看成是描述斯蒂文性格的一个特征。

3

人是复杂的动物,一个特征不可能完全描述人的性格,斯蒂文在第二个特征上给自己打分为 0.8 (按同样的方法,先在 0~100 之间得分,再标准化)。


现在斯蒂文的性格可以由 [-0.4, 0.8] 二维向量来表示。

4

如果现在斯蒂文放鸽子不去这个公司,公司想找一个和斯蒂文性格类似的求职者。

根据他们在前两个特征上的得分,公司应该用谁来代替斯蒂文?

5

公司应该选这个女生,因为比起另外那个男生,她的性格和斯蒂文的性格更接近。

这里向量相似度是用余弦距离来计算,其值范围在 -1 到 1 之间,值越大 (1) 越相似,值越小 (-1) 越相反。对数学感兴趣的小孩  可以参考计算余弦距离的公式。

下图看三个人完整的性格测试得分,这种把性格转换成 4 维向量的技术可称为性格嵌入 (personality embedding)。

计算性格相似度后,还是会用这位女生来替代放鸽子的斯蒂文。


总结:我们可以将人和事物 (所有东西) 表示为代数向量,而计算机很容易能计算出这些向量之间的相似程度。

6

性格嵌入讲完后,让我们来看看大名鼎鼎的词嵌入 (word embedding)。类比:

  • 性格嵌入是将性格转换成向量的技术

  • 词嵌入是将转换成向量的技术

词嵌入的技术本帖当然不谈,要不小孩就看不懂了 (当然比性格嵌入的技术复杂)。先看看词嵌入的结果向量,以 King 举例。

单词 King 由 50 个实数来表示,即用一个 50 维的向量能代表单词 King。

其他单词也可以用不同的 50 维的向量来表示 (具体维度大小根据实际问题来决定,常用的是 300 维度,这里用 50 维来举例)。

为了后文能快速找出不同词之间的同义,我们来可视化 50 维向量,比如蓝色代表负值 (越深越负),红色代表正值 (越深越正)。

如果两个向量在很多维度上的颜色相同,那么这两个向量相似。

接下来让我们看看单词 King, Man 和 Woman 的向量可视化。

不难看出,Man 和 Woman 之间相似度比起它们和 King 之间相似度更高。

7

接下来,我们看更多词向量可视化的例子。

人 vs 水

从上图两点值得注意:

  1. 黄色五角星对应的栏:女人、女孩、男孩、男人、国王和皇后是深蓝色,水是浅蓝色,该栏对应的特征可能是有无生命

  2. 红色五角星对应的栏:所有事物都是深红色,该栏对应的特征可能是名词

女 (男) 人 vs 女 (男) 孩

女人和女孩非常相似 (都是女性),男人和男孩也非常相似 (都是男性),而且两对词的相似点也很多重叠 (用黄色五角星标注了),可能显示着「成年人和未成年人」的关系。

女孩 vs 男孩

女孩和男孩非常相似,但是他们的相似处和女人和男人的相似处不太一样,可能就是「成年人和未成年人」的区别。

国王 vs 皇后

国王和皇后非常相似,但是它们的相似处 (用黄色五角星标注了) 在 (女人,男人)、(女孩,男孩) 这些「词对」中没有体现。该特征应该是有皇家色彩 

让人惊艳的东西来了,词嵌入或词向量可以发掘出词与词的类比关系。我们可以在词向量上做加法和减法,最后得到一些有趣的结果。最有名的结果是

    国王 - 男人 + 女人 = 皇后

小孩可以忽略下面一段:

用 Python Gensim 库可以得到上面结果:

皇后的概率最高,记住机器不是人,永远是以概率的形式给出结果。

重新调整上面公式可以得到不同表达式

  1. 国王 - 男人 = 皇后 - 女人

  2. 国王 - 皇后 = 男人 - 女人

1 式抽象出皇家的词向量,2 式抽象出男性减去女性的词向量。

词向量的类比关系应用还有很多,比如

    中国 - 北京 = 法国 - 巴黎

    do - did = go - went

等等。

总结


在自然语言处理 (Natural Language Processing, NLP) 中,词嵌入把词转换成实数向量,从 word 转到 vector,因此大家都也把词嵌入称为 word2vec,用到的技术就是神经网络。

在推荐系统 (Recommender System, RS) 中,物品嵌入把推荐的物品转换成实数向量,item2vec。

图神经网络 (Graph Neural Network, GNN) 存在很多通路,将各个节点连成一条线,这些连线蕴含着节点之间的相互关系,就如同句子中各个词语的关系一样,这样我们也可以用节点嵌入的方法把节点 node 转成向量 vector,node2vec。

万物皆嵌入

everything2vec

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/374494
推荐阅读
相关标签
  

闽ICP备14008679号