오늘은 2019 NIPS에서 발표된 논문 Self-Routing Capsule Networks를 리뷰하도록 하겠습니다. 서울대에서 발표한 논문인데요, 간단한 아이디어로 Capsule Network의 구조적인 문제점을 해결하고자 했습니다.

 

Capsule Network

Self-Routing Capsule Network에 앞서 먼저 Capsule Network에 대해 간략히 설명하겠습니다. Capsule Network는 "Dynamic Routing Between Capsules"라는 논문에서 처음으로 제안한 모델입니다. Geoffrey E. Hinton이 오랜만에 발표한 논문이라 더욱 주목을 받았습니다. 

 

딥러닝 모델이 실제 사람처럼 "일반화"되기 위해서는 아직도 갈 길이 멉니다. 이미지의 단지 몇 픽셀을 조정함으로써 잘 훈련된 딥러닝 모델을 속일 수 있습니다. 의도적으로 속이는 경우가 아니더라도, 구분하고 싶은 물체의 방향, 크기 등이 달라지면 딥러닝 모델은 이를 잘 구분하지 못합니다.

 

이러한 관점에서 Capsule Network는 invariance가 아니라 equivariance를 추구합니다. 기존 CNN 모델의 max pooling 방식으로는 feature가 존재하는지 안 하는지의 정보만 얻을 수 있습니다 (invariance). 하지만 이를 넘어서서 entity의 variation을 보존할 수 있어야 한다는 겁니다(equivariance). 이로써 feature들 간의 공간적인 관계를 더 잘 찾아낼 수 있고 더 나은 일반화가 가능해집니다. 예를 들어, 얼굴 이미지를 보고 눈, 코, 입이 각각 있는지뿐만 아니라 각각이 어디에 위치하는지도 고려해야 한다는 것입니다.

 

Capsule Network의 골자는 Capsule과 Routing-by-agreement입니다. Capsule은 관심있는 entity의 여러 정보를 벡터에 저장합니다. 그 후 각각의 capsule은 transformation 행렬을 거쳐서 다음 layer의 capsule의 pose를 예측합니다. 이렇게 예측한 결과가 적절한지 평가하고, 파라미터를 업데이트하는 과정이 Routing-by-agreement입니다. Routing-by-agreement 방식은 캡슐들을 반복적으로 클러스터링함으로써, 가장 가깝게 모여있는 쪽으로 (agreement) 다음 레이어의 파라미터를 업데이트합니다.

 

Capsule Network에 대한 자세한 설명은 이 블로그유튜브 강의 1, 유튜브 강의 2를 참고해 주세요. 

 

Self-Routing Capsule Network

Motivation

본 논문으로 다시 돌아와 보겠습니다. 본 논문에서는 routing-by-agreement을 아예 제거해 버리고, 다음 레이어의capsule로 가는 Routing Network를 정의했습니다. 이 아이디어는 Unsupervised Clustering 방식이 고차원 공간에서는 너무 불확실하고 비싸다는 motivation에서 출발합니다. 일단 routing-by-agreement 방식이 반복적으로 mean을 계산하고 prediction vector를 업데이트하기 때문에 연산이 비싸고, prediction vector의 분포를 인위적으로 가정해야 하기 때문에 noise에 잘 대응하지 못한다는 것입니다.

 

따라서 본 논문에서는 Routing-by-Agreement 방식 대신, Capsule별로 다른 파라미터를 가지는 Routing Network를 사용합니다. 아래 그림을 보시죠.

 

이렇게 되면 Capsule Network를 Mixture of Experts(MOE)의 관점에서 해석할 수 있습니다. 각 Capsule이 entity를 검출하는 expert의 역할을 담당합니다. 아래 그림을 보면, Capsule network와 MOE가 submodule들을 앙상블 한다는 점에서 상당히 비슷함을 알 수 있습니다. 다만 Capsule들은 MOE의 Experts와 달리 feature space를 공유하지 않습니다. 

본 논문은 Capsule Network의 두 가지 특성 중, entity의 공간적인 관계를 파악하는 것 보다는, 개별 entity에 특화된 Capsule의 특성에 더 집중했습니다. 하지만 output의 분산을 완화시키기 위한 routing-by-agreement 방식을 사용하지 않고도 안정적인 결과를 낼 수 있음을 실험적으로 보여줬습니다. 

 

Method

이 논문에서는 매우 간단한 single-layer perceptron을 제안합니다. Self-Routing은 두 개의 학습 파라미터 $\textbf{W}^{route}$$\textbf{W}^{pose}$ 를 가지고 있습니다. 각각은 routing coefficients $c_{ij}$와 prediction vector $\hat{\mathbf{u}}^{j|i}$를 구하는 데에 사용됩니다. 

 

더 자세히 들어가 보겠습니다. 먼저 현재 레이어의 capsule vector $\hat{\mathbf{u}}$ 에 가중치 $\mathbf{W}^{route}$를 곱하고 softmax를 취해서 routing coefficient $c_{ij}$를 계산합니다. 그 다음 $c_{ij}$를 capsule의 activation scalar $a_i$와 곱하여 가중합을 한 것을 그 다음 레이어의 j번째 capsule의 activation scalar $a_j$로 사용합니다. 

 

이후 레이어의 capsule을 구하기 위해 $a_j$를 가중치로 사용합니다.

 

 

Experiments

실험 결과에 따르면 SR-CapsNet 모델은 기존의 Routing-by-agreement 방식 두 가지 (Dynamic Routing과 EM Routing) 보다 더 좋은 이미지 분류 성능을 보였다고 합니다. 뿐만 아니라 Adversarial Example과 Affine Transformation에도 잘 대응했는데요, Routing-by-agreement를 사용하지 않고도 일반화가 가능하다는 것을 실험으로 보여줬습니다. 아래에 실험 결과가 제시되어 있습니다.

1. Image Classification

 

2. Robustness to Adversarial Examples

 

3. Robustness to Affine Transformation

 

여기까지 Self Routing Capsule Network 논문을 정리해 보았습니다. 자세한 내용은 논문을 참고해 주세요. 감사합니다.