예... 논문 많이 읽긴 했는데 정리를 안하다가 이제 정리를 하게 되네요. 읽은 논문 중 아이디어가 간단하면서도 엄청난 효과를 가진 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.
- IIC (Invariant information clustering for unsupervised image classification and segmentation.)
=> Representation 영역에서 Online Clustering을 Instance , Cluster 단위로 하는 Contrastive Clustering을 제안.
Method - 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 함수를 통해 계산한다.
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이다.
따라서 Total Loss는
Total Loss = Instance Loss + Cluster Loss 이다.
Experiments
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들이 각 각 알맞게 영향을 주고 받음으로써 모델이 안정적으로 돌아가고 있음을 확인 가능하다.
'AI' 카테고리의 다른 글
Wind Tunnel: Towards Differentiable ML Pipelines Beyond a Single Model (0) | 2023.01.27 |
---|---|
Semi-supervised Active Learning for Semi-supervised Models: Exploit Adversarial Examples with Graph-based Virtual Labels (0) | 2023.01.17 |
딥러닝 -03 Recurrent Neural Network (0) | 2020.04.04 |
딥러닝 -02 CNN 학습 (0) | 2020.03.31 |
딥러닝 01 - 기초 정리 XOR 문제 해결 과정 (3) | 2020.03.22 |
댓글