Kicarussays

[논문리뷰/설명] A simple neural network module for relational reasoning (Relation Network): 관계형 추론을 위한 딥러닝 본문

Deep Learning

[논문리뷰/설명] A simple neural network module for relational reasoning (Relation Network): 관계형 추론을 위한 딥러닝

Kicarus 2021. 3. 25. 22:27

안녕하세요,

 

날씨가 어느덧 따뜻해진 것 같습니다. 

미세먼지는 심하지만, 겉옷이 필요 없는 낮에 햇볕을 쬐면, 역시 계절은 봄이라는 생각을 하게 되네요.

 

이번 포스팅에서는 Relational Network(논문링크)에 대해서 이야기해볼까 합니다.

논문 풀네임은 A simple neural network module for relational reasoning입니다. 

 

 

 

1. Background

 

Relational Network(RN)는 관계형 추론(relational reasoning)을 위한 신경망입니다. 관계형 추론과 비관계형 추론을 구분하기 위한 아주 간단한 예시를 한 번 들어보겠습니다. 

CLEVR Dataset 예시

위의 이미지는 페이스북 AI 연구팀에서 개발한 CLEVR Dataset의 일부입니다. CLEVR Dataset은 위와 같은 도형들의 이미지, 이미지에 대한 질문들, 그리고 그에 대한 답들로 구성되어 있고, 질문들은 관계형 추론 질문, 비관계형 추론 질문으로 구성되어 있습니다. 가령, 위의 그림에서 "빨간 색 작은 공으로부터 가장 멀리 떨어진 도형은 무슨 색인가요?" 라는 질문에 대한 정답은 "녹색" 이고, 이러한 방식으로 구성되어 있는 데이터셋입니다. CLEVR Dataset은 인공지능의 추론 능력을 개선하고 검증하기 위한 데이터셋이라고 보면 될 것 같습니다.

 

사실 관계형 추론에 대한 답은 이미 나왔습니다. 위의 예시 질문 "빨간 색 작은 공으로부터 가장 멀리 떨어진 도형은 무슨 색인가요?" 가 관계형 추론을 위한 질문입니다. 빨간 색 공으로부터 "가장 멀리 있는" 도형을 찾고, 그 색을 추론하기 위해 대상(object)들 같의 관계(relation)를 파악해야 하기 때문입니다. 비관계형 추론을 위한 질문으로는 "노란색 정육면체의 크기는?" 정도가 될 수 있겠습니다.

 

이 논문이 발표될 당시만 해도, 딥러닝은 이미 이미지 분류를 비롯한 여러 분야에서 훌륭한 성능을 보이고 있었지만, 어떤 데이터 내에서 대상들 간의 관계를 파악하고, 그 관계들로 하여금 추론을 하는 능력은 인간에 비해 매우 떨어지는 상태였습니다. 하지만, 이 논문은 결국 CLEVR Dataset 내에서 관계형 추론이 필요한 질문에 대해, RN이 인간의 능력을 뛰어넘는 것을 보였습니다.

 

 

2. Network Structure

 

이 논문을 읽은 분들은 모두 같은 생각이었을 것 같습니다. 모델을 설명하는 수식이 상당히 간단하고, 게다가 수식이 하나 밖에 없습니다! 그 간단한 수식은 다음과 같습니다. $$\text{RN}(O) = f_{\phi} \bigg( \sum_{i, j} g_\theta (o_i, o_j) \bigg) \tag{1}$$  where $O = \left\{ o_1, o_2, \cdots, o_n \right\}, o_i \in \mathbb{R}^m$.

 

여기서 $O$는 대상(object) $o_i$들의 집합이고, $f_{\phi}$와 $g_{\theta}$는 각각 파라미터 $\phi$와 $\theta$에 대한 함수입니다. 본 논문에서는 $f_{\phi}$와 $g_{\theta}$를 MLP(Multi-Layer Perceptron)로 설정하였습니다.

 

수식에 대해 설명하자면, 대상들($o_i, o_j$)의 관계를 임베딩하는 $g_{\theta}$를 모든 대상들에 대하여 계산하고, 결과로 나온 임베딩 값들을 모두 더합니다. 그리고, 그 더한 값을 마지막으로 $f_{\phi}$를 통해 최종 임베딩 값을 산출합니다.

 

간단한 수식이긴 하지만, 처음 접했을 때 저는 이 식이 너무 추상적이어서 대체 이 수식이 어떻게 신경망에 적용되는건지 생각을 많이 했던 것 같습니다. 그래서 본 포스팅에서는 이 수식이 어떻게 신경망에 직접적으로 적용되는지 살펴볼 것입니다.

 

 

 

3. Application

RN 적용 구조

이 그림으로 RN이 어떻게 적용되는지 살펴볼 수 있습니다.

 

1. 입력 데이터로 사물의 이미지와 질문이 들어가고, 이미지에 대해서는 CNN을, 질문에 대해서는 LSTM을 통과시켜서 각각의 임베딩 값을 산출합니다. CNN의 임베딩 사이즈는 $d \times d \times f$ ($d$는 임베딩되어 나온 이미지의 길이, $f$는 커널 개수), LSTM의 임베딩 사이즈는 $e$라고 예시를 들어보겠습니다. 

 

2. RN의 구조에서 $g_{\theta}$에 해당하는 연산을 진행합니다. CNN을 통과한 임베딩으로부터 최종적으로 $d^2$개의 길이 $f$인 벡터가 한 대상(object)가 됩니다. 따라서 총 $d^2 \times d^2$번의 $g_{\theta}$ 연산을 진행하게 되는 것이죠. 본 논문에서는 각 object에 상대적인 위치정보를 포함시키기 위해 임의의 축을(arbitrary coordinate) 2개 추가합니다. 여기에 LSTM의 임베딩을 추가하여 최종적으로 길이 $2(f + 2) + e$인 벡터가 $g_{\theta}$의 입력 벡터가 되는 것입니다(각 object에 arbitrary coordinate가 추가된 것으로부터 $f+2$, object pair로부터 $2(f+2)$, LSTM 임베딩으로부터 $e$).

 

3. 최종적으로 길이 $2(f+2) + e$인 벡터 $d^2 \times d^2$개가 $g_{\theta}$연산을 거쳐 같은 길이의 벡터로 산출되게 됩니다. 이렇게 나온 벡터들을 모두 더하고(Element-wise sum), $f_{\phi}$에 해당하는 연산을 수행하여 최종 output을 얻게 됩니다.

 

 

 

4. Results and Conclusion

결과 비교 테이블

위 표에서 확인할 수 있듯이 RN을 적용한 결과 관계형 추론 질문에서 상당히 좋은 성능을 보이는 것을 확인할 수 있습니다. 또한 구조가 상당히 간단하고 관계형 추론이 요구되는 여러 문제에 적용할 수 있는 가능성이 있어 보여서 이를 응용한 많은 연구들을 기대해볼 수 있을 것 같습니다.

 

Github에 이 논문을 아주 잘 구현해둔 코드들을 찾을 수 있으니 직접 코드를 보며 인사이트를 얻어도 좋을 것 같습니다. 다음 링크에서 확인해보시기 바랍니다.

 

 

 

오랜만의 포스팅이라 간단한 주제로 글을 써 봤는데, 역시 업로드하면서 공부가 되는 것이 정말 큰 보람인 것 같습니다.

날씨도 따뜻해졌으니, 여기저기 놀러도 다니면서 열심히 공부해봐야겠습니다.

 

 

 

 

출처: cs.stanford.edu/people/jcjohns/clevr/, arxiv.org/pdf/1706.01427.pdf

Comments