7. Graph Representation Learning

tobigsGNN·2021년 3월 5일
8

CS224W Review

목록 보기
7/18
post-thumbnail

작성자 : 신민정

Contents

  1. Intro
  2. Embedding Nodes
  3. Random Walk Approaches to Node Embeddings
  4. Translating Embeddings for Modeling Multi-relation Data
  5. Embedding Entire Graphs

0.Intro

이번 강의는 graph domain에서의 representation learning에 대해 알아보겠습니다.

representation learning이란, 어떤 task를 수행하기에 적절하게 데이터의 representation을 변형하는 방법을 학습하는 것입니다. 즉 어떤 task를 더 쉽게 수행할 수 있는 표현을 만드는 것입니다. Raw data에 많은 feature engineering과정을 거치지 않고 데이터의 구조를 학습하는 것으로, 딥러닝 아키텍처의 핵심요소라고 할 수 있습니다. 입력 데이터의 최적의 representation을 결정해주고 이 잠재된 representation을 찾는 것을 representation learning 또는 feature learning이라고 부릅니다.

grpah에서의 representation learning 역시 같은 의미입니다.
graph의 node uu를 mapping function ff를 통해 Latent space(=embedding space)로 embedding할 수 있습니다. graph의 feature representation(=embedding)을 통해 다양한 task를 효과적으로 수행할 수 있습니다. 이때 효과적인 representation이란, task에 specific하지 않고 다양한 task에도 적용할 수 있는 representation을 의미합니다.




그렇다면 왜 graph를 Embedding해야 할까요??

graph의 인접행렬(Adjacency Matrix)는 각 column이 node를 의미하기 때문에 sparse하고 크기 매우 큽니다. 인접행렬을 그대로 다루기에는 computation 측면에서 문제가 있습니다. 그렇기 때문에 grpah의 각 node를 low-dimension으로 mapping할 필요가 있습니다. Adjacency Matrix의 dimension보다 dimension이 낮은 Latent Dimension으로 embedding하여 computation의 효과를 얻을 수 있습니다. 각 node를 embedding하는 것이기 때문에 node별 representation이 가능합니다.
단, 각 column이 node를 나타내는 adjacency matirx와는 다르게, latent demension에서 나타낼 수 있는 embedding matrix의 column은 각 node를 나타내지는 않습니다. latent demension의 축들은 node가 아닌 node간의 상관관계와 같은 graph의 정보를 의미하는 feature가 됩니다. 즉, Adjacency matrix의 그래프 정보를 Latent Dimension으로 encoding하고, node representation을 만들어내는 것입니다.
graph의 정보를 담았기 때문에, latent space상에서 나타내지는 node간의 similarity은 실제 graph에서의 node간의 similarty라고 볼 수 있습니다.

위 그림은 grpah를 2D latent space로 embedding한 예시입니다. 앞서 말씀드린것 처럼 각 node를 latent space에 mapping할 수 있고, latent space의 축은 node를 의미하는 것이 아닌 그래프의 정보를 담고있다고 이해할 수 있습니다.




그렇다면 기존 Deep Learning에서 사용하는 network들로 embedding을 할 수 있을까요??
결론부터 말씀드리자면 사용할 수 없습니다.
CNN은 고정된 크기의 이미지나 그리드에 적용할 수 있고, RNN이나 Word2Vec은 텍스트나 시퀀스 데이터에 적용됩니다.
하지만, graph는 이러한 데이터들보다 훨씬 복잡합니다. 이미지나 그리드처럼 특정 차원에 표현될 수 없고, 가끔 차원이 변동되고 multi-modal feature를 갖기도 합니다. 따라서 graph를 embedding하기 위해서는 graph만의 방식을 적용합니다.



2. Embedding Nodes

이제 graph의 node들을 embedding하는 방법에 대해 알아보겠습니다.

  • graph GG
  • vertex set VV
  • adjacency matrix AA (assume binary)

node feature나 그 외 정보들은 사용되지 않습니다. (이하 Encoding은 Embedding과 같은 의미입니다.)

encoding의 목적은 embedding space상에서의 similarity와 원본 graph의 similarity최대한 동일하게 만드는 것입니다.
embedding space상의 두 vector의 similarity는 dot product zvTzuz_v^Tz_u로 측정할 수 있습니다.

The dot product is proportional to both the cosine and the lengths of vectors.

과정은 다음과 같습니다.
1). Define encoder -> 각 node를 low-dimentional vecotr로 mapping(embedding)하는 방법 정의
znode=ENC(node)z_{node} = ENC(node)
2). Define a node similarity function -> 원본 graph의 node간 유사도를 측정하는 함수를 정의
similarity(u,v)similarity(u,v)
3). Optimize the parameters of the encoder so that
similarity(u,v)zvTzusimilarity(u,v) \approx z_v^Tz_u

1) Encoder

Shallow Encoding

shallow encoder :encoding is just an embedding-lookup
ENC(v)=ZvENC(v)=Zv

  • ZRd×VZ\in \mathbb{R}^{d\times|V|} : matrix. 각 column이 node embedding
  • vIVv\in \mathbb{I}^{|V|} : indicator vector. node vv를 지정하는 column과 만나는 element는 1, 그 외에는 0인 vector

similarity(u,v)zvTzusimilarity(u,v) \approx z_v^Tz_u을 optimize하며 ZZ를 학습시킵니다. shallow encoding으로 각 node를 개별적으로 representation할 수 있습니다.

shallow encoding 외에도 DeepWalk, node2vec,TransE등으로 Embedding할 수 있습니다.

다음 파트 2. Random Walk Approaches to Node Embeddings에서 상세히 다루겠습니다.

2) Similarity Function


node similarity를 어떤기준으로 정의할지 결정해야 합니다. 예시는 다음과 같습니다.

  • 두 노드의 연결관계
  • 공유하는 node(neighbor)
  • structural role의 유사성
  • 등등

이 역시 encoding방법에 따른 similarity fucntion을 2. Random Walk Approaches to Node Embeddings에서 자세히 설명드리겠습니다.


3) Optimization2. Random Walk Approaches to Node Embeddings 에서 자세히 설명드리겠습니다. 강의 순서가 뒤죽박죽하군요

2. Random Walk Approaches to Node Embeddings

