句子嵌入 是什麼?

Sentence Embedding:句子嵌入 的完整解釋

將整個句子編碼為固定維度的向量,使語義相似的句子在向量空間中距離較近。

句子嵌入(Sentence Embedding)是從單詞到文件級表示的承接環節,在現代 NLP 系統中扮演關鍵角色。不同於詞向量的相對成熟,句子表示仍是活躍的研究領域,因為它涉及更複雜的組合語義問題。

核心挑戰與問題設置

句子嵌入面臨一個根本挑戰:如何將任意長度的詞序列映射到固定維度的向量,同時保留語義信息?這涉及「組合語義」(Compositional Semantics)問題:句子的意思不只是詞義的簡單相加,還取決於詞序、句法結構、語境等多個因素。例如:

  • 「貓追老鼠」與「老鼠追貓」詞彙相同但語義完全不同。
  • 「非常好」不能簡單理解為「非常」+ 「好」的向量和。
  • 轉喻、比喻等修辭手法要求深層理解。

簡單聚合方法

最直白的方法是對句子中所有詞向量進行簡單聚合:

平均池化(Mean Pooling)

句向量 = (1/n) Σ 詞向量_i

優點:簡單快速,對某些任務(如文本分類)意外有效。缺點:完全忽視詞序,「貓追老鼠」和「老鼠追貓」的向量相同。儘管這個缺點嚴重,平均池化因其簡潔性在工業界仍廣泛使用。

TF-IDF 加權平均

句向量 = Σ (TF-IDF_i × 詞向量_i) / Σ TF-IDF_i

賦予罕見詞更高權重,常見詞(如「的」、「是」)權重低。效果略優於簡單平均,但仍然無視詞序。

遞迴神經網路方法

樹結構 LSTM(Tree-LSTM)

Socher 等提出用語法樹驅動 LSTM,節點表示由其子節點的 LSTM 隱狀態組成。例如在句子「非常好」中,構建樹:

      好
     / \
   非常  [詞本身]

樹 LSTM 首先處理葉節點(詞),再遞迴向上,最終根節點的隱狀態就是句向量。這個方法優美地將句法結構與神經網路相結合,性能優於簡單序列模型。缺點是依賴準確的句法樹,且計算略複雜。

序列模型:BiLSTM 與 CNN

雙向 LSTM(BiLSTM)

正向 LSTM 從左到右掃描,反向 LSTM 從右到左掃描,兩者的最後隱狀態拼接或平均作為句向量。BiLSTM 能捕捉詞序,對某些任務有帶改進。

卷積神經網路(CNN)

Kim 提出用 CNN 進行句子分類:對詞向量序列應用多個寬度的滑動窗口(如寬度 3、4、5),每個窗口位置產生一個特徵,然後對所有位置的特徵進行最大池化,得到固定維度的句表示。CNN 的優勢是計算快、能捕捉 n-gram 特徵,但無法直接捕捉遠距離依賴。

注意機制與自注意

注意池化(Attention Pooling)

不同詞對句義的貢獻程度不同。動詞、形容詞、重要名詞通常更重要,虛詞(「的」、「和」)貢獻小。注意機制學習每個詞的權重:

句向量 = Σ (α_i × 詞向量_i)

其中 α_i 是詞 i 的注意權重,由詞本身或詞與某個查詢向量的相似度決定。

自注意(Self-Attention)與 Transformer

Transformer 引入「自注意」,讓每個詞位置學習與序列中其他位置的相關性。多層自注意堆疊,使高層節點能看到全局信息。Transformer 的最後一層輸出通過池化(如取 [CLS] token 或對所有位置平均)得到句向量。

大型語言模型預訓練

BERT 與上下文化句向量

BERT 對句子進行編碼,産生每個詞的上下文化向量。常見的做法是取 [CLS] token 的最後層隱狀態作為句向量,或對所有詞向量進行平均。BERT 的句向量質量遠優於之前方法,因為預訓練讓 BERT 學到豐富的語言知識。

句子-BERT(Sentence-BERT / SBERT)

2019 年,Reimers 和 Gurevych 提出 Sentence-BERT,直接針對句相似度任務微調 BERT。關鍵創新是:

  1. 用孿生神經網路(Siamese Network)架構。
  2. 對每個句子用 BERT 編碼。
  3. 用池化層(通常取 [CLS])得到句向量。
  4. 用對比損失(如 CosineSimilarityLoss)訓練,使相似句子距離近、不同句子距離遠。

Sentence-BERT 的性能比純 BERT 的句向量高 3–5%,成為目前最廣泛使用的句嵌入方法。

句向量的性質與應用

語義相似度與轉移性

高質量的句向量應滿足:

  • 相似句子(如同義表達)向量距離近。
  • 不同句子向量距離遠。
  • 語義轉移性:向量空間保留邏輯推理(如 A 蘊含 B,vec(A) 應更接近 vec(B))。

Sentence-BERT 在公開基準(STS Benchmark,語義文本相似度)上達到 0.86–0.89 的相關係數,接近人工評估的上界(0.90)。

應用場景

  • 語義搜尋:給定查詢句子,在文件庫中找最相似的句子(快速、準確)。
  • 聚類:對句子進行向量化後用 K-means 等算法聚類,發現語義相近的句子組。
  • 重複檢測:發現重複或高度相似的句子(如去重、檢測抄襲)。
  • 推薦系統:基於用戶查詢或歷史句子,推薦相似內容。
  • 信息檢索:構建密集檢索(Dense Retrieval)系統,相比稀疏向量(TF-IDF)更精準。
  • 檢測相似問題:在FAQ系統中,判斷用戶新問題是否與既有問題相似。

挑戰與限制

句長變化影響

現有方法對各長度句子的向量規範化不一致:長句子往往對句向量主導,短句子被邊際化。

跨語言句嵌入

不同語言句子的向量空間往往不對齐,需要跨語言預訓練(如多語言 BERT)來同步不同語言的語義空間。

低資源語言與域特異

Sentence-BERT 預訓練數據主要是英文通用文本,遷移到低資源語言或專業域時性能下降。解決方案包括輕量微調或在域內數據上重新訓練。

可解釋性缺失

Transformer 的句向量是高度非線性的組合,難以直觀解釋每個維度代表什麼語義。

常見問題