[CVPR 2023] Coreset Sampling from Open-Set for Fine-Grained Self-Supervised Learning

CVPR 2023에 게재된 Open-setSelf-supervised learning 과 관련한 논문을 리뷰하려고 합니다. 해당 논문은 Active Learning 의 목적과 비슷하게 ‘라벨이 없는 데이터셋에서 유용한 하위 데이터셋을 찾는 연구‘ 입니다.



Introduction

이번 논문은 Fine-Grained 데이터셋에서 문제 정의가 시작됩니다. fine-grained classification은 우리가 흔히 아는 단순한 분류 문제가 아니라, 더욱 세세한 분류 문제라고 할 수 있는데요. 예를 들어, 강아지에 대한 fine-grained classification task일 경우 푸들/코카스파니엘/말티즈 등 하위 종까지 분류해야합니다. 만일 이런 세분화된 분류 문제에 대한 솔루션을 찾아야한다고 했을 때… 가장 먼저 걱정되는 건 역시 “Dataset” 입니다. 강아지처럼 우리에게 친밀한 객체에 대해 세분화하는 모델을 만든다면 그나마 다행이겠지만,,, 그게 아니라면 데이터셋이 있을 지부터 걱정되기 시작합니다. 가령, 매미의 하위 종에 대해 분류하는 모델을 만들어야 한다면… 그런 데이터셋…. 있겠죠? 그럼 다행입니다..ㅎ

이렇게 Fine-grained를 위한 dataset 존재 여부를 걱정하는 건 역시 annotation 때문일텐데요. 일반인에게 다양한 매미 이미지를 제공하고 그에 해당하는 상세한 이름을 구분하도록 요구하는건 쉬운 일이 아닐겁니다. 어떤 일반인이 매미의 종류를 분류할 수 있을까요…ㅎ 구글에 매미 종류라고 검색하면 벌써 ‘말매미, 유지매미, 소요산매미, 쓰름매미, 애매미, 참매미, 털매미, 늦털매미, 참깽깽매미, 깽깽매미, 두점박이좀매미, 고려풀매미, 세모배매미, 풀매미, 호좀매미’ 이렇게 많이 등장합니다. 참고로 이건 우리나라에 서식하는 매미 15종인데, 세계에는 15개보다 훨씬~ 더 많은 매미가 있을 겁니다.

밤낮없이 울어대는 매미들…수컷만 운다? [청계천 옆 사진관]|동아일보

이렇듯 가뜩이나 일반인 대상의 라벨링 비용 자체도 만만치 않은 상황에… Fine-grained Dataset의 라벨링에는 전문가라는 인력이 필요합니다. 그러나 전문가를 고용하는 데에 비용적 부담은 더욱 커지게 됩니다. 그렇다보니 fine-grained dataset은 거의 없거나, 있더라도 아주 극 소량인 경우가 많습니다. 결국 이런 fine-grained dataset은 ‘라벨링’이라는 커다란 벽에 부딪히게 됩니다.

그런데 이런 라벨 이슈는 self-supervised learning (이하 SSL) 의 등장으로 조금 사그라지는 듯 보입니다. 라벨을 사용하지 않고도 모델 학습이 가능한 이 녀석은 충분한 표현력을 배울 수 있고, supervised 의 성능을 뛰어넘기도 합니다. 그렇기 때문에 이제는 Open-set도 학습에 사용할 수 있을 것 같습니다. 여기서 Open-set이란 웹 크롤링을 통해 쉽게 얻을 수 있는 데이터셋 입니다. 크롤링이다 보니 우리가 모델 학습에 사용되는 대표적인 벤치마크과 다르게 노이즈가 있을 수 있습니다. 그렇기에 그동안은 이런 open-set의 활용을 학계에서 많이 볼 수 없었는데요. 저자는 SSL 기법은 학습 시 라벨이 필요 없으니, open-set도 학습에 사용하는 방식에 대해 고민하였습니다.

