Ying-Jia Lin

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

論文資訊

  • 會議: EMNLP 2019 (論文連結)(code連結)
  • 作者單位: UKPLab
  • 主要任務: semantic textual similarity (STS)

快速重點

  • 這是一個 sentence embeddings 的工作
  • 提出 SBERT 和 SRoBERTa
    • 基於 siamese 和 triplet loss 架構
  • 在 NLI 資料集上進行 fine-tuning,表現比 InferSent、Universal Sentence Encoder 還要好
  • 在 STS 資料集上贏過 InferSent 11.7 分、贏過 Universal Sentence Encoder 5.5 分
  • 在 SentEval 的兩個任務上得到 2.1 和 2.6 分的提升

背景

BERT

  • 將兩個句子以SEP合起來當成1個句子
  • 在 inference 時會很沒有效率
    • inference 時是要找到最佳的配對組合
    • 假設有10,000個句子,BERT 就要做 n*(n-1)/2 次,共 49,995,000 次
      • 10,000個句子只會找本身以外的10,000-1個句子
      • 因為是找成對句子,所以總次數除以2
    • 以 V100 來做運算的話需要花費 65 小時

方法

模型

  • 對 BERT/ RoBERTa 的輸出使用池化 (pooling) 的方法進行處理: (1) 取 CLS token (2) 取 MEAN (3) 取 MAX 來得到固定大小 (fixed sized) 的句向量
  • 本論文預設使用 ==MEAN== 作為 pooling 方法

分類任務的最佳化方式

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

    • 其中:
      • $u$ 和 $v$ 分別是不同句子的句向量
      • $|u-v|$ 是兩個句向量的差 (element-wise difference)
      • $W_t \in \mathbb{R}^{3n\times k}$
        • $n$ 是句向量的維度
        • $k$ 是 label 的數目
  • 如下圖 1 所示

迴歸任務的最佳化方式

  • 先計算相似度
    • $\textrm{cos_similarity}(s_u, s_v)$
  • 再 minimize mean-squared error
  • 如下圖 2 所示

Triplet 任務的最佳化方式

  • 針對 Wikipedia section triplets dataset (Dor et al., 2018).
  • Minimize
    • $\textrm{max}(||s_a-s_p||-||s_a-s_n||+\epsilon, 0)$
    • $s_a$: an anchor sentence
    • $s_p$: a positive sentence
    • $s_n$: a negative sentence
    • $||\cdot||$: Euclidean distance
    • 目標是要最小化 $a$ 和 $p$ 的距離,並使 $a$ 和 $n$ 的距離最大化
    • $\epsilon$: 用來確保最佳化之後 $a$ 和 $p$ 的距離至少會比 $a$ 和 $n$ 的距離少一個 $\epsilon$

SBERT 的訓練

  • 使用 SNLI 和 MNLI 進行三分類任務的 fine-tuning
    • 權重初始化
      • SBERT: 使用 pre-trained BERT
      • RoBERTa: 使用 pre-trained RoBERTa
  • 訓練時間: ==1 個 epoch==
  • batch size 16
  • Adam optimizer
  • learning rate 2e-5
  • 使用 10% 的 training data 進行 linear learning rate warmup

實驗結果

STS-B

  • 根據 Table 2,可以發現在沒有經過 fine-tuning 的情況下,SBERT-NLI 比 BERT embeddings 表現更好,也勝過先前的 sentence embeddings