Random Walks
Skip Gram
Skip Gram은 NLP model에서 매우 유명한 model인 Word2Vec(정리 잘 된 blog)에서 제안한 방법이다. 하나의 단어를 embedding 하려고 할 때, 해당 단어의 앞뒤로 window size 만큼씩의 단어를 함께 고려한다. 이때 window에 속하는 단어들로 중심단어를 학습하면 CBOW라는 방법이 되고, 중심단어로 window의 단어들을 학습시킨다면 Skip Gram이 된다. 보통 Skip Gram은 같은 data를 사용하더라도 CBOW보다 단어당 학습되는 횟수가 많아 성능이 더 좋다고 한다.
위 내용을 loss function으로 만들어 수식으로 적으면 다음과 같다.
(는 주어진 data에서 임의의 node, 는 node 의 neighbors를 나타냄.(skip gram에선 window size에 드는 단어들) 는 node 의 embedding vector)
이를 풀어서 해석하면 다음과 같다. 모든 node 에 대해, 각 node 의 neighbors인 node 에 대하여, node $$ 의 embedding이 주어졌을 때 node 가 나타날 확률의 total summation이다. 즉, 특정 node 가 주어졌을 때, 의 neighbor인 node 가 같이 나타날 확률을 높이는 방향으로(embedding의 관점에서 보자면 vector가 유사하게 되도록) 학습이 진행된다.
Loss function에서 확률은 다음과 같이 다시 쓸 수 있다.
확률은 softmax함수에 log를 취한 값을 사용한다. 이때 softmax 함수의 분모 부분에 negative sampling이라는 약간의 trick이 들어간다. 원래대로라면 분모에 의 모든 node들에 대한 inner product이 들어가야한다. 하지만 node의 갯수가 많아질수록 이는 점점 computational cost가 기하급수적으로 늘어나게 된다. 이를 해결하기 위해 node 에 해당되지 않는 node들의 집합 에서 k개의 sample을 임의대로 뽑아 분모로 approximation하여 사용한다. 이를 negative sampling이라고 한다.
위와 같이 DeepWalk model은 Random Walk을 통해 특정 node의 random variable인 Walk들을 만들어내고, 이를 기반으로 하여 skip gram을 사용하여 각 embedding vector들을 update하는 방식으로 학습을 진행한다.(위의 notation들 중 특히 Skip Gram 설명부분은 상당부분 원문 paper와 다르다. 보다 가독성이 좋고 이해하기 쉬운 CS224W에서의 notation을 참조하여 기술하였음을 알린다.)
장점:
단점: