Code前端首页关于Code前端联系我们

Line算法与deepwalk的对比

terry 2年前 (2023-09-27) 阅读数 67 #数据结构与算法

用户的注意力比例本身就是一个图结构。让我们根据用户的注意力比率创建一个用户嵌入,它实际上是一个图形嵌入。

deepwalk+word2vec 比较简单,效果还可以。该方法不会再次实施。

接下来写下我对直线算法的一些理解。

我们先来说说直线算法解决的问题。

1。它必须能够表示有向图。

2。它可以反映节点的权重和边的权重。论文中使用节点的权重作为节点的外部度作为节点的权重。

3。它可以反映节点的结构相似性,这实际上意味着它们具有相似的上下文。该直线算法建议一阶和二阶相似性。

接下来我们详细讲一下一级相似度和二级相似度。

一级相似度是指节点 i,j 通过边直接连接。使用节点 i 的向量导出节点 j 的向量的概率是多少?如果i和j没有边连接,则第一度相似度为0。如果对应到用户关注比例形成的图,这实际上是朋友之间的相似度。还值得注意的是,在第一顺序中,边被直接视为无向图的边,而不考虑方向性。对于用户之间的一阶相似度的边权重,可以根据用户之间的交互行为来计算接近程度。

二阶相似度的提出是为了解决一阶相似度的问题,而不考虑朋友的朋友之间的相似度。朋友的朋友之间的这种相似性是通过向每个顶点添加上下文向量来实现的。顶点有两个向量:上下文向量和它自己的节点向量。上下文向量意味着节点可以充当其相邻节点的上下文。彼此不直接连接的两个节点越相似,即它们具有的公共上下文节点越多,即它们具有的共同朋友越多。

二度相似度考虑了边的权重和节点的权重。纸结的重量采用结的外度。

line算法与deep walk的对比:

line考虑了边的权重,二次相似度也考虑了有向图,与单向注意力关系类似。

line算法在实现和训练过程中进行了优化:

line算法确定了相同的一阶和二阶经验概率,用于从i计算节点j的经验概率。然后对于一阶,直接用i节点向量和j节点向量计算,但是对于二阶,必须计算softmax,并且softmax分母必须计算上下文向量的所有点的概率。节点和节点 i 向量,直接计算非常复杂。

线算法的成本函数是经验概率和计算概率之间的KL发散。优化KL散度实际上相当于交叉熵。这一步的问题在于成本函数乘以权重。如果重量变化比较大,这个练习就很成问题。

softmax计算的问题当然可以像教学sana2vec时那样选择一些负样本并取负样本来解决。使用别名算法来降低采样过程中的时间复杂度。

为了解决权重因子对斜率的影响(乘上因子使梯度很大或者斜率很小),通过对边缘进行权重采样来解决。采样后,无需告知权重。

其实负采样和过采样的采样比例其实就相当于该类样本乘以一个因子。 但我的问题是,经过这样的采样,有些边将不会参与训练。

存在问题:

直线的一阶向量和二阶向量分开示教。如何组合一阶向量和二阶向量。论文给出的方法是直接将它们相加,然后给一阶和二阶赋予不同的权重。在

行中,考虑第一阶和第二阶。但仅限于邻居的邻居。我们怎样才能在一些边较少的节点上更好地训练呢?论文提出了一种添加边缘、在邻居之间构建边缘以及设置边缘权重的方法。

算法效果:

对于稀疏数据,行的第一个顺序优于第二个。将邻居添加到邻居可以提高效果。如果存在多个边,则第一度和第二度的组合比单独的第一度和第二度的组合更好。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门