본문 바로가기
NLP

Sentence-BERT (2019) 논문 리뷰

by 아르카눔 2025. 4. 9.

Sentence-BERT 혹은 SBERT 모델이 나온 논문 이름은 Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks다. (링크)

 

저자는 Nils Reimers, Iryna Gurevych다. 

 

요즘은 document나 sentence embedding을 구할 때 API로 OpenAI의 embeddings를 많이 사용하겠지만, 예전에는 문장 레벨로 embedding을 도출할 때 많이 쓰던 알고리즘이 SBERT라서 공부했던 기억이 난다. 

 

Abstract

BERT과 RoBERTa는 sentence-pair regression tasks; semantic textual similarity (STS)와 같은 태스크에서 SOTA를 달성했다. 하지만 두 방법 모두 sentence pair의 두 문장 모두를 input으로 넣어야 하기 때문에 massive computational overhead가 필요하다. 10,000개의 문장이 있다면 50 M의 pair (쌍)이 필요하다. 따라서 이는 65시간까지 소모된다.

Sentence-BERT (SBERT)에서는 pre-trained BERT를 siamese 뭉 triplet network 구조를 사용해서 학습을 수행한다. 두 문장의 embeddings의 Cosine similarity를 계산한다. SBERT와 SRoBERTa를 통해서 SOTA를 달성함을 보인다.

 

3. Model  

문장의 embeddings는 다음의 세 가지 중에서 하나를 선택해서 사용한다. CLS-token, 모든 output vectores의 mean, 모든 output vectors 중에서 max를 사용한다. 이때 deault configuration은 MEAN이다. 

 

Classification Objective Function

본 논문에서는 두 문장의 embeddings인 $u$, $v$, $| u - v |$의 세 가지를 concat해서 사용한다.  

이때 $| u - v |$는 element-wise difference다.  

 

Trainable weight $W_t \in \mathbb{R^{3n \times k}}$다.  

이때 $n$은 sentence embeddings의 차원이고 $k$는 라벨의 수다.  

 

$o = \text{softmax}(W_t ( u, v, |u - v| ))$

 

 

 

Regression Objective Function

두 문장의 embeddings인 $u$, $v$의 cosine similarity의 mean squared loss를 최소화한다.

 

 

 

Triplet Objective Function

Anchor sentence가 $a$, positive sentence가 $p$, negative sentence가 $n$이라고 하자.  

이때, $s_x$는 문장 $x$에 대한 sentence embedding이다.  

triplet loss인 아래의 loss를 최소화 한다.

 

$ max( || s_a - s_p || - || s_a - s_n || + \epsilon, 0) $

 

Training Details

SNLI와 Multi-Genre NLI를 합친 데이터셋을 통해서 학습한다. SNLI는 570,000 문장 쌍이 있고 label은 contradiction, entailment, neutral이다. MultiNLI는 430,000 문장 쌍이 있고 spoken과 written 텍스트를 모두 커버한다. 

SBERT은 3-way softmax-classifier objective function을 epoch 마다 fine tuning한다. 

Batch size는 16, optimizer는 Adam, lr은 2e-5이며, warm-up은 전체 데이터의 10%다. 

기본 디폴트 pooling 전략은 MEAN이다.   

 

 

Evaluations

 

SBERT-NLI-large와 SRoBERTa-NLI-large가 대체로 성능이 좋다.

 

 

 

 

 

 

 

 

tf-idf, GloVe, fast-text 같은 전통적인 embeddings 방법과 BERT 등과 비교하면 SBERT가 성능이 대체로 좋음을 알 수 있다.

 

 

 

Table 6에서는 Concatenation과 Pooling 전략을 비교하는데 mean 그리고 elementwise difference의 concat이 가장 좋은 성능임을 알 수 있다.

 

'NLP' 카테고리의 다른 글

MQA (Multi-Query Attention) (2019) 논문 리뷰  (0) 2025.04.09
GPT 2 (2019) 논문 리뷰  (0) 2025.04.09
Instruct learning, fine tuning, and T5  (0) 2025.01.28
T5 (2019) 논문 리뷰  (0) 2024.11.08
RoBERTa (2019) 논문 리뷰  (0) 2024.11.07