Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

딥러닝

Invariant 와 Equivariant 를 구분하는 방법

TL;DR
Equivariant는 Rotation을 전후로 적용해도 괜찮은 공간들로 한다.  
Invariant 는 아웃풋이 아무거나 상관없다. (심지어 스칼라도!)

Intro

딥러닝을 하다보면, Representation에 대해서invariant 또는 Equivariant 라는 단어를 쓸 때가 있습니다. 이는 의미상 굉장히 비슷하기 때문에 쓰임새를 구분하는 것이 쉽지 않습니다. 의미적으로 보면, Invariant : 불변, Equivariant : 동일로 해석할 수 있는데, 의미적으로 두 개를 기억하는 것은 아무런 도움이 되지 않으며, 수식을 외운다고 할지라도  단순히 정의을 기억하는 것 이상의 정보를 주진 않습니다. 그래서 Invariant 와 Equivariant 의 차이를 제대로 보여주는 함수의 인풋과 아웃풋의 관점에서 Invariant 와 Equivariant 를 해석해보고자 합니다. 

정의

먼저 정의를 살펴보면 다음과 같습니다. 

 

invariant 와 equivariant 를 다룰 때는 두 개의 함수 fg 가 나오며, 보통 g(x)x 를 변형한 형태를 나타냅니다(이미지 회전이나 슬라이딩 이동 등). g-invariant 하다는 표현은, 함수 fg의 변환에 대해서 아웃풋이 바뀌지 않는 성질을 나타냅니다.  g-equivariant 의 경우는 g 의 변환에 대해서 f 를 적용하는 순서에 대해서 아웃풋이 동일한 성질을 나타냅니다. 성질은 동일해보이지만, Invariant 와 equivariant 가 성립하기 위해서는 함수 공간에 대해서 서로 다른 제약사항을 가지고 있습니다. 


Invariant & Equivairant 정의역과 공역

g-invariant (f(g(x))=f(x))g-equivariant ((f(g(x))=g(f(x))) 가 성립하기 위해서는 두 함수 fg의 정의역과 공역에 대해서 적절한 매칭이 필요합니다. 이퀄리티 (A=B) 가 성립하려면 어쨌든  A, B는 동일한 공간에 속해야 하기 때문입니다. 가령, 이미지 예측 문제에서 이미지 공간 샘플 x1RH×W×C 는 네트워크 아웃풋 공간 샘플 x2R에 대해서 x1=x2 라고 식을 절대 세울 수 없습니다. 애당초 둘은 비교 불가능 합니다. 

Invariant

먼저 Invariant 가 성립하기 위해서는 g(x)x 와 동일한 공간에 놓여야 합니다. 그래야 f(g(x))=f(x) 라는 식이 성립할 수 있습니다. 이로부터 다음과 같이 Proposition이 성립합니다. 

 

그림으로 나타내면 아래와 같습니다. 함수 gf 의 정의역과 공역에 대해서 YgXf 가 서로 동일한 공간이어야 합니다. 

 

 

해석하자면, g(x) 는 반드시 x랑 동일한 공간에 있어야 합니다. 그런데, f(x) 가 어떠한 공간에 놓여야 하는지는 전혀 가정이 없습니다. 이는 이미지로 치면, 다시 이미지 공간일수도 있고, 스칼라일수도 있습니다. 그러므로 invariant아웃풋을 마음대로 설정할 수 있습니다. 아래 그림과 같이 Yf 의 공간이 기존 정의역과 같은 경우와 다른 경우를 마음대로 성질할 수 있습니다. 

 

왼쪽은 f의 아웃풋이 다시 이미지 공간인 경우, 오른쪽은 이미지공간이 아닌 임의의 공간인 경우,

 

 

Convolution Neural Network 에서
1) 이미지를 모델에 넣고 Convolutional Representation 을 확인 
2) 이미지를 회전 하고 모델에 넣고 Convolutional Representation 확인
두 Representations 가 동일 <- Invariant 

 

극단적으로 말해서, invariant 에서는 f의 아웃풋이 단순히 스칼라일 수도 있습니다. 가령, 모델이 모든 이미지에 대해서 강아지라고 예측한다면, 이 경우도 invariant 라고 말할 수 있습니다. 


Equivairant 

그러나 Equivariant 가 성립하기 위해서는 아웃풋 공간은 인풋 공간과 같아야 합니다. Equivraint f(g(x))=g(f(x))  가 성립하기 위해서는  fg 의 정의역과 공역이 모두 같은 공간이어야 합니다. 왜냐하면 g 의 인풋이 f의 아웃풋과 같은 공간에 있어야 하고, f의 인풋이 g와 같은 공간에 있어야 하기 때문입니다.  

 

 

 

 

아래 그림과 같이 두 개의 연산에 대해서 Commute 하는 성질이 있어야 합니다. g  아웃풋이 f의 인풋과 동일하며, f의 아웃풋과도 동일합니다. 단순하게 말하면, 아래그림에서 f 의 아웃풋은 Rotation Operation이 되는 공간입니다. 

 

 

예시 ) 
Convolution Neural Network 에서
1) 이미지를 모델에 넣고 Convolutional Representation 을 회전
2) 이미지를 회전 하고 모델에 넣고 Convolutional Representation 획득 
3) 두 Representations 가 동일 <- Equivariant 

+ CNN의 경우, Convolutional Layer의 연산으로 이미지 공간이 줄어들 수 있으나, Translation (픽셀 위치 옮기는 연산)을 전후로 해도 아웃풋이 동일하기 때문에 Translation-Equivariant 가 성립합니다. 그러나 마지막 Feature Space 에 대해서는 Translation을 시켜도 아웃풋이 동일하지 않기 때문에 전체 모델에 대해서 Translation-Equivariance 가 성립하진 않습니다. 마지막 레이어에 대해서 이미지에 Translation 을 해도 동일한 Feature를 얻는다면, Translation-Invariant 라고 말해야 합니다. 


Adavanced 

사실 수식적으로 더 엄밀하게 말하면, 함수 g 로 변형된 공간은 Xf 와 동일하지 않을 수 있습니다. 대신 g(Xg)Xf 의 부분집합으로 작용할 수 있습니다. 이 부분에 대한 설명은 넘어가겠습니다. 

좀더 엄밀한 관계성


Conclusion 

Equivariant는 Rotation을 전후로 적용해도 괜찮은 공간들로 한다.  

Invariant 는 아웃풋이 아무거나 상관없다. (심지어 스칼라도!)

이렇게 외우시면 논문을 읽으시면서, 그 의미를 좀더 쉽게 해석할 수 있는 것 같습니다.