본문 바로가기

Paper Review

Paper Review #21 - Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks - (2019.08.27)
https://arxiv.org/abs/1908.10084
 

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

BERT (Devlin et al., 2018) and RoBERTa (Liu et al., 2019) has set a new state-of-the-art performance on sentence-pair regression tasks like semantic textual similarity (STS). However, it requires that both sentences are fed into the network, which causes a

arxiv.org

 

Research direction & Motivation


Main Purpose

Derive semantically meaningful sentence embedding

 

 BERT, RoBERTa 모델은 STS task에서 좋은 성적을 거두었으나 연산에 있어서는 지나치게 비용이 큰 단점이 있다. BERT의 경우 cross-encoder의 구조를 사용하기 때문에 유사도와 같은 문장 pair에 대한 연산을 위해서는 n(n-1)/2에 해당하는 연산량이 필요하다. 이는 굉장히 비효율적이며 방법론적인 측면에서도 일반적으로 사용되는 BERT의 output layer의 평균을 취하거나, [CLS] 토큰을 이용하는 방법은 GloVe embedding을 이용했을때보다도 성능이 낮은 경우가 많다. 따라서 논문에서는 이러한 계산적인 비용과 함께 성능을 개선하고자 Sentence-BERT(SBERT)를 제안했다. SBERT는 siamese 구조로 cosine-similarity나 Manhatten, Euclidean distance를 사용해 semantic similarity에 효율적이며 clustering의 방법도 적용이 가능하다.

 

 

Model


 

 SBERT는 siamese network의 구조로 사전학습된 BERT 또는 RoBERTa에 고정된 vector를 출력하도록 하는 pooling operation을 추가한 형태다. 두 개의 input을 동시에 받아, 동일한 parameter를 갖는 BERT를 거쳐 pooling layer를 통해 각각의 fixed size sentence embedding에 해당하는 u, v를 반환한다. 해당 vector들을 이용해 objective function을 적용하면 classification, regression과 같은 다양한 task에 접목이 가능하다.

 

 언급한 pooling operation은 다양한 종류를 활용할 수있다. 논문에서는 [CLS] 토큰, output vector의 mean, max를 활용하는 방법들을 제시했는데 일반적으로는 mean을 사용했다. 

 

 다음으로 objective function으로 classification, regression, triplet 을 제시했다. 

 

 

 첫번째로 cross entropy loss로 활용할 수 있는 classification objective function은 u, v와 이들의 element-wise differejnce인 |u-v|에 weight을 곱한 형태를 concat하여 softmax function으로 연결한다. 

 

 

두번째로 regression은 u, v간의 consine similarity를 측정하며, mean-squared-error를 loss function으로 정의한다.

 

 

마지막으로 triplet은 기준이 되는 sentence인 anchor와 positive(p), negative(n) sentence 중 a와 p의 거리가 a와 n의 거리보다 가까워지도록 학습한다.

 

 

Experiments - Semantic Textual Similarity


 저자들은 실험을 위해 SBERT를 SNLI+MultiNLI dataset에 classification objective function을 이용해 fine tuning했다. 또한 기본 pooling strategy는 mean을 사용했다.

 

 Semantic Textual Similarity task는 문장간의 유사도를 측정해 유사도 값을 반환하는 regression problem으로 cosine-similarity를 사용한다. 예측된 유사도의 평가지표는 spearman correlation을 사용했으며 목적데이터를 학습하지 않은 경우(비지도학습)와 학습한 경우(지도학습)으로 나누어 실험을 진행했다.

 

 

Unsupervised STS

 

 

 먼저 비지도학습의 경우 STS 2012-2016, STS benchmark, SICK-Relatedness dataset을 사용했으며 이들은 문장 pair에 대해 유사도에 따라 0부터 5까지의 label을 가진다. 앞서 언급했던 BERT, GloVe embedding과 함께 InferSent, Universal Sentence Encoder를 사용한 결과를 비교했다. 

 

 그 결과 SBERT, SRoBERTa가 SICK-R을 제외한 모든 task에서 sota를 달성했다. 반면 가장 널리 사용되는 BERT의 [CLS] 토큰을 이용한 경우는 가장 좋지않은 결과를 보였다. 특히 BERT는 GloVe embedding보다 더 떨어지는 성능을 보이고있다.

 

 

