
> A sample of customer data in a knowledge graph and the embedding vector attached to the graph.
去年,图嵌入在企业知识图(EKG)策略中变得越来越重要。图形嵌入将很快成为在大型十亿顶点EKG中快速找到相似项目的实际方法。正如我们在之前的文章中所讨论的那样,实时相似性计算对于许多领域至关重要,例如推荐,次佳行动和队列构建。
本文的目的是使您直观地了解什么是图形嵌入以及如何使用它们,以便您可以确定这些嵌入是否适合您的EKG项目。对于那些具有一定数据科学背景的人,我们还将介绍如何计算它们。在大多数情况下,我们将使用讲故事和隐喻来解释这些概念。我们希望您可以使用这些故事以有趣而令人难忘的方式向非技术同行解释图形嵌入。让我们从第一个故事开始,我称之为" Mowgli's Walk"。
莫格利步道
这个故事是根据拉德亚德·吉卜林(Rudyard Kipling)的精彩故事《丛林书》(The Jungle Book)制作的。

> The context for our story about Mowgli's walk
莫格利(Mowgli)是一个小男孩,他生活在史前村庄,周围有坚固的防护墙。莫格利(Mowgli)有一只可爱的宠物猫,有橙色的皮毛和条纹。有一天,莫格利(Mowgli)在村墙外的一条小路上走着,在前方的小路上看到了一只大老虎。Mowgli应该怎么做?

Moglie sees a tiger on the path. What should he do? Run back to the village or proceed down the path
他应该继续沿着这条小路走还是迅速跑回乡村和隔离墙?Mowgli没有太多时间来做出此决定。也许只有几秒钟。Mowgli的大脑正在进行实时威胁检测,他的生活取决于快速的决定。
如果Mowgli的大脑认为老虎与他的宠物猫相似,他将继续前进。但是,如果他意识到老虎是一种威胁,他将迅速逃回村庄的安全。
因此,让我们看一下Mowgli的大脑是如何演变成可以进行这种实时威胁评估的。老虎的图像通过Mowgli的眼睛到达,并传输到他大脑的视觉皮层。从那里提取图像的关键特征。这些特征的信号被发送到他大脑的对象分类区域。Mowgli需要将此图像与他所见过的所有其他图像进行比较,然后将其与熟悉的概念进行匹配。他的大脑正在进行实时相似度计算。
一旦Mowgli的大脑将图像与老虎概念相匹配,并且老虎概念又与"危险"情绪相关联,则Mowgli将在杏仁核的恐惧中心转身并跑回村庄。这种快速响应甚至可能没有经过Mowgli新皮层的高阶逻辑处理。如果必须这样做,莫格利可能需要更多时间来考虑他的决定。Mowgli的基因可能会从基因库中删除。我们已经开发了大脑中的数据结构,该结构通过分析眼中视网膜的数百万个输入(至1/10秒)来促进我们的生存。
所以现在您可能会问,这与图形嵌入有什么关系?图嵌入是小的数据结构,可帮助我们的EKG中进行实时相似性排名功能。它们的工作就像Mowgli大脑中的分类部分一样。嵌入可能会从数百万个数据点中吸收有关我们EKG中每个项目的大量信息。嵌入将其压缩为紧凑且易于使用低成本并行计算硬件(如FPGA)进行实时比较的数据结构。它们支持实时相似度计算,可用于对图中的项目进行分类并向用户提出实时建议。
例如,用户访问我们的电子商务网站,寻找送礼给婴儿送礼。我们应该推荐可爱的毛绒老虎玩具还是流行的新型喷火器?我们可以在1/10秒内推荐合适的商品吗?我相信,在不久的将来,公司能够快速响应客户需求并就下一个最佳措施提出建议的能力对于任何组织的生存至关重要。我们知道,EKG可以经济高效地存储有关客户历史记录的数万个数据点。嵌入可以帮助我们离线分析此数据,并实时使用压缩后的数据进行嵌入。
既然我们知道了我们要嵌入的内容,我们就可以理解为什么它具有特定的结构。
什么是图形嵌入?
在详细介绍如何存储和计算嵌入之前,让我们描述一下嵌入的结构以及使嵌入对实时分析有用的特征。
· 图嵌入是用于快速比较相似数据结构的数据结构。太大的图形嵌入需要更多的RAM和更长的时间来计算比较。在这里,较小通常更好。
· 图形嵌入会压缩我们图形中顶点周围数据的许多复杂特征和结构,包括顶点的所有属性以及主顶点周围的边和顶点的属性。顶点周围的数据称为"上下文窗口",我们将在后面讨论。
· 图形嵌入是使用机器学习算法计算的。像其他机器学习系统一样,我们拥有的训练数据越多,嵌入就越能体现出项目的独特性。
· 创建新的嵌入矢量的过程称为"编码"或"编码顶点"。从嵌入中再生顶点的过程称为"解码"或生成顶点。测量嵌入效果和查找相似项的过程称为"损失函数"。
· 嵌入中的每个数字可能没有"语义"或含义。嵌入可视为向量空间中某项的低维表示。在此嵌入空间中彼此接近的项目在现实世界中被视为彼此相似。嵌入关注性能,而不是可解释性。
· 嵌入是"模糊"匹配问题的理想选择。如果您有成百上千行复杂的if-then语句来构建队列,则图嵌入提供了一种使此代码更小且更易于维护的方法。
· 图嵌入与其他图算法一起使用。如果您要进行聚类或分类,则可以将图嵌入用作增加这些其他算法的性能和质量的附加工具。
在讨论如何存储嵌入内容之前,我们应该回顾一下数学邻近函数的概念。
嵌入空间中的邻近度
两个概念相似意味着什么?让我们从地理地图的隐喻开始。

