Supervision을 위한 대량의 labelled data를 얻기에는 많은 비용이 든다.
그래서 생각한게 unlabelled dataset만으로 task-agnostic하게 좋은 represenation을 얻고싶다는 생각을 했다.
Unsupervised learning으로 좋은 representation을 얻는다면 다양한 downstream task에 더 잘 적응 할 수 있고, supervision보다 더 좋은 성능을 얻을 수 있을 것이다.
자기지도 학습(Self-Supervised Learning)이란 Unlabelled dataset으부터 학습하는 인공지능 기법이고, representation learning의 일종이다.
레이블이나 주석이 필요하지 않은 대신, 데이터 자체에서 학습 과제를 생성한다.
자기지도 학습은 지도 학습(Supervised Learning)과 비지도 학습(Unsupervised Learning)의 중간쯤에 위치한다고 볼 수 있다. label 없이 input내에서 target으로 쓰일만 한 것을 정해서 모델을 학습한다. 즉 스스로 task를 정해서 supervision방식으로 모델을 학습함. 그래서 pretext task라고도 한다. pretext task를 학습한 모델은 downstream task에 transfer해서 사용 가능하다.
Self-supervised learning은 크게 두 단계로 나뉜다.
1. Self-prediction
2. Contrastive learning
하나의 data sample에서 한 파트로 다른 파트를 예측
batch내의 data sample 사이의 관계를 예측
하나의 data sample에서 data의 일부를 이용해서 나머지를 예측하는 task이다.
ex) time-series의 경우 다음 time step 예측 / Generative model도 self-prediction에 포함된다고 한다.
데이터의 특징에 따라 task를 스스로 정의할 수 있다. 최근에는 일부를 random하게 masking하고 이를 prediction(reconstruction)하는 방식이 많이 이용된다.
Autogressive 모델의 경우 이전의 behavior를 통해 미래의 behavior를 예측하는 것이다.
sequential한 direction data이면 regression으로의 모델링도 가능하다.
관련 모델
audio
WaveNet /
Language
GPT, XLNet /
Image
PixelCNN /
VQ등의 기법과 함께 사용했을 때 더 효과가 좋다.
정보의 일부를 마스킹해서 마스킹되지 않은 부분을 통해서 missin영역을 예측할 수 있도록 한다.
이를 통하여 relational information도 고려 가능하다.
generation / prediction하는 task에서 random masking으로 masking 범위가 변화하여 다양한 size로 학습이 가능하다고 한다.
관련 모델
Language
Bert /
Image
denosing autoencoder, masked autoencoder, simMIM, Data2Vec
segmentation이나 rotation등의 transformation을 하나의 샘플에 가해도 본질적 정보는 보존할 것이다는 컨셉으로 relationship을 prediction하는 방법론이다.
domain knowledge가 필요한 image에서 자주 사용한다.
ex)
image에서 어떤 rotaion이 적용 됐는지, augmentation 정도를 맞추거나
sequential data의 경우 segment shuffle로 순서를 classification하는 방식이 있다.
이 방법을 사용하면 augmentation aware한 feature를 뽑을 수 있다.
contrastive learning에 추가하여 보조적인 역할로 사용하기도 한다.
VQ-VAE, Jukebox, DALL-E 와 같은 모델이 있다.
contrastive learning의 목적은 embedding space에서 유사한 sample pair들은 더욱 가깝게, 유사하지 않은 sample pair들을 거리가 더욱 멀게 만들어 주는 것이 목적이다.
현재 상태를 anchor이라고 부른다.
그리고 그 anchor과 유사한 샘플은 positive point라고 하고, anchor과 positive pair를 이룬다.
유사하지 않은 샘플은 negative sample이라 하고, anchor과 negative pair를 이룬다.
기존의 distance loss로 학습하는 방법론이 모델의 출력이 상수가 되어도 loss가 작아질 수 있어, representation이 잘 학습되지 않는 representation collapse 현상이 발생한다. 이를 극복하기 위해 negative sample이 등장하는 contrastive learning 방법론들이 등장했다.
Contrastive하게 학습된 feature들은 supervised learning을 통해 학습한 feature보다 unifor하고 aligned된다.
Positive pair이 서로 가까워 지는 것들이 alignment에 기여한다고 볼 수 있다.
Negative pair가 멀어지는 것이 uniformity를 만족하는데 기여할 수 있다고 볼 수 있다. (샘플들 사이에서 특징을 살려준다)
contrastive learning은 instance를 구별하는 일종의 classification task를 pretext task로 삼는 방법으로 볼 수 있다.
simliar ("positive")와 dissimilar ("negative") 후보들이 주어질 때, anchor data point와 simliar한게 무엇인지를 구별하는 것이기 때문이다. 이러한 방식의 대표 논문은 MoCo, SimCLR이 있다.
different view로 생성한 positive pair (x1, x2)는 각각 다른 encoder를 통과하고 서로 가까워지도록 학습한다. 그리고 다른 class를 가지는 negative sample은 서로 멀어지도록 학습한다.
하나의 데이터에 대한 다른 시각을 positive pair로 선정 할 수있다.
필터를 다르게 낀다던지,
embedding space에서 sample 사이의 유사도를 distance로 판단하는 방식
InfoNCE
categorical cross-entropy loss를 사용함.
positive sample의 context vector와 input vector의 mutual informatin을 크게 가져가는 효과가 있다.
Feature clustering
positive pair 생성으로 instance를 discrimination하는 것이 아니라 encoder를 통해 학습된 feature represenation으로 데이터 샘플을 clustering함으로서 만들어진 class들에 pseudo-label을 명시적으로 달고 이를 토대로 inter-sample classification을 진행하는 방식.
batch 내의 anchor이외의 나머지 샘플들을 모두 negative sample로 보는 문제에 대한 대안이 될 수 있다.
DeepCluster, SwAV, InterCLR
Reference
적은 시간에 많은 일을 해야하는 상황이라 첫번째 블로그 작성자님의 블로그에서 많은 도움을 받았다.