이번 포스트에서 살펴볼 논문은 IMSAT 과 마찬가지로 mutual information 을 최대화하여 clustering 하는 방법론에 관한 내용입니다. 입력 x와 x에 대한 출력 y의 mutual information 을 최대화하는 IMSAT과 달리 이번 포스트의 IIC (Invariant Information Clustering)에서는 입력 x와 x와 비슷한 x′의 각 출력의 mutual information 을 최대화하는 것인데요, image clustering 과 segmentation 에 적용하여 놀라운 성능을 거두었다고 합니다. 자세한 내용을 한 번 살펴보겠습니다.

Method
Invariant information clustering
먼저 x,x′ 을 이미지의 내용이 비슷한 한 쌍의 데이터라 정의합니다. 예를 들어 같은 물체를 담고 있는 서로 다른 이미지 쌍이 있습니다. IIC의 목적은 clustering을 위해 x,x′에서 각 이미지 별 고유의 정보 (instance-specific) 대신 공통된 정보만을 추출하도록 하는 Φ:X→Y를 학습하는데 있습니다. 즉, Φ(x′)로부터 Φ(x)를 잘 예측하도록 Φ(x)와 Φ(x′)의 mutual information 을 최대화시키도록 학습합니다.
maxΦI(Φ(x),Φ(x′)) (Equation 1)
Φ가 clustering 목적으로 출력단의 차원이 제한된 숫자 (cluster 개수 C)이므로 Equation 1을 통해서 instance-specfic 한 정보를 제거할 수 있습니다. 왜냐하면 I(x,x′)≥I(Φ(x),Φ(x′)) 이므로 출력단의 차원의 제한이 없을 경우 Equation 1은 단순히 Φ=I (identity mapping) 으로 귀결되기 때문입니다. 또한, 출력단의 차원을 cluster 개수로 제한하고 입력이 어떤 cluster 에 속하는지에 대한 확률로 나타내기 위해 (soft clustering) Φ의 마지막에 softmax 를 추가하여 Φ(x)∈[0,1]C 가 되도록 합니다. (P(z=c|x)=Φc(x))
x,x′에 대한 cluster 할당 변수 z,z′를 생각해보면, x,x′가 주어졌을 때 z,z′가 독립이므로 P(z=c,z′=c′|x,x′)=Φc(x)⋅Φc′(x′)와 같이 표현할 수 있습니다. 이를 배치 단위로 marginalize 했을 때, z,z′의 결합확률분포 P(z,z′)은 C×C 크기의 행렬로 표현할 수 있습니다.
P=1n∑ni=1Φ(xi)Φ(x′i)T
따라서 P의 c번째 행과 c′번째 열은 Pcc′=P(z=c,z′=c′)을 나타내고 Pc=P(z=c),Pc′=P(z′=c′)는 P의 해당하는 열을 합해서 얻을 수 있습니다. 특히 (xi,x′i)와 (x′i,xi)의 대칭성을 표현하기 위해 P를 (P+PT)/2로 대칭화해서 사용합니다. 따라서 이를 Equation 1에 대입하고 mutual information의 정의를 사용해서 Equation 2와 같이 표현할 수 있습니다.

Mutual information I(z,z′)=H(z)−H(z|z′) 이므로 이를 최대화하는 것은 군집 할당 엔트로피 H(z)를 최대화하고 z′가 주어졌을 때의 z의 엔트로피인 H(z|z′)이 최소화하는 것과 동일합니다. H(z|z′)가 가질 수 있는 최소값은 0으로 이것은 z′이 z로부터 확실하게 결정된다는 의미이고 H(z)가 가질 수 있는 최대값은 ln(C)로 전체 군집분포에서 각 군집의 비율이 동일하다는 것입니다. (uniform 분포)
따라서 mutual information 을 최대화시키는 것을 단순히 엔트로피를 최대화시키는 것과 다릅니다. 단순히 엔트로피만을 최대화시킨다면 출력 z가 uniform 분포가 되는 trivial 솔루션으로 귀결되고 이는 어떠한 형태의 군집도 이루어지지 않습니다. 엔트로피 최대화에 조건부 엔트로피 최소화 조건을 추가함으로써 z′으로부터 z가 확실히 (deterministic) 결정될 수 있도록 합니다.
Image clustering
그렇다면 x′을 어떻게 얻을까요? IIC에서는 이미지에 대한 랜덤 tranformation g를 정의하여 x′=gx를 사용합니다. g는 geometric 한 scaling, skewing, rotation, flipping 이거나 contrast, color saturation 과 같은 색상 변화를 이용합니다. (원래의 x가 가진 정보를 손상시키지 않는 선에서 어떠한 종류의 변환이 가능합니다.) 따라서 IIC는 x와 변환된 x′에서 불변의 공통 정보 (invariant) 를 추출하도록 학습되고 이 정보가 cluster를 이루는데 사용됩니다. Pytorch 코드로는 Figure 4와 같이 간단히 구현할 수 있습니다.