Given any two points on a map, we can create a formula for calculating the distance between points
给定地图上的两个点,我们可以使用距离公式来计算这两个点之间的距离。输入只是两个点的坐标,用数字表示,例如其经度和纬度。对于空间中的两个点,也可以将问题概括为三个维度。但是在三维空间版本中,距离计算会为hight轴或z轴添加一个附加项。
嵌入工作中的距离计算以类似方式进行。关键是我们可能只有200或300个尺寸,而不仅仅是两个或三个尺寸。唯一的区别是为每个新维度添加一个距离项。
词嵌入类比
我们在图嵌入运动中获得的许多知识都来自自然语言处理领域。数据科学家使用单词嵌入技术创建了英语中任意两个单词或短语之间的精确距离计算。他们通过在数十亿个文档上训练神经网络,并考虑到周围所有其他单词时,使用特定单词出现在句子中的概率来做到这一点。周围的单词成为"上下文窗口"。由此,我们可以有效地对单词进行距离计算。

> Examples of word embeddings for the concepts of royalty and gender.
在上面的示例中,对将"国王","女王","男人和女人"一词放在二维地图上进行了想象。一个方面与版税有关,而一个方面与性别有关。一旦您在这些量表上给每个单词评分后,您就可以找到类似的单词。例如,单词"公主"在皇室性别空间中可能最接近单词"女王"。
这里的挑战是,在这些维度中手动给每个单词评分会花费很长时间。但是通过使用机器学习并具有良好的错误功能,该功能可以知道何时可以用一个单词替换另一个单词或在另一个单词之后执行此项目。我们可以训练一个神经网络来计算每个单词的嵌入。请注意,如果我们有一个以前从未见过的新词,则此方法将行不通。
英语中大约有40,000个单词用于常规语音。我们可以将每个单词放入一个知识图中,并在每个单词和每个其他单词之间创建成对链接。链接上的权重就是距离。但是,这将是低效的,因为通过使用嵌入,我们可以快速重新计算边缘和权重。
隐喻是,就像句子在概念图中的单词之间穿梭一样,我们需要随机遍历我们的EKG,以了解我们的客户,产品等之间的关系。
图形嵌入如何存储?
图形嵌入存储为与我们的EKG的顶点或子图相关联的数字向量。

