본문 바로가기
Paper review

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks(2019) 리뷰

by Yonghip 2025. 1. 19.

RAG 서비스의 가장 근간이 되는 기술은 embedding 기술 그중 Sentence Transformers 라이브러리는 embedding에서 대체제가 없는 라이브러리라고 느껴졌고 자연스레 관심이 생겨 리뷰해보려 한다.

Abstract&Introduction

두 개 이상의 sentence pair를 regression하는 Semantic textual similarity(STS)와 같은 task에서는 대게 BERT base model들이었다.

 

하지만 이 model 들은 10000개의 sentence 비교를 위해 약 5000만 번의 필요했다.(모든 pair 간의 연산이므로 n(n+1)/2 약 O(n^2)번)

 

저자가 제안하는 SBERT 기존 BERT base model 65시간 걸리는 계산을 5초 이내에 수행 가능하다.

cross encoder & bi encoder

BERT architecture " https://arxiv.org/abs/1810.04805 "

Cross-encoder BERT에서 사용하는 두 개의 문장을 동시에 입력하여 두 문장의 관계를 예측하는 구조를 의미한다. 언급했다시피 이러한 구조는 n개의 문장과 한 문장 사이의 관계를 측정하는 STS와 같은 task에서 많은 시간을 요구한다

 

좌측: SBERT architecture, 우측: BERT architecture

그림에서 보면 알 수 있듯 BERT는 두 문장을 한 번에 넣어 embedding을 생성하지만 SBERT embedding을 구한 다음 계산한다. 이 논문에서 정의하지는 않지만 이렇듯 두 개의 embedding을 각각 생성하고 이를 사용하는 구조를 bi-encoder라고 한다.

Related works

BERT network의 큰 단점 중 하나는 sentence 각각을 independence하게 처리하지 못한다는 점이다. 최근 RAG에서 SBERT가 사용되는 이유는 각각의 sentence embedding으로 만들고 vector DB에 미리 저장한 다음 이를 통한 효율적 검색이 가능하기 때문인데 cross encoder 구조 모델은 이러한 시나리오에 적용하는 것 자체가 불가능하다.

Model

SBERT architecture는 위와 같으며 데이터에 따라 다른 training obejective를 사용한다.

 

Classification Objective Function

n sentence embedding dimension, klabel의 수이다.

Regression Objective Function  

오른쪽의 그림 2와 같이 두 개의 embedding간의 cosine similarity를 최소화하는걸 목표로 한다.

Triplet Objective Function

anchor, positive, negative sentence가 있을 때 사용한다.

Training Details

훈련에는 SNLP, Multi-Genre NLI를 사용했다. contradiction, entailment, neutral로 라벨링 되어 있으며 이를 3-wat softmax classifer objective function으로 사용해 훈련하였다.

세부적인 training recipe는 아래와 같다.

We used a batch-size of 16, Adam optimizer with learning rate 2e−5, and a linear learning rate warm-up over 10% of the training data. Our default pooling strategy is MEAN

Evaluation - Semantic Textual Similarity

Unsupervised STS

기존에 자주 사용되는 BERT base model 보다는 전반적으로 좋은 성능을 보여준다.

Supervised STS

Supervised에서는 STS dataset으로만 finetune했을때는 BERT와 SBERT가 유사하고 NLI로 학습 후 STS로 추가학습 했을 때 BERT의 상승 폭이 높은 점을 확인할 수 있다.


논문 초반부에서 65시간에서 5초로 단축했다는 말을 보면서 정말 어이가 없었지만 실제로 연산량 자체가 O(n^2)->O(n)으로 감소했다는 것을 알 수 있었다.

 

또한 이러한 임베딩을 사전에 계산하고 서비스하면 embedding에 걸리는 시간은 user 단에서 삭제시킬 수 있음과 동시에 ANN 알고리즘들 역시 바로 적용가능하므로  많은 문서를 임베딩하고 검색해야 하는 RAG 시나리오에 적합할 수밖에 없다고 생각했다.

 

ResNet, Transformer와 같이 유명한 논문들은 기존 문제에 대해 시간, 성능 두 마리 토끼를 모두를 잡으며 새로운 지평을 열었는데 이 논문도 읽으면서 딱 그 생각이 들었던 것 같다.

 

SBERT 논문 링크: https://arxiv.org/abs/1908.10084

BERT 논문 링크: https://arxiv.org/abs/1810.04805