안녕하세요 콥스랩(COBS LAB)입니다.
오늘 소개해 드릴 논문은 ‘SimCSE:Simple Contrastive Learning of Sentence Embedding’입니다.
해당 내용은 유튜브 ‘딥러닝 논문 읽기 모임' 중 ‘SimCSE’ 영상 스크립트를 편집한 내용으로, 영상으로도 확인하실 수 있습니다. (영상링크:https://youtu.be/RToEmUYyGO4)
먼저 이 해당 논문을 이해하기 위해서 필요한 background knowledge부터 말씀드리겠습니다. 세 가지의 background knowledge가 필요합니다.
하나는 Contrastive learning입니다. 요즘 NLP에서 굉장히 representation이 잘 되는 연구가 활발하게 진행되고 있는데요. Contrastive learning는 Positive pair에 Embedding 값이 점점 가까워지도록, Similarity가 잘 학습되도록 하는 learning입니다. 그래서 positive pair가 가까워지도록 학습하고 다른 것들은 멀어지게 학습할 수 있도록 loss function이 주어지게 됩니다. 그렇기 때문에 positive instance가 굉장히 중요합니다. 왜냐하면 NLP에서 positive instance는 semanti-cally related가 되어 있어야 되는데 그런 부분을 이미지와는 다르게 augmentation도 어렵기 때문에 NLP에서 positive pair를 잘 정해주는 것이 중요합니다.
이렇게 representation 된 Embedding값들이 잘 되었는지 확인하는 정량적 지표 두 가지가 있습니다. 하나는 Alignment라는 positive pair의 거리가 점점 작아질 수 있도록 학습하고 Uniformity는 랜덤 한 두 개의 Embedding을 뽑았을 때 이 해당 거리가 점점 멀어지도록 Uniformity 하게 분포할 수 있도록해주는 loss입니다. 마이너스 값이 붙어 있어서 loss 또한 작아지도록 학습되는 것이 목표입니다.
해당 논문은 Contrastive Sentence Embedding에 대한 framework를 제안하고 있고 unsupervised와 supervised에 두 가지의 방법론을 제공하고 있습니다. 그리고 이렇게 학습된 representation이 Alignment와 uniformity가 어떻게 학습되었는지 분석하고 있습니다.
Unsupervised SimCSE는 하나의 문장을 encoder에 넣었을 때 나온 히든 representation을 positive pair로 보겠다는 방법입니다. 그냥 쓰게 되면 동일한 representation이 되기 때문에 encoder 안에 random mask Dropout을 통해 minimal 한 Augmentation을 주어 똑같은 문장을 넣었지만 다르게 나온 히든 representation를 positive pair로 구성하고 있습니다.
Supervised SimCSE 같은 경우에는 NLI 데이터셋을 활용하였습니다. 하나의 전제가 주어졌을 때 하나의 가설이 참 이면 entailment 그리고 거짓이면 contradiction이라는 label을 갖고 있는 데이터셋입니다. 그렇기 때문에 전제 값과 entailment label을 갖고 있는 문장은 semanti-cally related 되어 있기 때문에 positive pair로 볼 수 있습니다.
SimCSE를 설명드리겠습니다. 첫 번째로는 Unsupervised SimCSE입니다. Unsupervised SimCSE Dropout 노이즈를 통해 Augmentation을 하는 기법입니다. 이 Dropout을 통해서 동일한 문장을 넣어도 다른 히든 representation를 통해 가까워지도록 학습하는 방법입니다.
그래서 데이터 Augmentation 측면에서 보시면 SimCSE가 STS task에서 제일 좋은 점수를 받고 있습니다. 또한 training objective 측면에서 보았을 때도 다른 objective들 보다 좋은 성능을 내고 있었고 기존의 representation 학습을 위해서 듀얼 encoder가 자주 사용되었던 반면에 해당 SimCSE는 하나의 encoder로도 좋은 학습을 할 수 있다고 얘기하고 있습니다.
사실 Dropout을 준 positive pair가 Contrastive learning에 도움을 주는지에 대한 의문을 가질 수 있습니다. 왜냐하면 positive pair가 아니고 negative pair가 잘 주어진 경우에도 Contrastive learning이 잘 되고 있는데 하나의 문장을 동일하게 넣어서 준 positive pair가 과연 도움이 될까라고 생각할 수 있습니다.
그래서 해당 저자는 여러 가지 실험을 했습니다. Dropout을 0퍼센트만 주었을 때, 히든 스테이트에서 같은 Embedding이 되었을 때 성능이 학습되는 것을 보시면 Uniformity에서는 작아지도록 학습되고 있지만 Alignment가 굉장히 좋지 않은 방향으로 올라가고 있는 것을 알 수 있습니다.
그리고 0.1 Dropout을 줬을 때는 달라지지 않을까 라는 생각에 fix 된 랜덤 마스크 Dropout을 하지 않고 0.1 퍼센트의 Dropout을 했을 때 학습되는 것을 보시면 마찬가지로 uniformity에는 좋은 방향으로 학습되지만 Alignment는 좋지 않은 방향으로 학습되는 것을 볼 수 있습니다. 따라서 랜덤 하게 주어진 Dropout들이 굉장히 좋은 Augmentation으로 작동이 되고 있다는 것을 보여주고 있습니다.
Supervised SimCSE입니다. NLI라는 데이터셋을 활용하고 있습니다. 이 하나의 전제가 주어졌을 때 그에 따른 가정이 T면 Entailment, 알 수 없으면 neutral 그리고 가정이 틀리다면 contradiction이라는 label값을 주고 있습니다.
supervised SimCSE에서는 contradiction label을 가진 쌍의 문장을 hard negative pair로 주어진 세 가지의 텀을 갖고 있는 loss function을 활용하고 있습니다. 그래서 label 된 데이터들을 어떻게 활용할 것이냐를 선택을 해야 되는데 여러 가지 데이터셋에 해본 결과 SNLI와 MNLI의 Entailment값을 활용한 것이 좋은 성능을 보이고 있다는 것을 알 수 있습니다. 또한 hard negative pair가 주어졌을 때 더 좋게 학습이 된다는 것을 알 수 있습니다.
해당 저자는 SNLI와 MNLI가 annotation quality가 굉장히 높고 Entailment와 Contradiction label이 잘 define 되어 있기 때문에 이렇게 성능이 좋아졌고 따라서 이 데이터셋을 활용하고자 한다고 얘기하고 있습니다.
네 번째로 Connection to Anisotropy입니다. 해당 저자가 주어진 loss function을 보았을 때 이러한 loss function이 이론에 의해서 upper bound를 줄 수 있다고 얘기하고 있고 이러한 upper bound가 주어졌을 때 Anisotropy 하게 학습되는 것을 해결할 수 있다고 수식적으로 증명하였습니다.
실험으로 넘어가 보겠습니다. downstream task는 STS를 선정하였고 IS BERT와 CT BERT도 Contrastive learning을 활용한 기법들보다 훨씬 좋은 성능을 보여주고 있음을 알 수 있습니다. 마찬가지로 supervised 모델에서도 SimCSE가 좋은 결과를 보여주고 있습니다.
Ablation studies에서 Pooler method의 영향을 받지 않음을 보여주고 있습니다. 기존에 있던 BERT에서 Pooler method에 따라 굉장히 성능이 좌지우지되었는데 SimCSE는 많은 영향을 받지 않는다라고 얘기하고 있습니다. 따라서 unsupervised 학습할 때는 MLP와 CLS 토큰을 활용하고, supervised에서는 학습과 평가 모두에 MLP와 CLS 토큰을 활용하고 있습니다.
hard negative는 positive pair 그리고 neutral과 contradiction이 각각 텀으로 주어지게 됩니다. 이 hard negative pair의 알파 값을 주었을 때, 0.5, 1.0, 2.0을 주었을 때 1.0과 2.0에서 좋은 성능을 보였고 따라서 1.0을 활용하고 있다고 얘기하고 있습니다.
그리고 contradiction과 neutral을 hard negative로 활용했을 때는 contradiction label만 활용했을 때 더 좋은 성능을 보이고 hard negative pair를 활용하지 않았을 때 보다도 활용을 했을 때 더 좋은 성능 향상을 보였다고 얘기하고 있습니다.
SBERT와 supervised SimCSE를 비교해봤습니다. 문장 query를 살펴보고 답변들을 살펴봤을 때 SimCSE가 조금 더 문맥적으로 잘 이해하고 있구나라고 생각할 수 있습니다. 그래서 Alignment와 Uniformity를 살펴보기 위해서 여러 가지 모델들의 representation 된 값들을 비교해 보고 있습니다.
검은색 쪽으로 어두워질수록 좋은 성능을 나타냅니다. 좋은 성능을 보여주고 있는 모델들이 uniformity도 작고 Alignment도 작은 모습을 볼 수 있습니다. 여기 주어진 4 가지의 모델들은 BERT에서 BERT의 Anisotropy 한 representation 학습들을 해결하고자 한 4 가지의 모델들입니다.
4 가지의 모델들이 Uniformity적으로는 굉장히 좋은 성능을 보여주고 있지만 Alignment가 좋지 않게 굉장히 높은 모습을 볼 수 있습니다. 그리고 SimCSE는 제일 좋은 포지션과 제일 좋은 성능을 보여주고 있음을 알 수 있습니다.
결론입니다. 해당 논문은 Simple contrastive learning framework를 제안하였으며 심플한 framework를 통해 high quality sentence representation을 생성하고 있다고 얘기하고 있습니다. Unsupervised와 supervised 두 가지 방법을 제안하였고 downstream task에 성능 향상만을 보여준 것이 아니고 Alignment와 Uniformity에서 분석했다는 점이 이 논문의 좋은 점이라고 생각했습니다.
댓글