paper refenece :
Perozzi et al.2014 :DeepWalk: Online Learning of Social Representations
Grover et al.2016 : node2vec: Scalable Feature Learning for Networks

paper reference에서 알 수 있듯, DeepWalk, node2vec에 관련된 node embedding방법을 상세하게 다뤄보겠습니다.

Random Walk

Random Walk란, 말 그대로 node 위를 random하게 걸어다니는 것을 말합니다. 그래프의 특정한 시작점에서 random하게 neighbor들을 선택해서 나가는데, 그 point의 sequnce를 random walk라고 합니다. 걸어간 발자취를 나열한 것이라고 생각할 수 있습니다.

예를 들어, 위의 그림에서 노란색 point가 시작점으로 주어지고 4걸음을 간다는 parameter가 주어진다면 [1,3,2,8,11]이 random walk가 될 수 있습니다. 3걸음을 간다고하면 [5,8,11,12]가 될 수 있습니다.
이러한 random walk는 parameter를 주고 sampling한다고 표현합니다.



Random-walk Embedding (Deep Walk)

zuTzvz_u^Tz_v \approx probability that uu and vv co-occur on a random walk over the network

zuTzvz_u^Tz_v를 "network 전체의 random walk에서 uuvv가 함께 발생할 확률"로 근사할 수 있습니다. 왜냐하면 zuz_uzvz_v의 similarity가 높다면 latent space상에 가깝게 위치할 것이고, 이는 node uuvv의 similarity가 높다는 의미이므로 random walk에서 동시에 발견될 확률이 높기 때문입니다.


Random-walk Embedding의 과정은 다음과 같습니다.

  • 1.어떤 random walk strategy R을 사용하여 node u에서 출발하여 node v에 방문할 확률 PR(vu)P_R(v|u) 을 추정합니다.
    1. PR(vu)P_R(v|u)를 encoding하기 위해 embedding을 최적화시킵니다.
      여기서 두 zz의 similarity인 dot product는 cos(θ)cos(\theta)과 같고, 이는 random walk similarity로 볼 수 있습니다.





      그렇다면 왜 Random Walks를 사용할까요??
  • Expressivity : Local과 Higher-order neighborhood 정보를 함께 고려하는 node similarity를 유동적으로 정의내릴 수 있습니다.
    한국어로 풀어쓰니까 의미전달이 직관적이지 않네요... 강의자료에는 "Flexible stochastic definition of node similarity that incorporates both local and higher-order neightborhood information"라고 명시되어있습니다.
  • Efficiency : 학습할 때, 모든 node쌍을 고려할 필요 없이, 오직 random walk에 함께 발견될 쌍들만을 고려하면 됩니다.
    이는 그래프의 크기가 클수록 더 두드러지는 장점입니다. (ex. real social graph)



Random Walk Optimization

다시 graph domain에서의 Unsupervised Feature Learning의 의미를 생각해봅십다.
목표는 유사성을 보존하는 d-dimension의 latent space에서의 node embedding을 찾는 것이었습니다. 실제 graph에서 가깝다면 latent space상에서도 가깝도록 embedding해야 합니다.
그렇다면 node uu가 주어질 때, node의 주변, neighbor를 어떻게 정의할 수 있을까요? 다음과 같이 정의됩니다.

NR(u)N_R(u) : random walk strategy RR로부터 얻을 수 있는 uu의 neighborhood

graph G=(V,E)G=(V,E)가 있을 때, feature learning의 목표는 mapping function z:uRdz:u \rightarrow \mathbb{R}^d를 학습하는 것입니다. 이때 Objective function은 다음과 같습니다.

Log-likelihood objective
maxzuVlogP(NR(u)zu)max_z \sum_{u \in V}^{}{logP(N_R(u)|z_u)}
Given node uu, we want to learn feature representations that are predictive of the
nodes in its neighborhood NR(u)N_R(u)

node의 neighborhood를 예측하는 방향으로 feature representation을 학습합니다.

Random Walk의 Optimization 과정을 정리해보겠습니다.

Random Walk Optimization

    1. graph의 각 node에서 정해진 짧은 길이만큼의 random walk를 수행합니다
      (using some strategy RR)
    1. 각 node의 neighborhood NR(u)N_R(u)를 수집합니다.
      (NR(u)N_R(u) : the multiset of nodes visited on random walks starting from uu)
    1. node uu가 주어질 때, 그 node의 neighborhood NR(u)N_R(u)를 잘 예측하는 방향으로 node를 embedding합니다.
      maxzuVlogP(NR(u)zu)max_z \sum_{u \in V}^{}{logP(N_R(u)|z_u)}