Supervised STS

 

 

 다음으로 STSb를 train, validation, test set으로 나누어 지도학습을 시행했다. SBERT는 regression objective function을 이용해 10가지의 seed에 대해 fine tuning을 진행했다. 이때 STS에 대해 학습하지 않은 경우, STSb만을 사용한 경우와 NLI도 사용한 경우 총 3가지에 대한 결과를 같이 제시했다.

 

 STS에 대해 학습하지 않은 경우에는 SBERT가 가장 좋은 결과를 보였으나, 이후 두 가지에서는 BERT가 약간 더 높은 성능을 보여주었다. 또한 SBERT와 SRoBERTa의 차이는 매우 미세한 수준인 것을 확인 할 수 있다. 

 

 

Argument Facet Similarity

 

 AFS는 약 6,000개의 3가지 topic에 대한 문장 pair로 구성된다. 0부터 5까지 label값을 가지며, 0에 가까울수록 서로 다른 주제임을 의미한다. STS와는 다르게 의미적인 유사성을 예측하는 것이 아니라, 주제에 대한 유사성을 내포하고있는 dataset으로 어휘적인 면에서 차이가 있어 난이도가 높다고 알려져있다.

 

 

 모델은 두가지 학습 방식을 사용했다. 10-fold CV와 cross-topic evaluation이다. 10-fold CV는 서로 다른 topic에 대해 얼마나 잘 generalize되는지 파악이 어렵기 때문에, cross-topic의 방법을 사용했다. 이 방법은 세가지 주제 중 두 주제가 학습에 사용되고, 남은 한가지 주제에 대해 평가하는 방식이다. 이와 같은 방식으로 모든 주제에 대해 시행한뒤 metric을 평균하여 보여주었다.

 

 10-fold CV의 경우, BERT와 SBERT는 비슷한 수준을 보여준다. 하지만 cross-topic의 경우 SBERT는 현저하게 성능이 저하되었다. BERT는 pair문장을 구분하기 위해 attention을 사용하는 반면, SBERT는 각각의 문장을 알지 못하는 topic으로 부터 vector space에 mapping 해야하기 때문에 더 어려운 문제라고 보여진다.

 

 

Wikipedia Section Distinction

 

 

 앞선 두가지 task와 다르게 해당 task에서는 triplet objective function을 사용한다. 같은 section으로부터 나온 anchor, positive example이 negative example보다 anchor에 가까운 경우는 1, 아닌 경우는 0으로 구분되는 classification에 해당해 metric은 accuracy이다. SBERT가 BILSTM, skip-thoughts 보다 월등히 우수한 것을 볼 수 있다.

 

 

SentEval

 

 부가적으로 논문에서는 7개의 classification task를 갖는 SentEval에 대해서도 성능을 측정했다. SentEval은 주로 다양한 task에 대해 모델이 가진 sentence embedding의 질을 평가할때 사용된다. 모델이 갖는 sentence embedding이 logistic regression classifier에 feature로써 사용되며 마찬가지로 10-fold cv를 통해 test set에 대해 에측한다.

 

 

 물론 이러한 전이학습의 방식이 SBERT sentence embedding의 목적에는 부합하지 않지만, 결과적으로 sota나 그에 준하는 성능을 달성했다. 즉, SBERT의 sentence embedding이 여러가지 정보들을 잘 capture하여 semantic feature를 보존하고 있다고 할 수 있다.

 

 

 마지막으로 Ablation Study에서는 pooling strategy와 concatenation method에 변화를 주며 가장 효과적인 경우를 찾고자했다. Classification task에서는 NLI, regression task에서는 STSb dataset을 사용했다. 

 

 

 가장 좋은 pooling strategy는 MEAN이며, concatenation은 (u, v, |u-v|)인 경우이다. 특히 concatentation에서 가장 중요하게 작용하는 요소는 element wise difference인 |u-v|의 존재 여부이다. 해당 요소는 두 문장에 대한 차이를 거리적으로 측정하기 때문에 유사한 pair는 가깝게, 그렇지 않은 pair는 멀다는 정보를 내포하고 있어 중요한 역할을 한다.

 

 

Conclusion



 기존에 대부분의 task에서는 주로 BERT가 주축이였다. 하지만 BERT의 cross encoder 방식은 similarity를 측정함에 있어서 적합한 방법이 아니며, STS에는 기본적인 GloVe embedding을 사용한 것보다 낮은 성능을 보여주기도 한다.

 

 이를 극복한 SBERT는 sentence embedding의 측면에서 좋은 representation을 갖고있다는 것을 입증했다. 동시에 연산적인 측면에서도 매우 효율적이다. InferSent나 Universal Sentence Encoder 보다도 매우 우수한 속도를 갖고있으며 이는 GPU 환경에서 극대화된다. 또한 기존의 BERT로는 수행이 어려운 clustering과 같은 task를 매우 효율적으로 수행할 수 있다는 장점을 가진다.