728x90

Abstract

기존에 BERT, RoBERTa가semantic textual similarity 같은 sentence-pair regression 문제에 가장 좋은 성능을 보였음 (BERT로 10,000 개 문장의 가장 비슷한 쌍을 찾는데 65시간 소요)
Sentence-BERT(SBERT)는 siamese & triplet network 구조로 이루어지고, 코사인 유사도를 활용하는 Pretrained BERT의 수정형임
BERT로 65시간 소요되는 것을 SBERT로는 5초에 수행 가능함

Model

SBERT는 문장 임베딩을 고정 사이즈로 만들기 위해 BERT의 output에 pooling layer를 추가함

Pooling 전략

  1. CLS-token을 사용
  2. MEAN-strategy: output-vector의 평균 (default)
  3. MAX-strategy: output-vector의 max-over-time

#️⃣ Classification Objective Function (Figure 1)

$$o = softmax(W_t(u, v, |u − v|))$$

  1. u(문장1의 임베딩), v(문장2의 임베딩), |u-v| (둘의 차이벡터) 3가지를 concatenate
  2. 학습가능한 Wt weight에 곱하기
  3. softmax 함수 통과

$Wt ∈ R^{3n×k}$ :

  • 분류할 클래스의 개수가 k개
  • Matrix $W_y$는 $3n \times k$ 사이즈

cross-entropy loss 사용

#️⃣ Regression Objective Function (Figure 2)

u와 v의 cosine-similarity 연산
mean-squared-error loss 사용

#️⃣ Triplet Objective Function

sentence pair

  1. anchor sentence a (기준점)
  2. positive sentence p
  3. negative sentence n

기준 문장과 긍정문장, 부정문장의 거리를 튜닝해서 기준문장이 긍정문장과는 가깝고 부정문장과는 멀게 위치하도록함

$$max(||s_a − s_p|| − ||s_a − s_n|| + ε, 0)$$

  • || . || 는 거리 연산
  • epsilon은 margin으로 긍정문장이 최소한 epsilon 이상 부정문장보다 가깝게 하는 역할
  • 논문의 실험에서 거리는 euclidean distance, epsilon은 1로 설정하였음

#️⃣ Training Details

  • SNLI: 570,000 문장 쌍이 entailment, contradiction, neutral인지 라벨링된 데이터셋
  • Multi-Genre NLI: 430,000 문장 쌍의 spoken & written 으로 구성
  • 위 데이터셋으로 학습
  • 1에폭으로 3-way softmax-classifier objective function으로 파인튜닝
  • batch-size 16, optimizer adam (learning rate 2e-5), linear learning rate warm-up 10%, pooling mean

Experiments

#️⃣ Semantic Textual Similarity

Spearman’s rank correlation (문장 임베딩과 gold label과의 cosine-similarity)

  • Averaging BERT embeddings는 54.81의 average correlation 달성 (bad)
  • CLStoken은 29.19의 average correlation 달성 (bad)
  • GloVe 임베딩의 average correlation 61.32보다 낮음
  • Universal Sentence Encoder : 71.22

  • Siamese network structure는 대체로 correlation을 개선 (InferSent 68.03, Universal Sentence Encoder 74.92)
  • 학습: Only training on STSb, and first training on NLI, then training on STSb
  • NLI로 학습 후 STSb로 학습시킨 방식이 1-2 점 더 나은 성능 (85.02 > 86.15)

#️⃣ Argument Facet Similarity

Argument Facet Similarity (AFS) corpus

  • gun control, gay marriage, death penalty에 관련된 소셜미디어 대화 6,000 개의 sentential argument 쌍
  • 0 (완전 다름) - 5 (완전 동일)로 라벨링
  • tf-idf, average GloVe, InferSent는 낮은 성능
  • 10-fold cross-validation: BERT(76.38)와 SentenceBERT(75.93) 비슷한 수준
  • cross-topic evaluation: SBERT(53.10)가 BERT(60.34)대비 7점 뒤지는 수준

BERT는 word-by-word 비교로 두 문장을 직접 비교하는데 attention을 사용
SBERT는 각 문장을 unseen topic으로부터 vector space로 비슷한 claim& 가까운 reason에 따라 mapping하기 때문에 성능이 좋지 않음

