본문 바로가기
AI

Contrastive Clustering

by Wonryeol 2023. 6. 8.

예... 논문 많이 읽긴 했는데 정리를 안하다가 이제 정리를 하게 되네요. 읽은 논문 중 아이디어가 간단하면서도 엄청난 효과를 가진 Constrastive Clustering에 대해 내용을 다시 정리하고 이해하기 위해 글을 씁니다. 

========================================================================================

 

 

Motivation : 

  • 기존 clustering 기법은 Representation vector에 에 있어서 대표성이 약함.
  • Representation Learning 이 대두됨에 따라 Representation space를 작업해 새로운 가치를 생산해 내는 기법이 발전되고 있음. 
  • 기존 클러스터링 기법은 OffLine 방법론에만 집중, representation learing과 함께 클러스터링을 하는 기법, 즉 Online 방법론을 제안함. 

BackGround :

  • Deep clustering
    • Feature들을 K-means로 Clustering 하고, Deep Network 에 Clustering output을 반영하도록 하는 알고리즘.
    • Two Stage 알고리즘 => 잘못된 Clustering이 작동 될 경우 Error가 축적 될 수 있다.
  • Online Deep Clustering
    • IIC (Invariant information clustering for unsupervised image classification and segmentation.)
      • 군집 간, Share Information Maximizing 해 Data Pairing
    • PICA (Deep Semantic Cluster- ing by Partition Confidence Maximisation)
      • Semantic 적으로 가장 의미 있는 데이터를 파악, 이를 바탕으로 Clustering.

=> Representation 영역에서 Online Clustering을 Instance , Cluster 단위로 하는 Contrastive Clustering을 제안. 

 

Method - Framework

본 논문에서 제안하는 Framework. 왼쪽 그림을 오른쪽 그림과 같이 구현시켰다.

본 방법론은 크게 3가지 방법으로 구분된다.

첫째, Pair Construction Backbone (Feature Extraction) .

둘째, Instance level Contrastive Head ( Processing Base Pair의 이미지 단위 Contrastive Learning ) 

셋째, Cluster level Contrastive Head ( Processing Base Pair의 클러스터링 단위 Contrastive Learning ) 

 

* Pair Construction Backbone 

T : Image Augmentation Methods / 예 :[ ResizedCrop , ColorJitter, Grayscale, HorizontalFlip , GaussianBlur ]

h : Clustering 하고자 하는 Batch Images의 Representation Concat

 

* T방법론을 통해 Augmented된 이미지에서부터 Representation을  추출해 matrix H 를 만든다. 이때, Matrix는 Batch로 같이 들어온 N개의 이미지를 N Matrix로 구성한다. 

즉 1개의 이미지에서 생성된 Representation의 Dimention이 d , Batch의 수가 N이라면, N*d 의 차원을 가진 Matrix H를 생성한다는 것이다. 

 

* Instance level - contrastive Head

Instance 단위의 Positive Pair를 생성하기 위한 Head이다. 서로 다른 기법으로 추출한 Representation Ha, Hb 의 Row별로 node에 넣고 멀티 레이어 퍼셉트론을 통해 Za, Zb 를 추출한다. 이때 Activation Function은 Relu이다. 이렇게 추출한 Za중, 같은 이미지에서부터 추출한 행끼리 Positive Pair, 다른 행들은 Negative Pair로 설정해 대조적 학습을 진행한다. 

 

Loss는 Cosine Distance 와 Exponential 함수를 통해 계산한다. 

Instance Level Loss Functions

Cluster-Level contrastive Head이다. Instance Level 과 유사하게 구성되어있다. 차이는 C 가 Clustered Value이고, 컬럼 단위로 PairWise한다. 또한 Activation Function은 Relu , ~은 Softmax 함수이다. 

먼저 라벨은  각 Column 들 중 최대값을 라벨로 운용한다. Positive Pair는 인스턴스 레벨과 같이 같은 이미지에서 나온 다른 기법의 이미지이다. 그리고 Batch 내 나머지는 negative Pair로 설정한다. 

로스 또한 인스턴스 레벨과 비슷하게 구현된다. 유일한 차이가 있다면 H(y)가 있다는 것이다. H(y)는  Clustering 할당 확률의 Entropy이다. 

 

Cluster Loss

따라서 Total Loss는 

Total Loss = Instance Loss + Cluster Loss 이다. 

 

Experiments

 

datasets

Imprementation Detail : 

  • Backbone : ResNet  ( 224 * 224 )
  • Augmentation : GaussianBlur
  • Model params : { row space : 128 , col space : cluster_num , τI :0.5 , τC  : 1.0 }
  • Optimizer : Adam ( learning rate : 0.0003 )

 

실제로 기존 Method에 비해 결과적으로 양호한 결과를 보인다.

Fig3은 재밌는 결과를 보여준다. Positive Cluster 와 Negative Sample ( Instance ) 의 분산도가 높은것을 확인할 수 있는데, 이는 다음과 같은 이유에서 비롯된다. 

같은 Class 내부에서도, 다른 Instance에서 왔기 때문에 Negative Pair가 되는 경우가 있으며, 같은 클러스터 내부에서도 다양한 클래스가 있다. 

실제로 나온 Cluster와 Representation을 t-SNE로 시각화 한 자료이다. Epoch가 늘어가면 갈수록 응집력이 높은 클러스터링이 생성되는 것을 확인할 수 있다. 

해당 표는 각 Method들의 영향을 보여준다. Augmentation , Istance Contrastive Head , Cluster Contrastive Head들이 각 각 알맞게 영향을 주고 받음으로써 모델이 안정적으로 돌아가고 있음을 확인 가능하다. 

댓글