단순하게 기존에 존재하는 fine-grained 데이터셋에 open-set을 추가하여 SSL을 진행한 뒤, Downstream task에 대해 추가 학습을 진행한 실험 결과를 확인해보았습니다. 그 결과 open-set을 추가한 것보다 fine-grained dataset만으로 SSL을 적용한 게 성능이 더 높았습니다. 데이터셋이 무작정 크고 다양하다고 성능이 높아지는 게 아니었습니다. 이처럼 open-set을 그냥 추가했을 때 downstream task에서 성능 드랍이 발생하는 문제를 저자는 Open-Set Self-Supervised Learning (OpenSSL) problem 이라고 말하고, 이를 해결하는 방식에 대해 제안하였습니다.

바로 위에 있는 그림이 저자가 제안하는 OpenSSL problem의 솔루션입니다. Open-set 중에서도 Fine-Grained Dataset과 비슷한 핵심적인 데이터셋을 골라서 추가하자는 것이죠. 즉, 저자는 Distribution Mismatch로 인해 성능 드랍이 발생한 것이라 설명하였는데요. 이에 대해서는 아래 그림과 함께 설명드리겠습니다. (참고로 Aircraft, Cars, Pet, Birds 는 대표적인 Fine-Grained 에 대한 데이터셋 입니다.)

X: Target (Fine-Grained Dataset)
OS: Open-Set Datset
OS_{rand}: Open-Set 에서 랜덤하게 선택한 일부 데이터셋
OS_{oracle}: Open-Set 에서 Target과 비슷한 데이터를 사람이 직접 선택한 일부 데이터셋

위에 보이는 그래프는 각각 SSL에 사용한 데이터셋을 의미합니다. 우선 상단 그림에서 OS의 SSL이 Fine-grained dataset (X)의 SSL 을 모든 데이터셋에서 뛰어넘는 것이 아닌데, 이는 두 데이터셋 사이의 semantic similarity 가 달라지기 때문입니다. 즉, 다운스트림 태스크에서 self-supervised의 성능이 사전학습 및 fine-tuning 데이터셋의 유사도와 관계가 있다는 *기존 논문들의 실험 결과와 일치한다는 걸 알 수 있었다고 합니다.

*Are large-scale datasets necessary for self-supervised pre-training?, Arxiv
*How well do self-supervised models transfer?, CVPR, 2021

*Divide and contrast: Self-supervised learning from uncurated data, ICCV, 2021

따라서 이런 분포 불일치로 인한 성능 저하 문제를 해결하기 위해, 타겟 데이터셋 (X)와 유사한 semantic 정보를 가지는 open-set 안에서의 core-set을 추가하고자 하였습니다. 이에 대한 추가 실험은 다시 위에 있는 그림으로 올라갑니다. 우선 저자가 직접 수동으로 open-set에서 타겟 데이터(X)와 관계있어 보이는 데이터를 고른 것이 OS_{oracle}인데요. 놀랍게도 X+OS_{oracle}이 단순히 X+OS보다 상당한 성능 향상을 보였고, 어떤 경우보다 높은 성능을 달성한 것을 확인할 수 있었습니다. 따라서 이러한 실험 결과를 바탕으로 저자는 SSL에서 Open-set을 사용할 때, 무작정 합치는 것이 아닌, 타겟 데이터셋과 비슷한 분포를 가지는 핵심 데이터들을 선별해서 SSL 학습을 해야한다고 주장하였습니다.

따라서 저자는 본 논문을 통해 라벨이 없는 open-set에서 핵심 데이터셋인 코어셋을 샘플링하는 SimCore라는 방법론을 제안하였습니다. SimCore의 목적은 Open-set 에서 ‘Target Dataset (Fine-grained dataset for Downstream task)’과 의미적으로 유사한 하위 집합을 찾는 것입니다. open-set에서 Downstream task에서 성능을 더욱 끌어올릴 수 있는 핵심 데이터셋을 찾는 알고리즘은 어떻게 설계하였는지는 다음 섹션에서 본격적으로 서술하겠습니다.

