Paper review/Natural Language Processing

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks (EMNLP'19)

언킴 2023. 11. 24. 16:03
반응형

Contents

     

     

     

    Abstract

    BERT, RoBERTa 등의 모델이 STS(Semantic Textual Similarity)과 같은 분야에서 우수한 성능을 발휘하고 있다. 그러나, 두 문장 자체가 전부다 임베딩에 들어가고 계산되어야 하기 때문에 Computational Overhead가 발생한다. 해당 문제를 해결하고자 Sentence-BERT (SBERT)를 제안한다. BERT를 사용하여 문장 간의 유사도를 계산하면 65 시간이 소요되는 것에 비해, SBERT를 사용하면 5초 만에 이를 가능하게 한다.

     

     

    Introduction

    Siamese과 Triplet Networks를 활용한 BERT 즉, Sentence-BERT를 통해 Large-Scale의 입력 데이터에서도 문장 간의 유사도 비교(Semantic Similarity), 클러스터링(Clustering), 정보 검색(Information Retrieval) 등을 가능케 했다. BERT의 구조는 두 문장 간의 유사도를 계산하기 위해서는 두 문장을 전체 입력으로 사용하여야 하기 때문에 n=10,000인 경우 n(n-1)/2 = 49,995,000 만큼의 연산이 필요하다 (Fully Attention 이기 때문에).  

     

    Clustering이나 Semantic Search와 같은 Task는 기본적으로 비슷한 문장은 비슷한 공간에 Mapping 하는 것이 목적이다. 초창기에는 BERT에서 출력되는 모든 값을 Average 하거나, [CLS] Special Token을 사용하는 형태로 접근하였다. 그러나, 이와 같은 방식은 GloVe 등의 임베딩 기법에 비해 성능이 오히려 안좋은 경우도 있다. 본 논문에서는 해당 문제를 해결하기 위해 SBERT를 제안하였다. 

     

     

    Model

    SBERT는 BERT/RoBERTa 구조에서 마지막에 Pooling Operation을 추가한 형태로 구성되어 있다. [CLS] Token, MEAN, MAX 등의 Pooling 작업을 수행하여 실험을 진행하였으며, 기본값은 MEAN으로 설정하였다. BERT/RoBERTa를 Fine-Tuning 하기 위해 아래와 같은 프로세스를 구성하였다.

    Classification Objective Function

    $|u-v|$는 서로 다른 Sentence Embedding $u$, $v$의 차이에 대한 것을 의미하고, $W_t \in \mathbb{R}^{3n\times k}$는 Weight Matrix를 의미한다. $u \in \mathbb{R}^n$, $v \in \mathbb{R}^n$, $|u-v| \in \mathbb{R}^n$를 연결하고, $(u, v, |u,v|) \in \mathbb{R}^{3n}$ 에 Weight Matrix를 행렬곱 한 후 Softmax로 구성된 Pooling Layer를 의미한다. 

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

     

     

    Regression Objective Function

    Regression Objective Function은 Figure 2와 같이, 실제 추론(Inference) 단계에서 Cosine Similarity를 계산하고, MSE(Mean-Squared-Error)를 목적함수로 사용한다.

     

    Triplet Objective Function

    Anchor Sentence $a$, Positive Sentence $p$, Negative Sentence $n$이 주어지면, Triplet Loss는 아래와 같은 식을 통해 Positive Sentence는 가깝게, Negative Sentence는 멀게 학습한다. 

    \[ \text{max} (||s_a - s_p|| - ||s_a - s_n|| + \epsilon, 0 ) \]

    본 논문에서는 $\epsilon=1$로 설정하여 학습을 진행했다. 

     

     

    Training Details

    SBERT는 SNLI 데이터셋과 Multi-Genre NLI 데이터로 학습했다. SNLI 데이터셋은 570,000개의 문장으로 구성되어 있고, Contradiction, Eintailment, Neutral의 라벨로 구성되어 있다. MultiNLI는 430,000개의 문장으로 구성되어 있고, 대화부터 글까지 다양한 장르에 대한 데이터를 포함하고 있다. 학습 시 파라미터는 아래와 같이 설정했다.

     

    Type Parameters
    Optimizer Adam
    Learning Rate 2e-5
    Batch Size 16
    Warm-up Step 10% of the training data
    Default Pooling Strategy MEAN

     

    Evaluation-Semantic Textual Similarity

    SBERT의 평가는 STS(Semantic Textual Similarity)로 진행했다. 첫 번째로는 STS 데이터를 학습하지 않고 실험을 진행하고, 두 번째로는 STS를 추가로 학습한 후 진행했다. 

     

    Unsupervised STS

    Unsupervised STS에서는 STS Benchmark, STS tasks 2012-2016, SICK-Relatedness 등의 데이터셋으로 평가하였으며, 해당 데이터는 0~5 점 값을 가지고 있다. 데이터 특성을 고려해서 Peareson Correlation 대신, Spearman's Rank Correlation을 사용하였다. (Table 1)

     

    Supervised STS

    STS benchmark (STSb) 데이터셋은 8,628 개의 Pair Sentence로 구성되어 있고, Captions, News, Forums 등의 카테고리로 구성되어 있다. 학습 결과는 총 10번 시행한 후 평균과 표준편차를 기재했다. (Table 2) 학습은 STS Benchmark 데이터셋만으로 학습한 경우와 NLI data + STS benchmark 데이터셋으로 학습한 결과를 나누어서 진행했다. 

     

     

    Argument Facet Similarity

    AFS(Argument Facet Similarity) 데이터는 6,000 Sentential Argument Pairs 로 구성되어 있고, Gun Control, Gay Marriage, Death Penalty 등의 주제로 구성되어 있다. 0 (Different Topic) ~ 5 (Completely Equivalent)로 같은 토픽인지를 맞추는 태스크다. 

     

    Wikipedia Sections Distinction

     

     

    SentEval

     

    Ablation Study

     

    Computational Efficiency

     

    Conclusion