본문 바로가기
Paper Review/Graph Model

[3] Learning Deep Generative Models of Graphs

by ga.0_0.ga 2023. 3. 9.
728x90
반응형

논문 링크 : https://arxiv.org/abs/1803.03324

참고 자료 : https://qdata.github.io/deep2Read//MoreTalksTeam18/Arsh18-DGenerateGraph.pdf

 

* 논문의 대략적인 내용만 이해하고 작성하였습니다. 틀린 내용이 있을 수도 있으니 세부적인 내용은 원논문을 참고해주세요! *

<Introduction>

이 논문에 대해서 간략히 설명하면 현재의 그래프에서 입력으로 들어온 새로운 노드를 추가할 것인지 결정하여 새로운 상태의 그래프를 생성하는 문제에 대한 논문입니다. 노드를 추가할지 결정할 때는 당연히 그래프의 전체적 구조와 노드의 속성을 고려하여 결정하게 되고 입력으로 들어오는 노드의 순서도 고려할 수 있다고 합니다.

<Process>

프로세스

위 그림은 전체 프로세스를 나타내는 그림입니다. 노드가 들어오면 노드를 추가할지 결정하고 추가하기로 결정되었다면 엣지를 연결할지도 결정합니다.

연결하기로 결정되면 어떤 노드와 연결할 것인지도 결정해줘야 합니다. 인풋으로 들어오는 모든 노드들에 대해서 위 과정을 반복하게 됩니다.

아래 그림은 위의 그림을 스테이트 머신으로 간략히 표현한 그림입니다.

state machine

앞의 프로세스를 좀 더 구체적으로 세단계로 나누어 보면 다음과 같습니다.

Step 1) 먼저 각 노드들의 상태를 구합니다.

=> 각 노드 v와 이웃한 노드들의 임베딩 값, 그리고 엣지 feature를 이용하여 v라는 노드는 연결된 다른 노드들로 부터 정보를 받습니다. 이 값을 논문에서는 메시지라고합니다.

각 노드의 이전 state값과 메시지를 이용해서 각 노드의 상태값을 업데이트 합니다. 이 과정은 모든 노드에 대해 이루어지는 과정입니다.

Step 2) Step 1에서 구한 노드들의 상태를 이용해 전체 그래프의 feature를 구합니다.

=> 전체 그래프 feature를 구해야 하는데 여기서는 앞서 구한 각 노드의 값을 이용합니다. 각 노드 값을 한번 더 임베딩 시키고 모두 더하거나 평균을 구하는 과정을 거칩니다. 그렇게 얻어진 h_G가 그래프의 feature가 됩니다. 여기서 f는 fcn이나 rnn을 이용한다고 합니다.

Step 3) 마지막으로 앞서 구한 값들을 이용해 차례대로 노드를 추가할 것인지, 엣지를 추가할 것인지 결정하고 각 노드를 scoring하는 단계까지 거치게됩니다.

=> 노드와 엣지의 추가여부를 결정하는 단계입니다.

노드 추가 여부를 결정하기 위해서는 전체 그래프 feature를 이용합니다. 만약 여기서 추가하지 않기로 결정되면 밑의 두 연산은 수행되지않습니다.

그 다음 엣지 추가 여부를 결정하기 위해 전체 그래프 feature와 각 노드 feature를 이용합니다. 노드와 연결될 노드를 결정하기 위해서 인풋 노드의 값과 현재 그래프에 있는 노드들의 값을 이용하여 모든 노드에 대해 scoring하고 이 값을 softmax에 넣어서 정규화 시킨 후 가장 값이 크게 나오는 노드와 입력으로 들어온 노드를 연결합니다.

 

<Visualization>

- Drug Design에 활용한 모습입니다. 이 그림은 이 모델을 이용한 분자 생성과정을 나타내는 그림입니다.

=> 이 과정을 통해 완성된 분자 구조가 독성을 갖는지 등의 여부를 판별할 수 있습니다.

- 사용 코드: https://docs.dgl.ai/tutorials/models/3_generative_model/5_dgmg.html#sphx-glr-tutorials-models-3-generative-model-5-dgmg-py

 

728x90
반응형

댓글