개요
논문 링크: https://arxiv.org/abs/1807.05520
아이디어를 요약하자면 1. neural net에 데이터에 있는 모든 이미지를 통과시켜서 feature을 뽑아내고 2. 이 feature들을 k-means clustering으로 클러스터 시켜서 label을 얻고 3. neural network가 이 label을 학습하는 것을 반복한다.
최근 리뷰한 논문들과는 다르게 contrastive learning을 사용하지 않는다 (SimCLR, MoCo들보다 좀 더 이전 논문이다). 이 글에서는 핵심적인 아이디어만 소개하겠다.
방법
알고리즘의 기본적인 틀
1. N개의 data \( x_n, n\in \{ 1, 2, ..., N\} \)가 있다고 하자. 우선 다음 문제를 풀어서 k-means clustering을 한다:
설명: 여기서 k는 k-means clustering의 k (사용할 cluster 개수)이고, d는 feature dimension이다. \( 1_k \) 는 1로 이뤄진 k-dimensional vector이다. 여기서 C는 각 cluster의 중심으로 해석이 가능하다 (k개의 column들이 feature space에서 cluster의 중심들을 형성한다). 따라서 주어진 cluster center들에 대해서 각 데이터 (이미지) 의 label을 사용해서 어떤 중심에 해당되는지 계산을 하고 (\( C y_n\)), 이것과 데이터의 feature 사이의 거리를 계산한다 (\( || f_\theta (x_n) - Cy_n|| \)). 참고로 \( f_\theta\) 가 parameter \( \theta \) 로 이뤄진 neural network이다. 이 값을 최소화하는 라벨 \( y_n\)들을 구하고, 데이터에 대해서 평균값을 구한다: \( \frac{1}{N} \sum_1^N \min_{y_n\in \{ 0,1\}^k} ( || f_\theta (x_n) - Cy_n|| ) \). 그리고 이 값을 최소화하는 center들 C를 찾는다.
2. 이렇게 k-means clustering을 해서 label들을 얻고, classification을 한다:
여기서 \( g_W\) 는 parameter W로 이뤄진 classifier이고 \( \ell\) 은 multinomial logistic loss이다.
기본적으로 1 & 2 단계를 교대로 진행하면서 \( f_\theta\)를 학습한다.
문제점 & 해결책
위 알고리즘을 그대로 적용하면 trivial solution이 나올 수 있다: 예를 들어 neural network가 모든 데이터에 동일한 featue을 뱉고 모든 데이터가 한 개의 cluster에 해당하는 minimum도 존재한다. 이렇게 되는 것을 방지하기 위해서 비어있는 cluster이 생기면 비어있지 않은 cluster을랜덤 하게 고른다. 이렇게 고른 cluster의 center (C 행렬의 column)에 작은 offset을 랜덤하게 줘서 새로운 cluster center을 만든다. 이렇게 새롭게 만든 cluster center로 다시 label을 만들면 empty cluster들을 제거할 수 있다. 또한 k-means clustering으로 얻은 label로 classification을 할 때 cluster의 크기가 다 다를 수 있기 때문에 fairness를 위해서 각 class마다 데이터 수가 동일하도록 샘플링한다.
결과
AlexNet을 DeepCluster 방식으로 학습 후 (이 논문에서 사용한 방식), neural net의 parameter들을 고정시키고, 이미지가 embedding 되는 feature을 기반으로 linear classifier을 학습한 결과이다. conv1, conv2, ... 은 AlexNet에서 몇 번째 convolution layer에서 나온 feature을 기반으로 linear classifier을 학습했는지를 뜻한다. 아직 ImageNet pre-training보다 좋은 결과를 얻지 못하는 것을 볼 수 있다.
Pascal VOC 데이터에 대한 결과: classification, detection, segmentation 모두 있는 dataset (dataset 사이즈는 작다). 여전히 ImageNet pre-trained model은 이기지 못하지만 unsupervised training 중 결과는 가장 좋다. 참고로 태이블에서 FC6-8은 AlexNet에서 fully connected layer만 학습시켰다는 뜻이고 ALL은 모든 layer들을 학습시켰다는 뜻이다.
추가 노트
약간 outdated된 방법이기는 하지만 분야에서 나름 중요한 논문이라서 리뷰해 보았다. 논문에서 Normalized Mutual Information이라는 metric을 사용해서 학습과정을 분석한 부분은 technical해서 리뷰에 담지 않았지만 흥미로웠다. 또한 당시에 사용하던 unsupervised learning 기법들은 colored image로 잘 학습이 안 되는 경향이 있어서 DeepCluster에서도 Sobel filter을 사용해서 이미지를 프로세싱시킨 후 학습하였다고 한다. 최신 기법들은 이런 문제가 없다.
'논문 리뷰 > self-supervised learning' 카테고리의 다른 글
[논문 리뷰] SeLa (0) | 2023.03.04 |
---|---|
[논문 리뷰] BYOL (0) | 2023.03.01 |
[논문 리뷰] MoCo-v2 (0) | 2023.02.24 |
[논문 리뷰] MoCo-v1 (Momentum Contrast for Unsupervised Visual Representation Learning) (0) | 2023.02.24 |
[논문 리뷰] SimCLR-v2 (Big Self-Supervised Models are Strong Semi-Supervised Learners) (0) | 2023.02.19 |