#️⃣ Wikipedia Sections Distinction

SBERT는 Dor et al.이 사용한 BiLSTM 아키텍처 기반의 triplet loss로 학습한 것 보다 높은 성능을 보임

#️⃣ SentEval

SentEval은 문장 임베딩을 평가하는 데이터셋 모음

SentEval의 전이학습 태스크

  • MR: Sentiment prediction for movie reviews snippets on a five start scale (Pang and Lee, 2005).
  • CR: Sentiment prediction of customer product reviews (Hu and Liu, 2004).
  • SUBJ: Subjectivity prediction of sentences from movie reviews and plot summaries (Pang and Lee, 2004).
  • MPQA: Phrase level opinion polarity classification from newswire (Wiebe et al., 2005).
  • SST: Stanford Sentiment Treebank with binary labels (Socher et al., 2013).
  • TREC: Fine grained question-type classification from TREC (Li and Roth, 2002).
  • MRPC: Microsoft Research Paraphrase Corpus from parallel news sources (Dolan et al., 2004).

  • SBERT의 문장 임베딩은 sentiment 작업에 성능 향상 (MR: 84.88, CR: 90.07, SST: 90.66)
  • TREC에서는 Universal Sentence Encoder 93.2로 더 좋은 성능을 보였는데, Universal Sentence Encoder가 질문-응답 데이터를 사용해 학습해서 유리한 것임
  • Average BERT, CLS 토큰은 Semantic Textual Similarity에서는 Glove 보다 낮은 성능을 보였지만 SentEval에서는 높은 성능을 보였음
    • Semantic Textual Similarity에서는 코사인 유사도를 사용해서 모든 차원이 동일하게 평가되지만
    • SentEval에서는 로지스틱 회귀 분류기를 사용해서 특정 차원이 더 큰 영향을 주게 평가되기 때문임
  • 결론은 avg BERT, CLS는 코사인/맨해튼 유클리디안 거리에는 적합하지 않음
  • 전이학습에는 InferSent나 Universal Sentence Encoder보다 성능이 낮지만, 샴 네트워크로 NLI데이터셋에 파인튜닝한다면 SentEval 툴킷에서 state-of-the-art 성능 달성 가능

#️⃣ Ablation Study

  • pooling (mean, max, cls) 테스트 결과로 MEAN이 제일 적절
  • 목적 함수 (classification, regression)
    • 분류: SNLI, Multi-NLI에 학습
    • 회귀: STS benchmark 데이터셋에 학습
  • concatenation 결과는 mean pooling 결과만 작성

분류 목적함수에서는 pooling이 작은 영향
concate 전략이 더 큰 영향
$|u - v|$ 가 가장 중요한 컴포넌트

회귀 목적함수에서는 pooling이 중요한 영향
max가 mean이나 cls token 보다 나쁨
InferSent의 BiLSTM-layer에서 MAX 풀링하는 것에 반대되는 결과

#️⃣ Computational Efficiency

smart batching strategy: 길이가 비슷한 문장끼리 같이 그룹핑해서 가장 긴문장에 맞춰 패딩해서 성능 향상

i7-5820k cpu @3.30GHz, Nvidia Tesla V100 GPU, CUDA 9.2 기준으로
기본: InferSent가 SBERTqhek 65% 빠름

  • InferSent는 BiLSTM 레이어 1개이지만 BERT는 트랜스포머 레이어 12개라서 느린것임
    변형: 스마트 배칭을 한다면 InferSent보다 9% 빠르게 할 수 있음
    스마트 배칭은 CPU에서 89%빨라지고, GPU에서 48% 빨라짐

(노트) 기존 CPU 서빙중이었다면 스마트배칭할 경우 속도 향상 될 것같음
average GloVe가 가장 빠름 (성능보다 속도가 중요한 임베딩이라면(?) 좋을듯)

ref
https://sh-tsang.medium.com/brief-review-sentence-bert-sentence-embeddings-using-siamese-bert-networks-afb473c2ff51

https://wikidocs.net/156176

반응형

'AI > Papers' 카테고리의 다른 글

Recommender Systems with Generative Retrieval - High-level Summary  (0) 2024.10.25