Method

OpenSSL Problem Formulation

우선 저자는 SSL기법으로 open-set 데이터셋을 사용할 경우 발생하는 문제를 ‘OpenSSL Problem’ 이라고 정의하였습니다. 이는 Introduction에서 설명드린 것처럼 Target Dataset (Fine-grained dataset for Downstream task) 과 Open-set 데이터셋 사이 분포 불일치로 인한 성능 드랍을 의미하는 데요. 우선 Self-supervised learning 이란, 라벨 없이 데이터의 고유한 속성을 학습하는 동시에 augmentation된 샘플을 구별하여 관련 없는 정보를 버리는 기법이라고도 할 수 있습니다.

저자가 사용한 SSL 방법론은 상단 그림 중 왼쪽 프레임워크에 해당하는 ‘SimCLR’ 입니다. 간단히 말하자면, 동일한 이미지의 표현은 유사하게, 다른 이미지의 표현은 다르게 만드는 Contrastive Loss 기반의 SSL 방법론입니다. 여기서 SimCLR는 알아두면 피가되고 살이되는 방법론이기 때문에 제가 예전에 작성한 리뷰를 걸어두겠습니다. >> SimCLR: A Simple Framework for Contrastive Learning of Visual Representations SimCLR 학습을 위한 Loss는 오른쪽 그림 수식 (1) 에 해당합니다. (참고로 SimCLR 말고도 MIM 기반의 SSL 도 적용한 결과는 아래 Ablation study에서도 확인할 수 있습니다.)

이렇게 정의한 SSL 덕분에 Target dataset X(=Fine-grained dataset for downstream task)를 사용하여 라벨 없이도 인코더를 사전 학습하는 것이 가능해졌습니다. Open-set인 U도 라벨이 없으니 동시에 학습할 수 있겠죠. 그런데 단순하게 Open-set 과 X 를 합쳐서 사전학습 시키는 것은 Distribution Mismatch로 인한 성능 드랍이라는 문제가 있었습니다. 따라서 그 대신 오픈셋에서 X와 관련된 하위 집합 S를 샘플링하고자 합니다. 그렇게 선택한 S에 대해서 다시 L(X\cup S; E_\theta)로 인코더를 사전 학습합니다.

3.2. Simple Coreset Sampling from Open-Set

지금까지 ‘SSL을 적용하여 Open-set 에서 X와 분포가 비슷한 Coreset S를 선별하기’ 라는 문제에 대한 정의를 마쳤습니다. ‘분포가 비슷하다’ 에 대해 저자는 ‘X의 샘플과 가장 가까운 open-set 샘플’로 정의하여 Coreset S를 구축하고자 하였습니다. 따라서 부분집합 S를 찾는 것에 대한 목적함수를 아래 수식으로 정의하였습니다.

1.w(x, u)= z_x^T z_u: similarity of two representations
2.z: the normalized feature from the encoder E_θ pretrained on X.

수식은 굉장히 간단한데요. w(x, u)는 x, u feature 사이의 유사도를 의미합니다. (유사도 계산에는 흔히 알고있는 Cos similarity 사용함) 즉, 수식 (2)를 통해서 SimCore는 X와 가장 유사한 semantics을 공유하는 하위 집합을 고르게 됩니다.

그런데 여기서 문제, target dataset X 와 Open-set U 모든 데이터셋 사이의 pairwise 유사도를 직접 계산할 때의 복잡도는 O(|X| |U|) 입니다. 이렇게 되면 계산 복잡도가 무지 크다는 단점이 존재합니다. (만일 open-set이 ImageNet보다 크다면… 아찔하겠죠) 따라서 계산 오버헤드를 줄이고 알고리즘을 확장 가능하게 만들기 위해, X를 K-means 를 적용하여 나온 centroid의 집합 \hat(X)으로 대체합니다. 이를 통해 X가 아닌 X를 대표할 수 있는 데이터셋 \hat(X)과 비슷한 분포의 coreset S를 찾는 것으로 문제가 바뀌었습니다.