loss function
L=uVvNR(u)log(P(vzu)L = \sum_{u \in V}\sum_{v \in N_R(u)}-log(P(v|z_u)

intuition Random walk가 동시에 발생(co-occurrrence)할 likelihood를 maximize할 수 있도록 embedding을 최적화
이때 p(vzu)p(v|z_u)는 vector representation이 softmax를 거친 후의 값입니다.
P(vzu)=exp(zuTzv)uVexp(zuTzv)P(v|z_u) = {{exp(z_u^Tz_v)}\over{\sum_{u \in V}exp(z_u^Tz_v)}}
softmax를 사용하는 이유는 node uu와 가장 유사도가 높은 node vv를 얻기 위함입니다.
iexp(xi)maxiexp(xi)\sum_iexp(x_i) \approx max_iexp(x_i)

Optimizing random walk embeddings =
Finding embeddings zuz_u that minimize LL

정리하면 위와 같습니다. grpah의 모든 node에 대해, 각 node의 neighborhood가 random walk시에 동시에 발견될 확률을 높도록 embedding을 학습합니다.

하지만, 이 naive한 과정은 compuation 측면에서 매우 expensive하다는 단점이 있습니다.

softmax의 normalization term uVexp(zuTzv)\sum_{u \in V}exp(z_u^Tz_v)이 원인입니다. log안에 있는 exp(zuTzv)uVexp(zuTzv){exp(z_u^Tz_v)}\over{\sum_{u \in V}exp(z_u^Tz_v)}부분을 근사하여 이 문제를 해결합니다. 이때 Negative Sampling이 사용됩니다.

Negative Sampling

위에서 설명한 loss fuction의 log안의 함수를 다음과 같이 근사합니다.

모든 node를 고려하여 normalize한 기존의 loss는 expensive했기 때문에, random으로 Negative sampling한 k개의 negative samples nin_i에 대해서만 normalize합니다. w2v에서 전체 corpus에서 빈도가 높은 단어를 negative sample로 sampling하였듯이, node의 degree가 높은 node를 negative sample로 사용합니다.

negative sample의 개수 kk가 갖는 의미는 다음과 같습니다.

  • Higher kk gives more robust estimates
  • Higher kk correspond to higher bias on negative events

실제로는 kk는 5~20으로 설정합니다.



지금까지 randome walk로 node를 embedding하는 방법에 대해 알아보았습니다.
random walk는 지정한 시작점에서 고정된 길이 "fixed size"를 조건으로 시행됩니다. 하지만 이러한 조건때문에 한계가 있습니다.
만약, 두 노드의 structural role이 비슷하지만 멀리 떨어져있는 경우라면 어떨까요?? 실제로 두 node는 유사하지만, random walk는 고정된 사이즈로만 노드주변을 보기 때문에 random walk embdding방식으로는 이 유사성을 담지 못할것입니다. 이러한 경우 node의 similarity를 담도록 latent space에 embedding한다"라는 node embedding의 가장 큰 목적에 맞지 않습니다. 또한 random하게 보기 때문에, graph의 전체 structure를 고려하지 못한다는 단점도 있습니다.



이 단점을 보완한 node2vec에 대해 알아보겠습니다.

node2vec

Deep Walk의 단점을 보완한 node2vec에 대해 알아보겠습니다.
이 역시 graph의 node를 embedding하는 방식이기 때문에, node2vec의 목표는 다양한 task에 적용가능하도록 (downstream task에 상관없이) graph에서 node의 neighborhood간의 유사성을 latent space (feature space)상에서도 유지하는 것입니다. node2vec은 maximum likellihood optimization문제로 접근합니다.

Abstract
네트워크의 node와 edge에 대해서 prediction task를 수행하는 것은 feature engineering 측면에서 많은 노력이 소요된다. 최근의 연구들에서는 reprsentation learning 측면에서 feature 자체를 학습하여 이 측면에서 많은 혁신들이 있었으나, network에서 파악되는 connectivity pattern에 대해서는 제대로 학습하지 못한다는 한계를 가지고 있다. 따라서, 이를 해결하기 위해서 network의 이러한 feature를 학습할 수 있는 프레임워크인 node2vec을 제시하였다. node2vec에서는 network의 node들의 관계(neighborhood)를 우도(likelihood)를 최대화할 수 있는 low-dimensional(저차원) 피쳐 공간을 학습시켰다. 실제로 기존의 존재하는 데이터들을 대상으로 수행을 해봤는데 괜찮은 결과가 나왔다.

Recap : word2vec
여기에서 제가 제일 word2vec을 모르겠지만 감히 설명해볼게염...

  • skipgram : 중심단어(center word)로 주변단어(context word)를 예측

    가정 : 실제 문장들에서 비슷한 위치에 있는 word들은 embedding space에서도 비슷한 위치에 있을것이다.
    따라서 중심단어(c)가 주어졌을 때 주변단어(o)가 나타날 확률(아래식)을 최대화 하면 됩니다.
    P(oc)=exp(uoTvcw=1Wexp(uwTvc)P(o|c)= {{exp(u_o^Tv_c}\over{\sum_{w=1}{W}exp(u_w^Tv_c)}}
    graph에서는 특정 node가 주어졌을 때 그 node의 neighborhood가 나타날 확률을 최대화 하면 되겠네요!

random하게 neighbor를 보아서 graph 전체 structure를 고려하지 못한 Deep Walk의 단점을 개선하기 위해, node2vec에서는 기존의 randomwalk를 사용하지 않습니다.

node2vec key idea
use flexible, biased random walk that can trade off between local and global views of the network

특정 node uu의 neighborhoodNR(u)N_R(u)는 DFP와 BFS로 정의할 수 있습니다.

  • NBFS(u)N_{BFS}(u) : local 영역으로 neighborhood 지정 (microscopic view)
    (위 그림 예시: if size of NR(u)N_{R}(u) = 3 \rightarrow NBFS(u)=s1,s2,s3N_{BFS}(u)={s_1,s_2,s_3})
  • NDFS(u)N_{DFS}(u) : Global 영역으로 neighborhood 지정 (macroscopic view)
    (위 그림 예시: if size of NR(u)N_{R}(u) = 3 \rightarrow NDFS(u)=s4,s5,s6N_{DFS}(u)={s_4,s_5,s_6})

node2vec에서는 Biased 2nd-order random walk를 사용합니다.

  • 1st-order random walk : node to node
  • 2nd-order random walk : edge to edge

biased fixed-length random walk는 두가지 parameter를 정의해야 합니다.

  • return parameter pp : 이전 node로 돌아갈 가능성을 계산하는 parameter. 주변을 잘 탐색하는지
    pp가 낮을수록 BFS like walk (좁은 지역 고려)
  • in-out parameter qq : DFS와 BFS의 비율. random walk가 얼마나 새로운 곳을 잘 탐색하는지
    qq가 낮을수록 DFS like walk (넓은 지역 고려)

example
(s1,w)(s_1,w)의 경로로 이동하여 지금 ww인 상태
node ww의 neighborhood로 s1,s2,s3s_1,s_2,s_3만 가능합니다.
s2s_2s1s_1ww의 공통 이웃,
s3,s4s_3,s_4s1s_1으로부터 멀어지는 방향입니다.

pp가 낮을 수록 좁은 지역을 보고 qq가 낮을수록 넓은 지역을 봅니다.

node2vec algorithm

  1. 예시와 같이 random walk probability를 계산합니다.
  2. grpah의 각 node uu에 대해 길이 ll만큼의 random walk를 합니다.
  3. node2vec을 SGD로 최적화합니다.

node embedding의 대표적인 두가지 방법 Deep Walknode2vec을 배워보았습니다. 이러한 embedding을 통해 graph의 정보를 최대한 보존하면서 computation 효과를 볼 수 있었습니다.
graph의 node uiu_i들을 latent space로 임베딩한 embedding vector ziz_i들은 어디에 사용될 수 있을까요??
기존 머신러닝에서 데이터를 임베딩(ex. 차원축소)하여 clustering, classification을 할 수 있듯 graph domain에서도 많은 task를 수행할 수 있습니다.

  • Clustering / Community Detection
  • Node classification
  • Link prediction
  • etc

3. Translating Embedding for Modeling Multi-relational Data

이제 Knowledge Graph(KG)의 node들을 embedding할 수 있는 TransE에 대해 배워보겠습니다.

Knowledge Graph

knowledge graph에서는 node를 entitie, link relation이라고 합니다. 한 KG의 relation에는 많은 종류가 있을 수 있습니다. KG에서의 link는 종류마다 갖는 의미가 다 다릅니다.

The knowledge graph represents a collection of interlinked descriptions of entities – objects, events or concepts. Knowledge graphs put data in context via linking and semantic metadata and this way provide a framework for data integration, unification, analytics and sharing.


KG의 이어지지 않은 entitie(node)의 relation(link)를 예측하는 KG completion (=link prediction)에 대한 연구가 활발합니다.
intuition : KG의 local&global pattern을 잘 학습하는 link prediction model을 만들고자합니다.
downstream task : link prediction은 학습된 패턴을 사용하여 관심 node와 그 외 모든 node간의 relationship을 일반화함으로써 수행됩니다.

TransE

Abstract
지금 우리가 해결할 문제는 구성요소와 관계들을 저차원의 벡터 공간으로 임베딩 시키는 것이고, 무엇보다 지식 그래프의 기반이 되고 학습하기 쉬운 장점을 가지는 것을 목표로 한다. 이에 TransE 라는 모델을 제시하는데 이 모델은 relationship(관계)를 저차원의 임베딩된 구성요소간 translations(전환) 으로 해석한다는 것이 핵심이다.

knowledge graph를 embedding하는 TransE에서는 KG의 두 node(entity)의 관계를 triplet으로 표현합니다.
h (head entity), l (relation), t (tail entity) → (h,l,t)

먼저 Entitie(node)들을 entitiy space RkR^k에 embedding하고, 각 Entitie ee을 mapping function MrM_r을 통해 relation space로 mapping합니다.
TransE model을 통해 KG의 relation이 embedding space상에서 의미를 갖도록 합니다.
이때 핵심은 (h,l,t)(h,l,t)가 성립한다면, h+lth + l\approx t가 성립한다는 점입니다.
즉 embedding된 tail entity tt는 임베딩 된 head entity hh와 realtionship 과 관련된 벡터 ll과의 합과 가까이 위치한다는 의미입니다.

  • h,tEh,t \in E(set of entities), lLl \in L(set of relationships)
  • 임베딩 벡터의 차원 : Rk\mathbb{R}^k(k : hyperparameter)
  • energy of triplet : d(h+l,t)d(h+l,t) (dd:dissimilarity measure,주로 L1,L2normL_1,L_2-norm
  • marginary hyperparameter : γ\gamma
    L=(h,l,t)S(h,l,t)S(h,l,t)[γd(h+l,t)d(h+l,t)]\mathcal{L}=\sum_{(h,l,t) \in S}\sum_{(h',l,t') \in S'_{(h,l,t)}} [\gamma _ d(h+l,t)-d(h'+l,t')]
    S(h,l,t)={(h,l,t)hE}{(h,l,t)tE}S'_{(h,l,t)}= \{ (h',l,t)|h'\in E \} \cup \{ (h,l,t')|t'\in E \}

S(h,l,t)S'_{(h,l,t)}은 corrupted triplet입니다. 이때 corrupted는 노이즈가 추가된 상태라는 의미입니다. 위 수식에서 알 수 있듯이 head entity나 tail entity에 변화가 있는 상태입니다. S(h,l,t)S'_{(h,l,t)}는 실제 KG에는 없는 triplet입니다.
loss L\mathcal{L}를 mimimize하므로, training triplet (h,l,t)(h,l,t)의 energy(dissimilariy)는 작게하고 corrupted traiplet(h,l,t)(h',l,t')의 energy(dissimilarity)는 크도록 학습한다는 의미입니다.
1. 먼저 Entitie(node)들을 entitiy space RkR^k에 embedding합니다.
2. 각 Entitie ee을 mapping function MrM_r을 통해 relation space로 mapping합니다.
2. 각 Relation(link)들은

학습 과정은 다음과 같습니다.
1) relation set의 ll에 대해 uniform distribution을 따르게 하고 정규화를 시킵니다.
2) entitiy set의 ee에 대해 uniform distribution을 따르게 하고 정규화를 시킵니다.
3) triaining triplet set SS에서 batch size만큼의 triplet을 뽑아 SbatchS_{batch}를 구성하고, TbatchT_{batch}를 공집합으로 초기화합니다.
4) SbatchS_batch에 대한 corrupted triplet을 만들어 TbatchT_batch에 원소로 넣어줍니다.
5) 구성된 SbatchS_{batch}TbatchT_{batch}로 loss를 mimize하는 방향으로 임베딩을 업데이트합니다.
6) 2)~5)를 반복합니다.