STL10과 같은 데이터셋은 두 가지 종류의 훈련 데이터가 존재합니다. 하나는 10개 클래스에 대한 데이터이고 (13K 개) 나머지는 10개 클래스와 관련없는 데이터인데 (100K 개) 수가 더 많은 관계없는 데이터를 활용하기 위해 IIC는 Figure 2와 같은 부가적인 출력단을 (auxiliary head) 하나 더 달아 over-clustering 합니다. 즉, 주 출력단 (main head) 에서는 정해진 군집 개수로 (kgt) 훈련시키고 auxiliary head 에서는 kgt보다 더 많은 k개의 출력단으로 훈련시킴으로써 많은 수의 unlabeled data를 훈련에 포함시켜 사용함으로써 더 좋은 representation 을 추출할 수 있도록 학습합니다.

Image segmentation
Image segmentation 에 대해서도 image clustering 과 근본적으로 비슷하나 1) 예측이 각 픽셀별로 수행되고, 2) 전체 데이터가 아닌 전체 데이터의 부분적인 이미지 패치에 대해 수행되므로 근접한 패치에 대한 invariance가 (local spatial invariance) x로부터 x′을 생성하는데 사용됩니다.
x∈R3×H×W (Pytorch 기준) 를 RGB 이미지, u∈Ω={1,...,H}×{1,...,W} 를 픽셀 위치, xu를 u를 중심으로한 이미지 패치라 했을 때 IIC를 위한 (xu,xu+t) 이미지 쌍을 구성합니다. 여기서 t는 u로부터의 displacement t∈T를 나타냅니다. 따라서 Φ(xu)=Φu(x)∈[0,1]C 로 나타내고 Φ(x)는 segmentation 이므로 [0,1]C×H×W의 크기를 갖습니다. 최종적으로 Φu(x),Φu+t(x)가 IIC에 사용됩니다.
Image clustering 부분에서 설명한 기하학적/색상적 변환 g는 각 패치에 대해서 적용될 수 있겠지만 비효율적이므로 전체 이미지에 대해서 선행적으로 진행되는데, 중요한 점은 원래 이미지에서의 픽셀 위치가 변환 이미지 상에서 바뀌므로 이를 서로 맞도록 조정해주어야 한다는 점입니다. 즉, Φu(x)가 Φu(gx)와 맞지 않게 된다는 것입니다. Φu(x)는 Φg(u)(gx)와 대응되므로 Φ(gx)에 역변환 g−1을 가한 [g−1Φ(gx)]u가 Φg(u)(gx)와 대응됩니다. 예를 들어 입력을 뒤집었다면 출력 이미지도 뒤집어야 된다는 것이죠. 최종적으로 segmentation 을 위한 IIC 목적함수는 Equation 3과 같습니다.

Equation 3은 Φu(xi)와 [g−1Φ(gxi)]u+t의 mutual information을 최대화하는 것이고 이것이 데이터 개수 n, 변환의 종류 g, 픽셀 개수 u에 대해 평균되어 사용됩니다. (displacement t 에 대해서는 information 을 계산 이후에 평균을 내는 것이 성능이 더 좋다고 합니다.)
그렇다면 Equation 3의 displacement t에 대한 구현은 어떻게 이루어질까요? y=Φ(x),y′=Φ(x′) 에 대해서 먼저 y′을 y의 좌표로 bilinear resampler를 이용해 되돌립니다. (y′←g−1y′) 따라서 Equation 3의 안쪽 summation (convolution 이라 표현된 부분)은 두 개의 tensor의 convolution이 됩니다. (P=y∗y′) 따라서 패딩 크기를 d라고 했을 때 y,y′∈Rn×C×H×C 이므로 P∈[0,1]C×C×(2d+1)×(2d+1) 로 구해집니다. (P를 normalize 합니다.)
다음 포스트
'Machine Learning Tasks > Clustering' 카테고리의 다른 글
Clustering - Invariant Information Clustering for Unsupervised Image Classification and Segmentation (2) (0) | 2021.05.17 |
---|---|
Clustering - Performance (3), S_Dbw (0) | 2021.05.12 |
Clustering - Performance (2), Total Sum of Squares (0) | 2021.05.12 |
Clustering - Performance (1) (0) | 2021.05.11 |
Clustering - Hungrian Algorithm (2) | 2021.05.11 |