Iterative coreset sampling

또 다른 문제가 하나 있습니다. coreset S의 크기에 대한 제약이 없다면, \hat{f(S)}의 최대값을 가지는 부분 집합 S는 고유하지 않다는 점입니다. 다시 말해 \hat{X}와 가장 유사도가 비슷한 집합 S는 open-set안에서 여러개 일 수 있다는 것입니다. 아마 S의 크기가 정해져 있지 않다면, 1000개가 뽑힌 \hat(S_1), 1200개가 뽑힌 \hat(S_2) 등등 여러개가 선택될 수도 있습니다.

따라서 저자는 S의 크기를 최대의 유사도를 가지는 가장 작은 크기의 S로 제한하였습니다. 그럼 명확하게 S가 한 개로 딱 떨어지겠죠. 이렇게 가장 작은 크기의 S를 S^*라고 정의하겠습니다. 그런데 이 S^*의 크기가 워낙 작기 때문에, 충분히 큰 크기의 core-set을 얻지 못합니다. 이를 해결하고자 Active Learning 처럼 S^*를 선택하는 과정을 t번 반복하는 방식을 채택하였습니다.

이 방식으로 1, 2, … T번째에 각각 S^*_1, S^*_2, S^*_T가 선택되었습니다. 이렇게 선택한 데이터들을 모두 합친 것이 우리가 구하고자 했던 Core-set입니다. 이렇게 SimCore 의 핵심 알고리즘이 완성되었습니다.

Stopping criterion

그런데 위에서 T번 데이터를 선택하는 과정을 반복한다고 하였는데, T는 어떻게 구할까요? 여기서 다시 문제 정의로 돌아가봅시다. Open-set 중에서 Core-set만 고르는 이유는 X와 분포가 비슷한 셋을 고르기 위함이었죠. 따라서 선택된 T번째 데이터는 기존 분포와 비슷해야 합니다. 이 말은, T번째에 추가된 데이터가 기존 분포와 다르다면 데이터를 추가하는 과정을 멈춰야 한다 라는 말로 해석할 수 있습니다. 따라서 각 반복마다 \hat{f(S^*_t)}/\hat{f(S^*_1)}의 비율을 계산하고, 그 값이 임계값\gamma=0.95보다 작으면 샘플링 프로세스를 중단하도록 설계하였습니다. 처음에 추가된 분포가 T번째 추가된 분포와 0.95 보다 더 많이 차이나면 데이터 추가를 멈추는 것이죠.

Summary

지금까지 리뷰한 SimCore 알고리즘을 한 단계씩 설명하고 방법론에 대한 설명을 마무리 해보겠습니다.

  1. 우선 기존에 가지고 있는 X를 사용하여 E_\theta를 SSL 기법으로 학습을 합니다.

2. 유사도 계산 시 복잡도를 줄이기 위해, K-means를 사용하여 X 중에서도 대표할만한 \hat{X}를 선택합니다.

이제 SimCore를 수행하기 위한 준비가 끝났습니다. 아래부터는 본격적인 방법론입니다.

3. \hat{X} 와 유사도가 가장 비슷한 가장 작은 크기의 S^*를 선택합니다.

4. 선택한 데이터를 I에 추가하고, U에서는 제거합니다. 이 과정을 계속 반복합니다.

5. 매 반복마다 중단점 기준을 계산합니다. 즉, 추가한 데이터의 분포가 맨처음 분포와 다르다면 데이터 추가를 중단합니다.

이렇게 추가된 I를 X와 합쳐서 다시 한 번 SSL로 모델을 사전학습하면, Downstream 에서 더욱 우수한 성능을 낼 수 있습니다.


Experiments

1) Performance Evaluation on Target Tasks