TransE는 KG에서 entities간의 관계를 잘 반영하고 기존 SE model보다 최적화가 간단합니다. 2-way interactions를 표현하는데 있어 강점이 있지만, 3-way dependencies를 표현하는데는 약점을 가집다. 또한 1-to-1 이상의 , 1-to-N, N-to-1 관계를 포함하는데 TransE는 부적합할 수 있습니다.

4. Embedding Entire Graphs

이전까지는 node를 embedding하는 방법을 배웠습니다.
이번 파트에서는 Graph GG를 embedding하는 방법을 배워보겠습니다.
전체 graph 뿐만 아니라 전체 graph의 sub-graph를 한 point를 embedding할 수 있습니다.

(sub)graph embedding을 통해 "Toxic molecules, non-toxic molecules 분류", "anomalous graph 분류"등을 할 수 있습니다.

다음으로 (sub)grpah를 embedding하는 몇가지 approach를 알아보겠습니다.

Approach 1
(sub)graph GG의 각 node를 embedding하고(ex.Deep Walk, node2vec...) 그 embedding값을 모두 더하거나 평균을 내어 graph embedding을 할 수 있습니다.
sum : zg=vGzvz_g= \sum_{v \in G}z_v
avg : zg=1#  of  nodevGzvz_g= {{1}\over{\# \; of\; node}}\sum_{v \in G}z_v

