본문 바로가기

Papers

SimCSE: Simple Contrastive Learning of Sentence Embeddings

시작.

CV에는

  • SimCLR : A simple Framework for Contastive Learning of Visual Representations
  • MoCo : MoCo, Momentum Contrast for Unsupervised Visual Representation Learning

두 논문이 있다면 NLP에는 SimCSE가 있다.

Image Data의 Data Augmentation을 통해 Contrastive learning의 이점을 얻는 것처럼 

본 논문에서는 random mask noise를 통해 Data Augmentation을 구현하고 있다. 


위 두 논문을 읽은 관계로 논문 자체는 이해하는데 어렵지는 않았지만

중요한 수식이 많이 나오는 관계로 리뷰한다. 


1. Abstract

  • dropout을 noise로 similarity matrix 상에서 unseen을 예측.
  • dropout을 Data Augmentation으로서 사용하였고, 이를 없애는건 오히려 collapse를 일으킴. 
  • SimCSE는 크게 두 갈래로 나뉜다.
    • Unsupervised SimCSE : embedding x_i와, 서로 다른 random mask for dropout을 걸어서 만든 x_i^{+} 를 동일한 encoder에 통과시켜 만든 representation h_i, h_i^{+}를 positive pair로 삼고, in-batch 내 다른 샘플들은 negative pair로 삼은 뒤 contrastive learning
    • Supervised SimCSE : NLI Dataset에서 얻어진 "entailment", "Neutral", 그리고 "contradiction" Label에 해당하는 pair에서, entailment는 positive pair, contradiction은 negative pair로 삼고 in-batch 내 다른 샘플의 contradiction까지 모두 contrastive learning 
  • 그리고 Contrastive learning objective function이 embedding space에서의 anisotropic problem을 완화하는 역할을 함. 이는 동시에 Alignment와 Uniformity를 증진하는 효과를 거둠. 
  • STS Task에서 성능 향상. 

2. Introduction

 

- SimCSE는 unlabeled data(Unsupervised), labeled data(Supervised) 모두 좋은 sentence embedding을 얻을 수 있음.

- pre-trained language model weights : BERT, RoBERTa를 가지고 구현함.

 

1) Unsupervised SimCSE

  • dropout을 noise로 사용함.
  • 동일한 문장을 encoder에 두번 통과하되, 서로 다른 dropout rate를 적용한다.
  • 가령 A man is walking on the backstreet 라는 문장이 있으면, 0.1의 dropout, 0.3의 dropout을 걸어준다
  • 동일 문장에 서로 다른 random masking dropout을 걸어주면,
  • 동일한 pretrained encoder에 이 둘을 입력으로 집어넣어 얻은 h_i와 h_i^{+}를 positive pair로 삼는다. 

2) Supervised SimCSE

  • Natural Language Inference Dataset을 사용한다.
  • 주어진 문장에 대해 긍정,중립,부정을 나타내는 label인 Entailment, Neutral, Contradiction이 존재한다.
  • 당연히 Entailment는 x_i에 대한 positive pair로 쓰인다.
  • Negative pair는 x_j에 대한 entailment는 물론, x_j에 대한 Contradiction 까지이다. 수식에 나타나 있다. 

3) Anisotropy & Isotropy 

  • pretrained 모델로부터 얻은 word embedding은 Anisotropy problem을 가지고 있음. 
  • 이 논문은 Contrastive learning objective가 이 문제를 해결할 수 있음을 증명함. 
  • 이를 통해 uniformity를 이루어, isotropy를 보장함. 균등 분포를 보장함. 

3. Background : Contrastive learning 

 

- Embedding의 latent space 상에서

- 가까운 positive pair는 더 가깝게

- 먼 negative pair 사이의 거리는 더 멀게

  • i번째 sentence representation h_i와 그에 대한 positive pair h_i^{+}이 있을 때
  • 둘 사이의 유사도 내적과 나머지 in batch의 모든 j개의 negative 사이의 내적에 대한 softmax를 취한 뒤 
  • NLL을 취하여 Loss를 얻음. Cross-entropy라고 쉽게 생각하면 된다. 
  • sim(h_1,h_2)의 분모는 두 representation의 L2 Norm에 대한 내적이고, 분자는 내적.

1). Alignment & Uniformity 

- Alignment는 '거리'이다.

- Uniformity는 거리를 통해 얻은 '확률 분포'이다.

  • Alignment

Alignment

  • positive pairs로부터 샘플링 된 x와 x^{+}가 있을 때 이들 사이의 유클리디언 거리의 기댓값을 의미한다. 
  • Uniformity

Uniformity

  • Uniformity는 서로 다른 데이터 사이의 거리가 균등하게 분포되어 있는 정도이다.
  • 확률 분포 P를 따르는 모든 데이터가 Independent and Identically Distributed되어 있을 때
  • 이 데이터 분포에서 샘플링된 x,y가 주어지면, 이들 사이의 거리를 구한다.
  • 이를 exp 함수에 넣어 uniform 분포를 가정한 뒤
  • log를 취해서 평균을 구한다. 이렇게 얻어진 값은 임베딩들이 uniform distribution을 따르는 정도를 추정한다.
  • 이 수식은 positive instance의 거리는 가깝게, 그리고 random instance의 거리는 멀게 유지해야 한다는 contrastive learning의 목적과 일치한다.  

4. Unsupervised SimCSE

-  '미리' label을 지정하지 않는다.

-  임의의 sentence representation x_i가 있을 때,  x_i^{+}를 구한다.

-  이를 동일한 pretrained encoder, 서로 다른 random masking z, z^{\prime} 을 거친