우선 SSL 에서 가장 흔히 사용되는 Linear evaluation 입니다. Encoder의 표현력을 확인하기 위해, SSL 기법에서 학습한 상태로 Encoder를 고정한 다음, FC만 학습한 결과를 확인하는 방식입니다. 여기서 X는 Fine-grained dataset이고 Aircraft, Cars, Pet, Birds, Dogs, Flowers, Action, Indoor, Textures, Faces, Food 에 해당됩니다. 그리고 open-set은 우선 ImageNet-1K로 설정하였습니다. 아래 테이블은 아마 베이스라인일 될 결과입니다.

저자는 SimCore가 샘플링한 코어셋이 사전학습 데이터셋으로 질적으로 적합한지를 평가하기 위해, S의 크기를 p = 1% 또는 p = 5%(즉, 오픈 세트의 샘플링 p-비율)로 설정하고, openset에서 랜덤하게 선택한 X+OS_{rand} p%와 비교하였는데요. 아래 테이블에서 노란색으로 표기된 것과 X+OS_{rand}를 비교해주시기 바랍니다. 모든 경우에서 SimCore가 우수한 결과를 보였습니다.

그 다음으로 앞서 계산 복잡도를 위해 K-means 를 적용하였다고 했는데요. K 값을 1로 했을 때의 성능도 리포팅하였습니다. 이를 통해 K-means의 설정값과 관련없이 SimCore 의선별 방법이 우수함을 보이고자 하였습니다. 아래 테이블에서 회색으로 칠한 것이 이에 해당합니다. 그 결과 여러 클러스터 중심(k=100)을 사용하는 것이 단일 클러스터(k=1)보다 더 유리하긴 하지만, k = 1의 SimCore도 랜덤 샘플링보다 우수한 결과를 보였습니다.

ㅇ이익이거ㄱ

이것 말고도 stop criterion 을 적용한 실험 결과를 가장 아래에 추가하였습니다. 데이터의 분포를 고려하면서 추가하는 것이 대체적으로 높은 성능을 보였다는 것을 확인할 수 있었는데, 이것말고도 집중해야할 것은 추가된 데이터셋의 비율입니다. 빨간색 박스와 같이 Aircraft, Cars는 1%의 데이터만 추가된 것을 알 수 있는데요. OS로 사용한 ImageNet 데이터셋 내에는 해당 클래스의 데이터가 많이 없다는 것을 고려하면 아주 적절하게 semantics를 반영하여 데이터가 추가된 것을 확인할 수 있습니다.

뿐만아니라 stop criterion이 있는 SimCore는 X 만으로 사전학습한 방식에 비해 정확도가 +10.5%(11개 데이터 세트 평균) 향상되었다는 점에서, 해당 방법론인 open-set의 활용 가능성을 보였다는 점에서 높은 우수성을 가지지 않나 생각하게 됩니다.

Different encoder architectures and SSL methods

SimCore는 기본적으로 SimCLR와 ResNet에서 수행하였습니다. 여기서는 archituecture와 SSL 방법론을 다양하게 바꿔가며 실험 결과를 보였는데요. 아래 테이블이 그 결과입니다. 인코더 아키텍처가 훨씬 작든 크든 상관없이 SimCore는 target dataset에 대한 사전학습을 크게 개선하는 것을 알 수 있었습니다.

2) SimCore on Various Open-Sets

지금까지는 일반 도메인을 포괄하는 데이터 세트인 ImageNet-1k 벤치마크를 오픈셋으로 설정한 결과를 확인해보았습니다. 그러나 실제 상황에서의 오픈셋은 웹이나 데이터베이스에서 임의로 가져온 데이터의 집합일텐데요. 따라서 저자는 조금 더 일반화된 결과를 보이기 위해 어떤 오픈셋을 사용해도 코어셋 잘 찾기 때문에 사전 학습이 강력하게 개선된다는 것을 보여주고자 하였습니다. 이에 대한 실험으로 세 가지 다른 오픈셋으로 실험했습니다: MS COCO, iNaturalist 2021-mini, Places365 입니다.