Approach 2
(sub)graph를 대표하는 virtual node (super-node)를 만들고, 그 node를 embedding값을 (sub)graph의 embedding으로 사용할 수 있습니다.

Approach 3 : Anonymous Walks Embeddings

Anonymous Walk는 random walk를 하는데 어느 node를 지나왔느냐가 아닌, 지나온 순서를 고려하는 random walk입니다. random walk를 진행하고 그 발자취의 순서(index)를 Anonymous Walk라고 합니다.
Anonymous Walk의 결과로 embedding하는 것을 Anonymous Walks Embeddings이라고 합니다.

Reference

profile
2021 투빅스 GNN 스터디

9개의 댓글

comment-user-thumbnail
2021년 3월 8일

이번 강의는 Graph representation learning에 대해 소개합니다.

1. Intro

Representation Learning : 어떠한 문제를 풀기 위해서 데이터를 알맞게 표현하고 이를 학습하는것. 여기서 그래프를 표현하는 방법중엔 여러가지가 있지만 인접행렬을 예로 들어서 보자. 노드가 N개 존재하면 인접행렬의 크기는 NXN을 가진다. 노드 수가 증가할 경우 사용에 어려움이 따른다. 그래서 차원을 감소함과 동시에 노드의 정보를 잘 나타내는게 중요하다.

2. Embedding Nodes

세 가지 단계 : Encoding -> Encoding 후 노드 간 유사성 체크 -> 최적화

2.1 Random Walk

그래프의 노드들을 무작위로 방문하는 방법. 임의로 정한 시작 노드에서 이웃 노드로 이동한다. 예를들어 N개의 노드를 가진 그래프에서 1번 노드를 시작하여 랜덤워크의 결과가 [1,3,4,5], [1,2,5,7] 주어졌을때 노드 간 관계가 유사할 수록 랜덤워크 결과에 등장할 확률이 높다.
랜덤워크 결과에 발견되는 노드가 이웃노드일 확률을 높게 학습한다. 하지만 노드의 수가 많다면 매우 높은 cost를 가질 것이다. 이를 해결하기 위해 Negative Sampling을 적용한다.

2.2 Node2Vec

Random Walk 방식은 고정된 길이만큼 Random Walk를 진행한다. 이는 같은 role의 노드가 멀리있을 경우에는 유사성을 반영하지 못한다는 한계점이 있다. Node2Vec은 이 한계점을 보완한다.
biased fixed-length random walk : BFS, DFS 를 먼저 정의한다. 각 방법은 노드를 넓이, 깊이를 우선적으로 탐색하는 것이다. 하이퍼 파라미터 p, q (확률)는 이웃 노드를 우선적으로 탐색할지 멀리있는 노드를 탐색할지 결정하는 것으로 p가 작다면 지역적인 정보를 반영하고, q가 작다면 넓은 지역의 정보를 반영한다.

3. Translating Embedding for Modeling Multi-relational Data

Knowledge Graph : 이전 그래프에서는 노드와 간선으로 정의했지만 여기서는 개체와 관계로 그래프를 정의한다. 지식 그래프를 임베딩하는 방법인 TransE에 대해 소개한다.
먼저 head entity가 존재하고 l relation을 가진 tail entity가 있다고 가정하자. 이를 Mapping function M에 의해 Relation Space로 entity들을 이동시킨다. 여기서 매핑된 head entity에 l relation을 가진 entity가 tail entity에 위치하게 학습한다.

4. Embedding Entire Graphs

이전까지는 그래프의 노드를 임베딩하였다면 전체 그래프 혹은 서브 그래프를 임베딩하는 방법을 소개한다.

4.1

전체(서브) 그래프의 노드를 각각 임베딩하고 해당 값을 평균, 합하여 사용한다.

4.2

전체(서브) 그래프를 대표하는 슈퍼 노드를 정의하고 해당 노드 값을 임베딩하여 그래프 임베딩값으로 사용한다.

4.3

Anonymous Walk : Random walk결과로 방문했던 노드가 아닌 지나온 노드 순서를 고려하여 embedding하는 방법.

답글 달기
comment-user-thumbnail
2021년 3월 11일

Graph Representation Learning 에 대해 공부했습니다.

node embedding 을 통해 Feature Representation 을 나타내어 다양한 downstream task 에 적용하고자 합니다.

이를 위해 embedding node (zuz_u, zvz_v) 사이의 관계가 original network node (uu, vv) 사이의 관계를 가장 잘 표현해 주는, node 를 Latent space 로 mapping 시키는 최적의 encoder (ENC()ENC(⋅)) 를 찾고자 합니다.

즉, similarity(u,v)zvTzusimilarity(u,v) \approx z_v^T z_u 가 되게끔 node embedding 하고자 합니다.

7강의 node embedding 방법론에서는 graph GGVV (node set) 와 AA (adj matrix) 를 사용하며, feature vector XX 는 사용하지 않습니다.

1. Random Walk

random sequence 설정해서 이동하는 방법입니다.
1. 랜덤으로 starting point를 잡아서 시작하고,
2. 해당 node의 neighbor 탐색, 랜덤으로 neighbor 설정하면서 이동합니다.

Graph 의 모든 node 에 대해, 각 node 의 neighborhood 가 random walk 시에 동시에 발견될 확률이 높아지도록 embedding 학습합니다.
Loss 계산 시 negative sampling 을 진행합니다. positive sample 에서 network 전체에서 랜덤으로 sampling 한 것을 뺀 값을 사용합니다.

Random Walk 는 fixed size 조건에서 시행되기 때문에, 멀리 떨어져 있는 node 의 similarity 를 반영하지 못해 전체 graph structure 를 반영하지 못한다는 단점이 있습니다.

2. node2vec

Random Walk (=DeepWalk)는 현재 위치만 고려하므로 unbiased 하게 계산하는데, node2vec은 약간의 bias를 허용합니다. 2nd order 의 random walk 까지 고려해 계산하는 방법입니다.

node2vec 또한 graph 에서 특정 node 에 대해, 그 node 의 neighborhood 가 나타날 확률을 최대화 하는 방향으로 학습을 진행합니다.
이 때 BFS (바로 인접해 있는 노드들 넓게 탐색), DFS (인접 노드 중 하나 깊게 탐색) 를 통해 neighborhood 를 고려합니다.