> An illustration of a vertex embedding for a subgraph of a graph.
我们不会在嵌入内容中存储字符串,代码,日期或任何其他类型的非数字数据。我们使用标准化并行计算硬件使用数字进行快速比较。
嵌入尺寸
图形嵌入通常具有大约100到300个数字值。各个值通常是32位十进制数,但是在某些情况下,您可以使用较小或较大的数据类型。精度越小,向量的长度越小,您可以更快地将此项目与相似项目进行比较。
大多数比较在嵌入中实际上并不需要超过300个数字。如果机器学习算法很强大,我们可以将顶点的许多方面压缩为这些值。
每个值都没有语义
数字可能并不代表我们可以直接绑定到图形的单个属性或形状的东西。我们可能有一个称为"客户年龄"的功能,但是嵌入功能不一定会为年龄功能提供一个数字。年龄可能会混合成一个或多个数字。
任何顶点都可以嵌入
嵌入可以与EKG中的许多事物相关联。任何重要项目,例如客户,产品,商店,供应商,托运人,网络会话或投诉,都可能具有其自己的嵌入向量。
我们通常也不会将嵌入与单个属性相关联。单个属性通常没有足够的信息来证明创建嵌入的工作的合理性。
也有一些项目正在为边和路径创建嵌入,但是它们不像顶点嵌入那么普遍。
计算嵌入的上下文窗口
如前所述,顶点周围用于编码嵌入的区域称为上下文窗口。不幸的是,没有确定上下文窗口的简单算法。某些嵌入可能仅查看去年的客户购买量来计算嵌入。其他算法可能会考虑终身购买和自客户首次访问网站以来的搜索。了解时间对嵌入的影响(称为时间分析)可能需要其他规则和调整。显然,20年前在您的网站上购买婴儿纸尿裤的客户可能与上个月刚开始购买婴儿纸尿裤的客户大不相同。
嵌入与手工编码特征工程
对于那些熟悉标准图形相似度算法(例如余弦相似度计算)的人,我们希望进行快速比较。余弦相似度还会创建特征向量,这些特征也是简单的数值。关键区别在于,手动创建这些特征需要花费时间,并且特征工程师需要根据如何缩放值使用判断,以便权重相关。年龄和性别均可能具有很高的体重,并且对个人对巧克力或香草冰淇淋的偏爱评分的功能可能与通用商品的购买无关。
嵌入尝试使用机器学习自动找出哪些功能与对商品进行预测有关。
权衡创建嵌入
在设计EKG时,我们努力不将数据加载到没有价值的RAM中。但是嵌入确实占用了宝贵的RAM。因此,我们不想发疯并为我们很少比较的东西创建嵌入。我们希望关注于相似性计算何时阻碍了我们用户的实时响应。
同构图与异构图
关于图嵌入的许多早期研究论文都集中于每个顶点具有相同类型的简单图。这些被称为齐次图或单图。最常见的例子之一是引文图,其中每个顶点都是一篇研究论文,所有链接都指向该论文引用的其他研究论文。每个顶点都是一个人并且唯一的链接类型是"跟随"或"朋友"的社交网络是另一种齐次图。单词嵌入(每个单词或短语都有嵌入)是同类图的另一个示例。
不幸的是,知识图通常具有许多不同类型的顶点和许多类型的边。这些被称为多部分图。而且它们使嵌入的计算过程更加复杂。客户图可能具有诸如客户,产品,购买,Web访问,Web搜索,产品评论,产品退货,产品投诉,促销响应,优惠券使用,调查响应等类型。从复杂数据集创建嵌入可能需要花费一些时间设置和调整机器学习算法。
如何计算企业知识图嵌入
对于本文,我们将假设您的心电图较大。根据定义,EKG不能容纳在单个服务器节点的RAM中,并且必须分布在数十或数百个服务器上。这意味着不可能创建像邻接矩阵这样的简单技术。我们需要可在分布式图集群上缩放和工作的算法。
在Google Scholer上大约有1,400篇论文提到"知识图嵌入"主题。我并没有声称自己是所有各种算法的专家。通常,它们分为两类。
· 图卷积神经网络(GCN)
· 随机漫步
在结束本文之前,让我们简要介绍这两种方法。
图卷积神经网络(GCN)
GCN算法摘录了卷积神经网络在图像处理中所做的所有工作。这些算法查看给定像素周围的像素,以得出网络中的下一层。由于像素之间的距离是均匀且可预测的,因此图像被称为"欧几里得"空间。GCN通过环视当前顶点使用大致相同的方法,但是概念距离并不均匀且不可预测。
随机游走算法
这些算法倾向于遵循自然语言处理方面的研究。它们通过从目标节点开始随机遍历所有节点来工作。遍历有效地形成了有关目标顶点的句子,然后以与NLP算法相同的方式使用这些序列。
结论
我希望这篇博客文章中的故事和隐喻能使您更好地直观了解什么是图形嵌入以及如何使用它们来加速实时分析。尽管您可能对没有在所有平台上计算嵌入的确切函数库感到沮丧,但我认为从已发表的大量研究中您会看到这是一个活跃的研究领域。我认为,就像AlexNet在图像分类中取得突破并且BERT为NLP设定新标准一样,在接下来的几年中,我们将看到图形嵌入将在创新分析领域占据中心地位。
注意:对于今年参加虚拟神经信息处理系统(NeurIPS 2020)会议的任何人,有114个与嵌入相关的事件。嵌入显然是深度学习中的热门话题。
(本文由闻数起舞翻译自1.1K Followers的文章《Understanding Graph Embeddings》,转载请注明出处,原文链接:https://dmccreary.medium.com/understanding-graph-embeddings-79342921a97f)