아래 그림 중 왼쪽에 해당하는 그림을 통해 SimCore의 성능이 open-set에 따라 달라지는 반면, OS를 사용하지 않은 사전 학습에서는 SimCore가 일관되게 더 나은 성능을 보였음을 확인하였습니다. 또한 액션이나 실내와 같이 자연물과는 관계가 적은 데이터셋에서는 iNaturalist를 사용하는 것이 ImageNet만큼 효과적이지는 않지만, Birds에는 좋은 영향을 미치는 것을 알 수 잇습니다. 또한 실내의 경우, 풍경과 관련된 정보가많이 포함되어 있기 때문에 모든 오픈셋 중에서 Places365가 가장 좋은 성능을 보였습니다.

그리고 재밌는 결과는 아래 그림 중 오른쪽에 해당하는 것인데요. 이 그림은 선택된 코어셋 중 몇 개의 샘플을 나타냅니다. 실제 라벨은 Place인데, SimCore가 선택한 데이터는 동물 이미지이라는 점이죠. 즉, Pet이라는 Fine-grained 와 비슷한 샘플을 Place365에서 라벨 없이 잘 찾아낸 것을 알 수 있었습니다. 이것 말고도 iNaturalist에서도 사람이 안고 있거나 실내에 있는 자연 생물이 포함됐는데, 이는 사진 촬영, 낚시, 정원 가꾸기 등 사람이 있는 액션 타겟과 실내 풍경 타겟이 선택된 것을 통해 비슷한 분포의 이미지를 잘 선별하였음을 알 수 있습니다.

3) Qualitative Evaluation

SimCore 알고리즘이 latent space에서 코어셋을 샘플링하는 방법을 분석하기 위해, R2에서 가우시안 커널 밀도 추정을 통해 단위 링의 특징 분포를 시각화 결과를 제시하였습니다. TSNE를 아래 왼쪽 그림과 같이 표기한 것으로 이해하시면 좋을 것 같습니다. 그 결과 SimCore가 실제로 타겟 데이터에 밀접하게 샘플들을 샘플링한다는 것을 확인할 수 있는데요. 왼쪽에서부터 순서대로 OS, X, S 를 의미합니다. S가 바로 Simcore 방식으로 선별된 Coreset으로, OS에서 X와 비슷한 분포의 데이터가 선별된 것을 확인할 수 있습니다. 뿐만 아니라 OS와 X의 점유된 영역 비교를 통해 오픈 세트와 각 타겟 데이터 세트의 분포 유사성까지 확인할 수 있는 정성적 결과라고 할 수 있을 것 같네요.

마지막으로 코어셋 시각화를 아래 그림 중 오른쪽에서 확인할 수 있습니다. 오픈셋에서 어떤 인스턴스가 실제로 SimCore 알고리즘에 의해 샘플링되는지 시각화한 것입니다. 그 중 대상 데이터 세트가 애완동물 또는 조류일 때 코어셋 샘플의 GT 라벨을 그린 것인데요. 위에 있는 그래프는 k=1인 경우를 아래에 있는 그림은 K=100인 경우를 나타냅니다.

k = 1인 SimCore는 대부분 동물 이미지를 샘플링했지만, 고양이와 개와는 다소 무관한 데이터도 포함되었습니다. 예를 들어, 두 번째로 많은 클래스는 자이언트 팬더, 세 번째 코알라, 여덟 번째 원숭이의 일종인 구논을 꼽을 수 있겠네요. 반대로 k = 100인 SimCore는 대부분 고양이 또는 개 이미지를 샘플링했으며, top-20까지 각각 고양이 또는 개 품종으로 분류하였다는 시각화 결과를 확인하였습니다.


정말 간단한 방식으로 중요한 샘플을 찾아내는 SimCore 알고리즘을 알아보았습니다. 솔직히 아이디어 자체는 너무 간단하고 딱히 새로운 방법론을 제시한 것은 아닌지라 어떻게 CVPR이지 싶었는데… 실험에서 독자들을 충분히 설득할 만한 결과들을 보여준 논문이 아닌가 싶습니다.

Author: 홍 주영