parameter p, q를 설정하여 최적화 합니다.
p가 작을수록 BFS-like walk (좁은 지역 고려), q가 작을수록 DFS-like walk (넓은 지역 고려) 가 됩니다.

  • p : Return parameter, previous node로 돌아갈 가능성을 계산합니다.
    주변을 잘 탐색하는지에 대한 parameter 입니다.
  • q : In-out parameter, BFS vs DFS 비율 정의
    얼마나 새로운 곳을 탐색하는지에 대한 parameter 입니다.

3. transE

Knowledge Graph는 entity (=node) 사이의 relationship (=edge) 를 정의한 graph 입니다. KG 에서는 local & global connectivity patterns 을 학습해서, missing relation 을 예측하는 link prediction model 을 만들기를 원합니다.

𝒉(head entity), 𝒍(relation), 𝒕(tail entity) = (𝒉, 𝒍, 𝒕)
node 와 relationship 을 triplet 형태로 표현합니다.

head + relation = tail 처럼, h+lth+l \approx t 가 되게끔 하는 것을 목표로 합니다. 즉, KG 의 relation 이 embedding space 상에서 연산을 통해 의미를 갖도록 하는 것을 목표로 합니다.

이 때 loss는 train set 에 실제로 있는 positive triplet (𝒉, 𝒍, 𝒕) 에서, negative sampling 을 진행한 (실제 KG에 없는) corrupted triplet (𝒉', 𝒍, 𝒕) \cup (𝒉, 𝒍, 𝒕') 을 뺀 값을 사용합니다.

transE 는 1:1 relationship 을 표현하는 데에는 탁월하지만, 1:N, N:1, N:N 을 표현하는 경우에는 부적합합니다. 따라서 이를 보완한 transH, transR 방법론이 등장하게 됩니다.

4. Graph Embedding

그래프 전체를 embedding 하기 위해서는,
1. graph 의 각 node 를 embedding 하고, node embedding 값을 다 더하거나, 평균을 낼 수 있습니다.
2. 그래프를 대표하는 virtual node (=super-node) 만 embedding 하여 사용할 수 있습니다.
3. 랜덤 node에서 시작해서 random walk를 진행하고, 방문한 순서대로 index를 뽑아서 이를 저장할 수 있습니다.


자세한 내용은 리뷰 에 적었어용
넘넘 짱짱 멋진 민정멋져님 ~ 띵강 감사합니당 ~ (하트)

답글 달기
comment-user-thumbnail
2021년 3월 14일

wow..

답글 달기
comment-user-thumbnail
2021년 3월 14일

Lecture 7 Graph Representation Learning 에서는 graph를 벡터로 표현할 수 있는 representation learning 방법에 대해 다룹니다.

이번 강의에서는 그래프의 정점을 벡터로 표현하는 방법인 정점 임베딩, Node Embedding에 대해서 배웁니다.

기계학습의 다양한 모델은 벡터로 표현된 데이터를 입력으로 받게 됩니다. 그래프를 벡터로 표현할 수 있게 된다면 기계학습의 다양한 모델에 활용 가능하게 됩니다. 그러므로 정점과 정점 사이의 유사성을 벡터로 표현하기 위한 방법은 그래프를 분석하기 위한 첫단계라고 할 수 있습니다.

1) 정점 표현 학습

정점 표현 학습이란 그래프의 정점들을 벡터의 형태로 표현하는 것이며, 정점 임베딩, Node Embedding 이라고도 부릅니다.

정점 임베딩은 벡터 형태의 표현 그 자체를 의미하기도 합니다. 정점이 표현되는 벡터 공간을 임베딩 공간이라도 부릅니다.

임베딩 과정은 주어진 그래프의 각 정점 uu가 입력으로 이뤄지는 임베딩을 거쳐 벡터 표현 zuz_{u}가 정점 임베딩의 출력이 됩니다.

정점 임베딩을 하는 이유로는 벡터 형태로 표현된 그래프를 다양한 모델에 적용해 볼 수 있기 때문입니다. 예를 들어, 로지스틱 회귀분석, 다층 퍼셉트론 등과 같은 기계학습의 분류기, 군집 분석 알고리즘에서 요구되는 벡터 형태의 입력의 조건을 만족하게 됩니다. 즉, 그래프의 정점들을 벡터 형태로 표현할 수 있다면, 정점 분류(Node Classification), 군집 분석(Community Detection) 등에 활용할 수 있습니다.

정점 임베딩은 다음 두 단계로 이루어집니다.

(1) 그래프에서의 정점 유사도를 정의하는 단계
(2) 정의한 유사도를 보존하도록 정점 임베딩을 학습하는 단계

정점을 벡터로 변환한다는 의미는 그래프에서의 정점간 유사도를 임베딩 공간에서도 보존된 상태임을 말합니다. 그렇다면 그래프에서의 정점간 유사도와 임베딩 공간에서 정점 벡터간 유사도가 유사해야합니다. 이 때, 두 공간에서 유사도를 구하는 방법을 각각 정의해야 합니다.

Random Walk, 임의보행 기반 접근법

임의보행 기반 접근법에서는 한 정점에서 시작하여 임의보행을 할 때 다른 정점에 도달할 확률을 유사도로 간주합니다. 임의보행이란 현재 정점의 이웃 중 하나를 균일한 확률로 선택하여 이동하는 과정을 반복하는 것을 의미합니다. 임의보행을 사용할 경우, 시작 정점 주변의 지역적 정보그래프 전역 정보를 모두 고려한다는 장점이 있습니다. 특히 거리를 k로 제한하는 방식이 아니기 때문에 그래프의 전체적인 정보를 고려할 수 있습니다.

(1) 각 정점에서 시작하여 임의보행을 반복 수행합니다.
(2) 각 정점에서 시작한 임의보행 중 도달한 정점들의 리스틀르 구성합니다. 이 때, 정점 𝑢에서 시작한 임의보행 중 도달한 정점들의 리스트를 𝑁r(𝑢)𝑁_r(𝑢)라고 하며 한 정점을 여러번 도달한 경우, 해당 정점을 중복 포함할 수 있습니다.
(3) 다음 손실함수를 최소화하는 임베딩을 학습합니다. 𝑢에서 𝑣에 도달할 확률의 log 합으로 정의됩니다. 이 때, 도달 확률 자체는 최대화하는 것과 같습니다.

