(일단은 혼자 볼 메모용)
근래까지 많이 사용되어 왔던 LSTM 등 RNN 방식을 NLP에서 이용할 때, 텍스트는 시퀀스나 시계열(temporal) 형태의 데이터로 취급되곤 한다. 그런데, 새롭게 주목받고 있는 GNN은 텍스트를 이와는 조금 다른 방식으로 취급한다. 구조적 그래프 데이터를 분석하는 데 효과적인 GNN은 텍스트 처리에 있어서도 단어/문서들 사이 내적 관계들(inner relations)을 이용하여 그들의 카데고리를 예측한다.
여기서 그래프(graph)는 꼭지점(vertice)과 변(edge)들로 이루어진 데이터 구조를 가리키며, 수학적으로는 보통 G=(V, E) 로 정의된다 (V: 꼭지점 집합, E: 변 집합).
NLP 에서 그래프 구조의 예시들은,
(extract from Ivan Titov)
전통적인 그래프 분석 방법들(k-mean, Nearest neighbor 등)에서는 그래프 자체를 분석하는 것은 어려웠고, 따라서 그래프 수준에서의 분류 작업은 불가능했다.
이것이 GNN 에서는 가능하다. 그래프에서 각 노드(꼭지점)는 그의 이웃들과 커넥션들에 의해 정의되며, 각자 상태(state)를 갖는다. 일련의 학습 과정을 통해 얻는 한 노드의 최종 상태(final state)를 노드 임베딩(node embedding) 이라 하는데, GNN이 하는 일이 즉 그래프내 모든 노드들에 대해 이웃 노드들 정보를 고려하여 그들의 노드 임베딩을 결정하는 일이다.
기초
(extract from Ivan Titov)
+ReLUㅋㅋ
(Gradient descent is used in many ways at Tesla @hadamaru)
이를 통해 GNN은 노드 분류, 링크 예측과 그래프 분류를 할 수 있다.
앞의 두 작업에 대한 부가 설명을 조금 덧붙이면, 노드 분류는 그래프내 모든 노드의 임베딩을 예측하는 것이다 (이 경우 그래프의 일부분에 라벨링이 필요하다). 링크 예측은 그래프내 두 요소가 어떤 연관(connection)이 있는지 예측하는 작업이다.
그래프 분류는 말 그대로 그래프 자체의 카테고리를 결정하는 작업인데, 이는 특히 화학, 메디컬 등 분야에서 분자 구조 등을 연구할 때 응용될 수 있다고 한다.
텍스트 성분을 각각 노드 취급해서 레벨별로 분석하는 방법들은 전부터 있었는데, 그들에 비교해 봐도 GNN에서는 텍스트가 시퀀스성을 거의 완전히 벗어나는 것 같아서 이 방식은 더 다양하게 발전/응용될 가능성이 있을 것 같다. 아주 새롭고 신선한 접근 방식은 아니지만, 원래 이렇게 익숙한 것을 다르게 쓰는 그 작은 창의성으로부터 큰 파급력이 나오게 마련이므로... 각성한다.