6 thoughts on “[CVPR 2023] Coreset Sampling from Open-Set for Fine-Grained Self-Supervised Learning

  1. 안녕하세요. 홍주영 연구원님.
    좋은 리뷰 감사합니다!

    설명이 구체적이고 자료가 많아 쉽게 이해할 수 있었느나, 두 가지 헷갈리는 부분이 있어 질문드립니다.

    SimCore의 진행과정에서, 전체 X 분포를 대신할 수 있는 k-means 결과인 X hat을 선정하고, 이들과 가장 유사한 샘플 S*을 추출하는데, 그렇다면 S*의 크기도 k 개가 되는 것이 맞나요?

    그리고, Iteration의 중단 조건인 f(S_t) / f(S_1)이라는 것이 새로운 S*를 추가하기 전 분포와 추가한 후의 분포의 차이가 맞는지, 잘 이해가 되지 않아 질문드립니다.

    감사합니다!

    1. 안녕하세요 백지오 연구원님, 리뷰 읽어주셔서 감사합니다.

      우선 첫번째 질문, S*의 크기가 K-means에서 설정한 K와 같냐라고 질문 주셨는데요. K일수도 있고, 그보다 작을 수도 있습니다.

      두번째 질문은 중단조건에서의 분포 기준에 대해 질문하셨습니다.
      우선 S*1 은 처음 iteration에 추가된 데이터셋이고, S*t는 t번째 iteration에 추가된 데이터셋입니다. open-set에서 S*개만큼 X와 분포가 비슷한 데이터를 반복적으로 추가해나가는 것이 본 연구의 목표인데요. 매 iteration마다 첫번째에 추가된 S*1 사이 분포 차이를 비교하는 것입니다. 현재 iteration이 2번째라면, f(S*2)/f(S*1) 이 되고, 3번째라면 f(S*3)/f(S*1), 따라서 t번째에는 f(S*t)/f(S*1) 이 되는 것이죠.
      그러므로 중단 기준으로 사용되는 건 새로운 S* 추가하기 전/후가 아닌, 첫번째로 추가한 배치와 나중에 추가한 배치를 비교하는 것으로 이해하시면 됩니다.

  2. 홍주영 연구원님, 좋은 리뷰 감사합니다. 항상 리뷰를 공들여 자세히 써 주셔서, 기반 지식이 부족한데도 어찌어찌 읽어낼 수 있는 것 같습니다.

    이번 리뷰는 Self-Supervised Learning에 관련된 내용이네요. 이제 self-supervised learning에 대해 공부해야 하기에 읽어보게 되었습니다. AL과 비슷하게 ‘라벨이 없는 데이터셋에서 유용한 subset을 찾는 연구’라는 점에서도 읽어야 할 리뷰하고 생각했습니다.

    리뷰를 다음과 같이 요약할 수 있을 것 같습니다.
    fine-grained dataset이란 더욱 세세한 task를 위한 데이터셋인데, 세부 주제 연구에서는 항상 dataset에 대한 걱정이 있습니다. 애초에 적절한 데이터셋이 있는지부터 걱정해야 하기 때문입니다. 일반인을 대상으로 한 라벨링 비용도 많많찮은데, annotation에 전문가를 고용해야 하는 경우 더욱 난감합니다. 그래서 fine-grained dataset은 거의 없는게 현실입니다.
    하지만 self-supervised learning의 발전으로 라벨 없이도 어느정도의 표현력을 학습시킬 수 있게 되었습니다. 바꿔 말하면, 라벨이 없는 open-set도 학습에 사용할 수 있게 되었습니다. 하지만 단순히 기존의 fine-grained dataset에 open-set을 추가해 SSL을 진행한 뒤 downstream task에 추가 학습을 진행한 결과, open-set을 추가한 것보다 fine-grained dataset만으로 SSL을 적용한 성능이 더 좋았습니다. 단순히 데이터셋이 크고 다양하다고 좋은게 아니었던 것입니다. 이렇게 open-set을 그냥 추가했을 때 downstream task에서 성능 드랍이 발생하는 문제를 open-set self-supervised learning problem이라고 합니다.
    저자가 제안하는 OpenSSL problem 솔루션은 Open-set 중에서도 Fine-Grained Dataset과 비슷한 핵심적인 데이터셋을 골라서 추가하자는 것입니다. 저자는 distribution mismatch로 인해 성능 드랍이 발생했다고 보고, SSL에서 Open-set을 사용할 때 무작정 합칠 것이 아니라, 타겟 데이터셋과 비슷한 분포를 가지는 핵심 데이터들을 선별해서 SSL 학습을 해야한다고 합니다. 이에 따라 저자는 라벨이 없는 open-set에서 핵심 데이터셋인 코어셋을 샘플링하는 ‘SimCore’라는 방법론을 제안합니다. SimCore의 목적은 Open-set 에서 ‘Target Dataset (Fine-grained dataset for Downstream task)’과 의미적으로 유사한 하위 집합을 찾는 것입니다.
    open-set에서 X와 분포가 비슷한 Coreset S를 선별하는 전략으로 유사도(여기서는 cos similarity)를 계산해 X와 가장 유사한 semantics를 공유하는 하위 집합을 고르는것이 SimCore입니다. 여기서 계산복잡도를 줄이기 위해 coreset의 크기를 제한하고, X를 K-means centroid 집합으로 대체합니다(X보다 작지만 X의 분포를 대표할 수 있겠죠)
    방법론 자체는 크게 복잡하지 않지만 실험이 다양하게 reporting되어 있어서 경향성을 파악하기 좋았던 논문 같습니다. 하지만 몇몇 빼고는 수치가 높은것 같지 않아서 아직 실제로 적용할만한 방법론은 아닌것 같다는 느낌도 들도 아니면 이정도면 높은 성능인지를 잘 모르겠어서 .. 이쪽 분야는 아직 더 많은 공부가 필요할 것 같습니다.

    간단한 질문이 있습니다.
    유사도를 측정하는 방법을 벡터간의 cos 유사도를 계산하는것으로 이해했습니다. cos유사도가 일반적으로 사용되는것 같은데 이것 말고 자주 사용되는 유사도 공식이 있는지 궁금합니다

    1. 안녕하세요 허재연 연구원님, 리뷰 읽어주셔서 감사합니다.

      요약해주신 글 잘 읽어봤습니다. 제 생각엔 실생활에서 사용하기엔 아직은 너무 이른 감이 없지 않나 싶습니다.
      아무튼, 재연님은 cosine similarity 가 아닌 다른 유사도 계산 기법이 있는지를 질문주셨는데요.
      사실 코사인 유사도 말고 다른 기법에 대해서는 아는게 없어 찾아보니 잘 요약해둔 문서가 있어 첨부합니다. https://wikidocs.net/24654 우리가 흔히 아는 유클리드 거리도 유사도로 사용될 수 있고, 자카드 유사도 라는 기법도 있으니 잘 읽어보시면 도움이 될 것 같습니다. 추가로 해당 독스에 코사인 유사도에 대해 다룬 탭도 있으니 이에 대해서도 읽어두시면 유익하지 않을까 싶습니다.

  3. 안녕하세요, 홍주영 연구원님. 좋은 리뷰 감사합니다.
    한가지 궁금한 점이 있었는데, 해당 논문에서 데이터의 추가 조건이 유사도인것으로 이해했습니다.
    그렇다면 open-set을 추가할 때 어노테이션(혹은 연산량)과 관련한 예산을 고려한 중단은 없는것인지 궁금합니다.
    감사합니다.

    1. 안녕하세요 황유진 연구원님, 리뷰 읽어주셔서 감사합니다.

      저도 그 부분에 대해 궁금했으나, 해당 논문의 초점이 mismatch여서 그런지 분포에 대한 중단 기준만 존재하였습니다. 다시 말해 아쉽게도 예산을 고려한 중단 기준은 없었습니다

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다