DeepWalk模型的简介与优缺点

1、DeepWalk

[DeepWalk] DeepWalk- Online Learning of Social Representations (SBU 2014)

word2vec是基于序列进行embedding;但是,实际上实体之间的关系越来越复杂化、网络化。这个时候sequence embedding------>graph embedding。

图的定义:

G=(V,E),Evv

在这里插入图片描述

两大块内容:

1、构建序列;------->随机游走,截断随机游走

2、word2vec训练;------>Skip-gram

2.模型特点:

文章开创性的提出了随机游走 + skipGram的形式对节点进行表达,后续大量工业界对emb的应用都是参照这种形式进行的。

deepWalk的核心思想就是分为两步:
(1)通过关系网络图构建随机游走序列;
(2)把生成的序列通过skip-Gram的形式记性表示,将每个节点都能够表示在同一个空间中。文章对于算法效果的评定主要是通过对于几个网站的用户进行多标签分类的任务。
实验结果显示,提升效果比较明显,同时在训练数据比较少的情况下本算法也能够有较好的表现。

优势:

数据量比较稀疏的时候依然能够有很好的表现

支持大规模在线执行预测

能够实现并行化操作

应用到的算法和公式都是基于语言模型的。

文章提出了如果能够直接得到训练序列,也不一定需要进行随机游走这个过程。

3.参考文献:

simrank:https://www.cnblogs.com/pinard/p/6362647.html
https://zhuanlan.zhihu.com/p/45167021

https://www.cnblogs.com/pinard/p/7243513.html
原论文:http://www.perozzi.net/publications/14_kdd_deepwalk.pdf
论文翻译:https://www.jianshu.com/p/5adcc3d94159
应用参考文献:https://yq.aliyun.com/articles/716011

微信号
DeepWalk是一种基于随机游走的图嵌入方法,可以将图中的节点映射到低维向量空间中,以便进行下游任务,如节点分类和社区发现。TensorFlow是一个流行的深度学习框架,可以用于训练DeepWalk模型。 下面是使用TensorFlow训练DeepWalk模型的简要步骤: 1. 准备数据集:将图数据集转换为网络邻接矩阵的形式,并将其传递给DeepWalk算法。 2. 定义模型DeepWalk模型由两个部分组成:随机游走和嵌入学习。随机游走生成节点序列,嵌入学习将节点序列映射到低维空间。可以使用TensorFlow定义这两个部分的模型。 3. 训练模型:使用TensorFlow的优化器和损失函数来训练DeepWalk模型。优化器的作用是最小化损失函数,以便将节点嵌入到低维空间中。 4. 评估模型:使用评估指标来评估DeepWalk模型的性能,例如节点分类和社区发现。 下面是一个使用TensorFlow训练DeepWalk模型的示例代码: ```python import tensorflow as tf import numpy as np # 定义模型超参数 num_nodes = 100 embedding_size = 50 num_walks = 10 walk_length = 80 window_size = 10 num_neg_samples = 5 learning_rate = 0.001 # 定义输入数据 adj_matrix = np.random.rand(num_nodes, num_nodes) input_data = tf.placeholder(tf.float32, shape=[num_nodes, num_nodes]) # 定义随机游走模型 walks = [] for i in range(num_walks): for j in range(num_nodes): curr_node = j walk = [curr_node] for k in range(walk_length - 1): neighbors = np.where(adj_matrix[curr_node,:] > 0)[0] if len(neighbors) == 0: break curr_node = np.random.choice(neighbors) walk.append(curr_node) walks.append(walk) walks = np.array(walks, dtype=np.int32) # 定义嵌入学习模型 embeddings = tf.Variable(tf.random_uniform([num_nodes, embedding_size], -1.0, 1.0)) embed = tf.nn.embedding_lookup(embeddings, walks) embed = tf.reshape(embed, [-1, embedding_size]) # 定义损失函数和优化器 targets = tf.placeholder(tf.int32, shape=[None, num_neg_samples + 1]) weights = tf.Variable(tf.truncated_normal([num_nodes, embedding_size], stddev=1.0 / np.sqrt(embedding_size))) biases = tf.Variable(tf.zeros([num_nodes])) loss = tf.reduce_mean(tf.nn.nce_loss(weights, biases, inputs=embed, labels=targets, num_sampled=num_neg_samples, num_classes=num_nodes)) optimizer = tf.train.AdamOptimizer(learning_rate).minimize(loss) # 训练模型 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for i in range(1000): _, curr_loss = sess.run([optimizer, loss], feed_dict={input_data: adj_matrix, targets: np.random.randint(num_nodes, size=[walks.shape[0], num_neg_samples + 1])}) print("Iteration: {}, Loss: {}".format(i, curr_loss)) # 评估模型 embeddings = sess.run(embeddings) # ... ``` 在此示例中,我们首先定义了DeepWalk模型的超参数,包括节点数量,嵌入维度,随机游走参数和优化器参数。接下来,我们使用numpy生成随机邻接矩阵,并定义输入数据。然后,我们定义随机游走模型,生成节点序列。最后,我们定义嵌入学习模型,并使用TensorFlow的优化器和损失函数来训练模型。最终,我们可以使用评估指标来评估模型的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT界的小小小学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值