句子嵌入 是什麼?
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。關鍵創新是:
- 用孿生神經網路(Siamese Network)架構。
- 對每個句子用 BERT 編碼。
- 用池化層(通常取 [CLS])得到句向量。
- 用對比損失(如 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 的句向量是高度非線性的組合,難以直觀解釋每個維度代表什麼語義。