작성자 : 이재빈
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 미쳣네여...