임의보행의 방법에 따라 DeepWalkNode2Vec으로 구분됩니다.

  • DeepWalk는 앞서 설명한 기본적인 임의보행을 사용하며, 현재 정점의 이웃 중 하나를 균일한 확률로 선택하여 이동하는 과정을 반복합니다.

  • Node2Vec은 2차 치우친 임의보행을 사용합니다.

현재 정점과 직전에 머물렀던 정점을 모두 고려하여 다음 정점을 선택합니다. 직전 정점의 거리를 기준으로 경우를 구분하여 차등적인 확률을 부여합니다. 거리를 기준으로 '거리가 유지되는 방향', '멀어지는 방향', '가까워지는 방향'라는 3가지 확률이 존재하게 됩니다. 차등적인 확률을 사용자가 결정할 수 있으며 부여하는 확률에 따라 다른 임베딩을 얻게 됩니다.

  • 멀어지는 방향에 높은 확률을 부여한 경우, 정점의 역할(다리 역할, 변두리 정점 등)이 비슷할 때, 유사한 임베딩이 출력됩니다.
  • 가까워지는 방향에 높은 확률을 부여한 경우, 같은 군집에 속할 확률이 높을 때, 유사한 임베딩이 출력됩니다.
답글 달기
comment-user-thumbnail
2021년 3월 15일

이번 강의는 Graph에서 각각의 Node를 Embedding하는 방법에 대해서 배웠습니다.

Intro

Graph에서의 representation learning의 의미는, Node u를 잠재적 공간 (Latent Space)로 Embedding 하는 것을 의미합니다. 즉, 각각의 Node들을 자신이 Embedding하고 싶은 차원으로 projection 시키는 것과 동일 의미입니다.

특히, 그래프에서는 해당 과정이 무엇보다 중요합니다. Graph의 경우, 대부분 인접행렬을 통해 나타나게 되는데, Node들이 많다면, 그 크기가 매우 커지기 때문에 sparse한 특징을 지니게 됩니다. 따라서 이를 Low Dimension으로 바꿔주는 작업이 필요합니다. (Latent Space로 Embedding하는 것과 동일한 의미입니다.)

하지만, 기존의 Deep Learning 방식의 Embedding 방법을 취하기에는, 특정 차원으로 표시할 수 없다는 점과 해당 차원이 고정되어 있지 않다는 측면에서 Graph만의 고유한 Embedding 방법이 필수적이라고 할 수 있습니다.

Embedding Nodes

Graph에서 Embedding 방법을 한마디로 표현하면, 원본 graph와 Latent Space로 이동된 graph의 Embedding 값이 최대한 유사하게 만드는 작업이라고 할 수 있습니다.

벡터의 내적(dot product)을 활용하여 유사도를 구할 수 있습니다. 기존의 Node Similarity를 구하는 방법은 두 노드의 연결관계 여부, 공유하는 Node, Structural role 등등이 있으며, 이와 같은 특징을 갖는 두 노드의 내적이 커지도록 학습하는 것입니다.
(해당 강에서는 Feature Vector X를 사용하지 않고 Graph의 구조를 통해서만 Embedding하는 방법에 대해서 다룹니다.)

Random Walk for Node Embedding

첫번째로, Random Walk를 통해 Embedding하는 방법입니다. Random Walk는 말 그대로 매 step마다 Random하게 움직이는 것을 말합니다. 비록 Random하게 움직이지만, 시작 Node에서 마지막 Node까지의 집합에 속한다면, 해당 Node끼리는 어느정도 유사도를 가지고 있다고 말할 수 있습니다. 이는 Graph 특성상 인접노드들도 움직이기 때문입니다. 이러한 특징을 활용하여 우도가 높아지도록 학습하는 것이 Random Walk를 통해 Node를 Embedding하는 방식입니다.

Node2vec for Node Embedding

두번째로, Node2vec을 통해 Embedding하는 방법입니다. Node2vec은 Word2vec의 skipGram과 유사한 특징을 갖습니다. Word2vec에서 skipGram을 잠시 살펴보면, 하나의 단어를 통해 주변 단어들을 예측하는 형태였습니다. 이러한 매커니즘을 Graph에서 활용하여 하나의 Node들에 대해 주변 노드들이 나올 수 있는 확률을 최대화하는 것입니다.

전체적으로 두 가지 방법 BFS, DFS을 통해 해당 논리를 구축합니다. BFS을 통해 Local한 노드들을 살펴보며, DFS을 통해 Global한 노드들을 살펴봅니다. BFS가 너비우선탐색, DFS가 깊이우선탐색이라는 것을 안다면 쉽게 이해할 수 있을 것이라고 생각되며, 둘은 trade-off 관계로, 하이퍼파라미터로 지정합니다.

좋은 강의 감사합니다.

답글 달기
comment-user-thumbnail
2021년 3월 15일

이번 강의에서는 graph domain에서의 representation learning에 대해 배웠습니다.

Intro

representation learning이란, 어떤 task를 수행하기에 적절하게 데이터의 representation을 변형하는 방법을 학습하는 것이며, Raw data에 많은 feature engineering과정을 거치지 않고 데이터의 구조를 학습합니다.

graph에서의 representation learning도 같은 의미이며, graph의 node u를 mapping function f를 통해 Latent space(=embedding space)로 embedding합니다.

graph의 인접행렬(Adjacency Matrix)는 각 column이 node를 의미하기 때문에 sparse해 computation 측면에서 문제가 있습니다. 이를 해결하기 위해 더 낮은 차원의 Latent Dimension으로 embedding해 줍니다. Latent dimension의 축들은 node가 아닌 node간의 상관관계와 같은 graph의 정보를 의미하는 feature입니다.

graph는 이미지, 텍스트 등의 데이터들보다 훨씬 복잡하기 때문에 특정 차원에 표현될 수 없고, 가끔 차원이 변동되고 multi-modal feature를 갖기도 합니다. 따라서 graph를 embedding하기 위해서는 graph만의 방식을 적용합니다.

Embedding Nodes