-  sentence representation h_i와 h_i^{+}를 얻는다. 이를 Positive pair로 삼는다.

-  Dropout을 통해 Data Augmentation을 구현하고, 이는 다른 기법보다 훌륭한 성과를 거두었다.

-  이때 in batch의 다른 sentence representation은 전부 negative pair로 만든다. 

 

1) Dropout noise as Data Augmentation 

2) Why does it work? 

  • Word deletion, Crop 등 다른 Data Augmentation 기법보다, dropout을 적용했을 때가 가장 좋았음.
  • 그리고 dropout 확률 역시 다르게 적용해보았고 이에 따른 결과를 얻었음.
  • 딥러닝이 다 그렇지만 '해봤더니 좋더라'의 느낌이 많이 들었지만 뭐..
  • pretrained checkpoint로부터 학습을 진행하는게 당연하지만 성능 결과가 여러모로 좋았음. 

5. Supervised SimCSE 

-  NLI (SNLI + MNLI) dataset을 사용

-  Label : entailment, Neutral, contradiction을 사용 

-  entailment는 positive pair로 삼고, contradiction은 Negative pair로 삼음.

-  h_i가 있을 때, h_i의 positive pair는 h_i의 entailment이고, 그 외 h_j의 entailment, h_j의 contradiction은 모두 negative.

 

  • Table 4에서도 나왔듯, hard negative pair를 분모에 추가하여 contrastive learning을 했을 때의 결과
  • 성능이 더욱 좋았음.(86.2%)
  • 이는 CrossCLR의 논문에서도 나온 것과 비슷한 맥락임. 

6. Connection to Anisotropy 

 

이 논문에서 가장 중요한 section이라고 생각한다. 

-  anisotropy는 uniformity와 대립되는 개념이라고 생각한다. 

-  본 논문에서는 contrastive learning의 objective function이 Anisotropy를 완화할 수 있다고 한다. 

 

1) Anisotropy와 Isotropy 

Isotropy는 모든 방향에서 동일한 분산과 분포를 갖음을 의미

따라서 embedding space 내에서 모든 문장 쌍 간의 거리가 일정하게 분포되어야 함. 

그 반대의 경우는 anisotropic problem을 말한다. 

isotropy를 유지하기 위해서는 모든 방향에서 거리가 일정하게 분포되도록 embedding space를 조정해야 함.

그 역할을 바로 Contrastive learning objective가 한다고 볼 수 있음. 

왜냐하면, 

이와 같은 Contrastive learning의 objective가 주어졌을 때,

첫번째 expectation은 positive pair 사이의 거리를 줄이는 방향으로 최적화

두번째 expection은 negative pair 사이의 거리를 벌리는 방향으로 최적화

특정 임의 데이터에 대한 모든 negative sample 사이의 유사도에 대한 기댓값 확률을 구하고

또 이를 전체 데이터에 대한 기댓값을 구함. 

인코더 통과, normalize는 기본적으로 깔고 감. 그래서 0 ~ 1 사이의 범위에서 모든 숫자가 분포됨. 

 

특히, 두번째 항에 주목할 필요가 있음. 

두번째 expectation은 Jensen's inequality(잰슨 부등식)에 의해 다음과 같이 전개될 수 있음. 

  • 어떤 W \in R^{M x N} 있을 때, 이 W의 i번째 column은 h_i에 해당한다.
  • 이 W는 모두 normalize되어 있기 때문에, WW^{\times}는 0과 1 사이의 범위의 수만을 가지고 있음.
  • 그런데 이 WW^{\times}의 대각선의 모든 수는 1임. 왜냐하면 자기 자신과의 유사도이기 때문.
  • 따라서 tr(WW^{\times})의 값은 M과 일치하는 constant임.
  • 만일 WW^{\times}에 존재하는 모든 값이 양수일 때, Sum(WW^{\times})는 WW^{\times}를
  • 가장 크게 만들어 줄 수 있는 아이젠 밸류에 해당함.
  • Contrastive learning의 목적은 대각선의 값은 크게, (첫번째 항의 결과는 크게) 대각선이 아닌 값의 크기는 작게.
  • 따라서 둘째 항을 작게 만들어야지 결국 Sum(WW^{\times})를 작게 만들게 되는 효과를 거둘 수 있음.
  • 즉 나와 비슷한 것들끼리는 비슷하게, 먼 것은 멀게 만들수록 istropy를 만족하면서, 균등 분포(Uniformity)를 키울 수 있게 되는 목적을 달성하게 됨.
  • 균등 분포를 이루기 때문에 당연히 Alignment도 이룰 수 있다는 결과는 전제됨. 


총평.

본 논문에서 언급한 Alignment, Uniformity와 같은 개념을 SimCSE Framework와 연결하여 이해하지 않았다면

이 논문의 내용을 완벽하게 이해하지 못한 것이라고 생각한다. 

실제 이 논문의 공식 깃헙 (https://github.com/princeton-nlp/SimCSE)을 가면 엄청나게 많은 issue를 확인할 수 있는데, 

그 만큼 STS task 상에서 SimCSE가 큰 기여를 했다고 볼 수도 있고, 

Supervised, Unsupervised 모두 좋은 성과를 거두었다고 생각한다. 

단 Unsupervised의 결과, Supervised의 결과 사이의 간극을 줄이려는 시도가 돋보이지 않았다는 점이 아쉬웠고,

text similarity를 정통 수학적인 개념으로만 풀어내어 새로운 insight를 얻기에는 다소 힘들었다고 생각한다.