<aside> 💡 프로젝트를 위해 공부했던 DeepWalk 에 대해 정리하고자 한다. 이번 포스팅은 DeepWalk로 불리는 'Online Learning of Social Representations' 논문의 내용을 바탕으로 참고 자료와 함께 다시 정리한 내용이다.

</aside>

0. Preliminaries

1. introduction

2. Method

$$ Pr(W_{v_i}\;|\;\Phi(W_{v_1}),\,\Phi(W_{v_2})\,,\,\Phi(W_{v_2})\,,\, \dots\,,\,,\,\Phi(W_{v_{i-1}})) $$

$$ Hierarchical\,Softmax = Pr(u_k\,|\,\Phi(v_j))=\Pi^{\lceil log|v| \rceil}_{l=1}Pr(b_l\,|\,\Phi(v_j)) $$

Untitled

3. Implementation

class DeepWalk :
    def __init__(self, G, num_walks, walk_length) :
        import random
        from gensim.models import Word2Vec
        self.walks = []

        for i in range(num_walks) :
            for node in G.nodes() :
                walk = [node]

                for j in range(walk_length) :
                    neighbors = list(G.neighbors(walk[-1]))

                    if len(neighbors) > 0 :
                        walk.append(neighbors[random.randint(0, len(neighbors) -1)])
                        self.walks.append(walk)

        model = Word2Vec(self.walks, vector_size = 2, window = 5, min_count = 1, sg = 1, workers = 2)
        self.ne = {node : model.wv[node].tolist() for node in G.nodes()}
        self._get = {"walks" : self.walks, "node_embedding" : self.ne}

    def __len__(self) :
        return len(self.ne)

    def __getitem__(self, item) :
        return self._get[item]

3. reference

[0] DeepWalk : Online Learning of Social Representations