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 |