본문 바로가기

Enginius/Machine Learning

CapsNet

그 유명한 Dynamic Routing Between Capsules 논문에 대한 설명이다 


아이디어 자체는 간단하다. 어떤 하위 레이어의 값이 들어오면 이를 상위로 바로 올리는 것이 아니라 linear transform을 한 값들을 가지고 일종의 loopy belief propagation을 한다. 이를 위해서 하위 레이어의 값을 섞어주는 mixing parameter에 해당하는 routing parameter를 찾는다. 이 과정이 마치 factor graph에서 문제를 푸는 것과 비슷하다. 


힌튼을 유명하게 만든 restricted Boltzmann machine의 contrastive divergence에 해당하는 Gibbs sampling과도 일맥상통하는 바가 있다고 본다. routing parameter가 일종의 variational distribution의 parameter로도 볼 수 있는 것 같다. 


재밌는 방법론이다. 


아래는 왜 softmax를 index j에 대해서 하는지에 대한 질문에 재준님께서 대답해주신 내용이다. 정리해보자면 하나의 i번째 하위 파트가 고정되었을 때, 모든 j번째 상위 물체에 대해서 softmax를 취하는 것이다. 상위 개념이 하위 개념을 골라낸다는 해석이 참 좋은 것 같다. 



여기에 추가로 동현님의 아주 멋진 해석을 추가한다. 



정리해보자면 part-whole relationship라는 것이다. 하나의 파트가 여러 개의 상위 개념에 대입될 수 있다고 했을 때, 하나의 하위 개념은 하나의 상위 개념에 대응될 수 있어야 한다는 것이다. 다시 말해서 (l) 번째 계층의 i번째 캡슐은 (l+1) 번째 계층에 존재하는 캡슐들 중에서 하나만 영향을 미칠 수 있어야 하고, 이것 때문에 (l+1) 번쨰 계층에 캡슐의 인덱스에 해당하는 j번째 인덱스로 softmax를 취한 것이다. 


물어볼 사람이 있다는게 얼마나 감사한지!!