encoding의 목적은 embedding space상에서의 similarity와 원본 graph의 similarity최대한 동일하게 만드는 것

  • Encoding의 과정
    각 node를 low-dimentional vecotr로 mapping(embedding)하는 방법 정의 -> 원본 graph의 node간 유사도를 측정하는 함수를 정의 -> 파라미터 최적화

Node similarity는 두 노드의 연결관계, 공유하는 node(neighbor), structural role의 유사성 등의 기준으로 정의합니다.

Random Walk Approaches to Node Embeddings

  • Random Walk

    • 그래프의 특정한 시작점에서 random하게 neighbor들을 선택해 나갈때 해당 point의 sequence
  • Random-walk Embedding (Deep Walk)의 과정

      1. 어떤 random walk strategy R을 사용하여 node u에서 출발하여 node v에 방문할 확률을 추정
      1. 해당 확률을 encoding하기 위해 embedding을 최적화

결국, Random walk 시에 Graph 각 node들의 neighbor가 동시에 발견될 확률이 높아지도록 embedding을 학습하는 것이며 loss계산시 naive한 과정은 compuation 측면에서 매우 expensive하기 때문에 negative sampling을 사용합니다.

Random walk는 고정된 사이즈로만 노드주변을 보기 때문에 structural role이 비슷하지만 멀리 떨어져있는 경우는 유사성을 담지 못한다는 단점이 있습니다. 또한, random하게 보기 때문에 graph의 전체 structure를 고려하지 못합니다.

node2vec

Random Walk의 단점을 보완한 방법으로 network의 node들의 관계(neighborhood)를 우도(likelihood)를 최대화할 수 있는 low-dimensional(저차원) 피쳐 공간을 학습시킵니다.

이웃 노드를 우선적으로 탐색할지 멀리있는 노드를 탐색할지 결정하는 flexible, biased random walk 방법을 사용합니다. 이때 BFS (바로 인접해 있는 노드들 넓게 탐색), DFS (인접 노드 중 하나 깊게 탐색) 를 통해 neighborhood를 탐색합니다.

node2vec 과정

  1. 예시와 같이 random walk probability를 계산합니다.
  2. grpah의 각 node u에 대해 길이 l만큼의 random walk를 합니다.
  3. node2vec을 SGD로 최적화합니다.

Translating Embedding for Modeling Multi-relational Data (TransE)

구성요소와 관계들을 저차원의 벡터 공간으로 임베딩 시키기 위해 제시된 모델로 relationship(관계)를 저차원의 임베딩된 구성요소간 translations(전환) 으로 해석합니다.

Embedding Entire Graphs

  • graph 뿐만 아니라 전체 graph의 sub-graph를 한 point를 embedding할 수 있습니다

여러가지 Embedding 방법

  1. (sub)graph G의 각 node를 embedding하고(ex.Deep Walk, node2vec...) 그 embedding값을 모두 더하거나 평균을 내어 graph embedding
  2. (sub)graph를 대표하는 virtual node (super-node)를 만들고, 그 node를 embedding값을 (sub)graph의 embedding으로 사용
  3. Anonymous Walk: 지나온 순서를 고려하는 random walk

좋은 강의 감사합니다.

답글 달기
comment-user-thumbnail
2021년 3월 22일

이번 강의에서는 graph representation에 대하여 배웠습니다.

임의의 차원으로 representation하는 이유는 인접행렬의 거대한 크기에 있습니다. 본래 전체 노드 개수의 제곱만큼의 크기를 가지는 인접행렬은 굉장히 sparse하며 비효율적이기 때문에 더 낮은 latent space로 매핑할 필요가 있습니다. 또한, 복잡한 그래프를 정해진 space로 매핑하여 vector로 표현함으로써 노드 간 유사도를 구할 수도 있습니다. 일반적인 representation 방법론들로는 grpah를 임베딩하기 어렵습니다. 기하하적으로도 이미지의 grid와는 달리 회전이 가능하기 때문입니다. 그래서 기존 graph에서 embedding space로 매핑할 encoder를 따로 설정해줘야합니다. 가장 간단한 encoder는 shallow encoding으로 word2vec에서도 look-up table을 의미합니다. matrix의 행은 하이퍼파라미터로 설정한 임베딩 space 크기이며 각 열은 각 노드의 인덱스입니다. 그 다음 서로 인접한 노드 간 유사도가 높아지게끔 학습합니다. 그래프에서의 유사도는 다양한 기준을 사용할 수 있는데, 연결관계나 structural role 등이 있습니다. 유사도 함수는 일반적으로 두 노드 벡터간 내적을 사용합니다.
서로 유사도가 높은 노드를 구별할 수 있는 방법은 바로 인접한 노드 쌍을 선택하는 것입니다. 그러나 모든 노드에 대하여 이웃 노드를 확인하는 방법은 N제곱이 걸리므로 굉장히 비효율적입니다. 따라서 모든 노드를 순회하지 않아도 유사도를 학습할 수 있도록 효율적인 random walk가 나왔습니다. random walk는 링크를 발판삼아 랜덤한 이웃 노드를 탐색합니다. 이 때, 더 멀리가는 DFS와 주변을 더 살펴보는 BFS의 2개념을 strategy로써 사용하여 random walk의 완전 무작위성을 해결할 수 있습니다. random walk 수행 후 각 node의 이웃 노드를 수집하고 특정 노드가 주어질 때 해당 이웃 노드를 잘 예측하는 방향으로 embedding합니다. optimiztation과정에서 두 노드의 동시발생 확률을 계산하는 과정이 모든 노드의 유사도를 계산하기 때문에 굉장히 expensive합니다. 따라서 negative sampling을 사용할 수 있습니다. 이렇게 임베딩 된 노드 벡터를 통해 clustering, detection, node clasiffcan, 링크 prediction등등 transe graph에서는 entitiyes를 노드로 relation을 링크로 생각하여 gnn에서 link predictiond을 할 수 있습니다. 모델을 학습할 때 정상 triplet과 오염된 triplet을 선택하여 만들 수 있습니다. 네트워크 임베딩하여 좋은 강의 준비해주셔서 감사합니다

1개의 답글
comment-user-thumbnail
2021년 3월 22일

갓민정님 강의 감사합니다~!
https://jxnjxn.tistory.com/73?category=877774

답글 달기