
작성자 : 이재빈
Contents
- Intro
- Deep Learning for Graphs
- Graph Convolutional Network
- Graph Attention Network
- Application
Keyword : Deep Learning on Graph , Neighborhood Aggregation , GNN , GCN , GAT

7강에서는 Node Embedding 에 대해 공부했습니다.
embedding node (, ) 사이의 관계가 original network node (, ) 사이의 관계 (Similarity) 를 가장 잘 표현해 주는 encoder () 를 찾는 방법을 배웠습니다.

이 때 Shallow Encoder (Lookup table) 를 공부했습니다.
Shallow Encoder는 single layer () 로 구성되어 있으며, 이를 통해 node embedding 을 진행하고 ( → ), similarity () 를 계산합니다.

따라서 위의 한계를 극복하고자, multiple layer 로 구성된 Deep Encoder 를 고려하게 됩니다.

Graph Network 를 Deep Neural Network 구조에 통과시켜서, node embedding (good prediction) 을 만들어 내고 싶지만, 이는 쉽지 않습니다.

단순하게 Deep Learning을 적용하기에는, 실제 Network가 매우 복잡하기 때문입니다.
ML/DL ToolBox 는 Image (Grids = Fixed Size Graph) & Text (Sequences = Line Graph) 에 특화되어 있습니다. 
Adjacency matrix 와 Feature vector 를 concat 해서 Deep Neural Network 의 input 으로 넣는 방법 또한 적용이 어렵습니다.


Convolutional 연산의 원리는 위와 같습니다.
sliding window 통해 얻은 정보를 다 더하여, output 을 도출합니다.

neighborhood 의 message 를 collect 하여, node 의 message 와 combine 하고, 이를 통해 new value 를 produce 하고자 합니다.
이러한 과정을 가장 잘 수행할 수 있는 연산 방법이 ConV 이기 때문에,
Convolutional 을 graph 에 적용해서, information 을 aggregate 하고자 합니다.
graph 에 대하여,

Learn how to propagate information across the graph to compute node features
node i 에 대한 prediction 을 하고 싶을 때,
1. node computation graph 를 결정하고,
2. neighborhood information 을 propagate 하고 aggregate 합니다.
Local Network Neighborhoods 정보를 기반으로 node embedding 을 진행합니다.

Neural Network 를 통해 neighborhood information 을 aggregate 합니다.

neighborhood 가 computation graph 를 결정합니다.
모든 node들은 자기 자신만의 Neural Network Architecture 를 갖고 있으며, 각자의 neighborhood에 근거하여 computation graph를 정의합니다.

Neighbors 로 부터 정보를 모아 Average 한 뒤, Neural Network 를 적용합니다.

Model의 depth는 자유롭게 설정할 수 있습니다.

정보가 전달되어 embedding 값을 가지게 되는 과정을 수식적으로 표현하면 위와 같습니다.
W : Average of neighbor's previous layer embeddings B : Message myself from the previous layer 
위의 식에서, Train의 대상은 Weight Matrix 인 W 와 B 입니다.
W 와 B 비율을 통해, friend / own property 중 어디에 더욱 주목할 지 결정합니다.
W ↑ , B ↓ : Neighbor 정보 더욱 많이 고려W ↓ , B ↑ : 이전 레이어의 자신의 정보를 더욱 많이 고려 embedding 값은 어떠한 loss function에도 적용 가능하며,
Stochastic Gradient Descent 를 통해 Weight를 update 합니다.
Loss Function은 Task에 따라 달라집니다.

Task : graph structure 를 고려한 node embedding

Task : node classification




The same aggregation parameters are shared for all nodes
new nodes & new graphs 에 대해서도, generalize 가능합니다.

Generate node embeddings by aggregating neighborhood information
Layer에서 Neighborhood 와 자기 자신의 message 를 Aggregate 하여 embedding 을 만들고, 이를 전달하여 최종 target node의 embedding 을 만드는 것입니다.

k-1 hidden layer에서 information aggregation을 통해 k hidden layer 로 전달하는 Neighborhood Aggregation 식은 위와 같습니다.

(인접행렬)은 node 연결 여부에 대한 정보(0/1)를 담고 있는 행렬입니다.
따라서 는 node i 와 relationship이 있는 state 값만 더한 값으로 update 한다는 의미입니다.
여기에 을 곱해 row normalized matrix 를 만들어 냅니다.

Neighborhood Aggregation 식을 vector form 으로 표현하면 위와 같습니다.

neighborhood aggregate 에는 를 사용하였고, previous self embedding 에는 를 곱했는데 → GCN 에서는 neighbor 와 self 모두에 대해 동일한 parameter 인 를 사용합니다.
인접행렬()을 사용하게 되면 자기 자신으로의 연결을 고려하지 않게 되므로 → self-connection을 추가한 행렬을 사용합니다.
단순히 neighborhood 정보의 평균 ()을 구하지 않고 → neighborhood aggregation 에 symmetric normalization ()을 적용하여 계산합니다.

Output : 인접 노드들의 가중치 feature vector W의 합
즉, GCN은 특정 node의 representation으로, 해당 node에 연결되어 있는 node들을 가중합하는 방법입니다.
Concatenate neighbor embedding & self embedding Aggregation 방법론을 적용합니다. 
GCN : neighbor 과 self 의 message 를 더합니다.

GraphSAGE : neighbor 과 self 의 message 를 concat 합니다.

Aggregation 방법은 여러 가지가 있습니다.


각 neighborhood node들의 중요도를 같다고 보지 않고 (), attention coefficients 를 적용해 neighborhood node 마다 가중치를 다르게 적용합니다.

출력 값을 예측할 때, encoder의 모든 입력 단어들의 정보(확률값)를 다시 한번 참고하여 손실했던 정보를 반영합니다.

를 통해서 노드 에서 노드 로 가는 message importance 를 계산합니다.

각 node 의 hidden state 값이 concat 되고, linear 를 거쳐 attention coefficient 가 계산됩니다.

softmax 함수 를 거치고, 이를 통해 나온 값 을 곱해 가중합 하여 을 계산합니다.

Multi-head attention 을 통해 값을 여러 개 도출하여, 이를 aggregate 해서 최종 output을 계산합니다.
✔︎ Multi-head attention : 서로 다른 attention mechanism을 여러 번 계산하여, input을 여러 관점(head)에서 해석

Allows for (implicitly) specifying different importance values to different neighbors

MLP 보다는 Random Walk 가, 이보다는 GCN 과 GAT 가 훨씬 성능이 좋다고 합니다.

Graph 를 이용해서 더 나은 Recommendation 결과를 도출합니다.

visual 로만 구분하면, fence 와 bed 를 제대로 구분할 수 없게 됩니다.
따라서 Image 와 이를 한 곳에 모아 놓은 Pins 를 node 로 하여, bipartite graph 를 구축해 좀 더 나은 추천 결과를 도출합니다.

node v image 를 embedding 하여, similar 한 node u 를 찾고, node u의 neighbor 를 추천해 줍니다.

Graph 적용 시 훨씬 좋은 추천 결과를 보인다고 합니다.
reference 미쳣네여...