Word Embeddings/zh
| Article | |
|---|---|
| Topic area | NLP |
| Difficulty | Intermediate |
| Prerequisites | Neural Networks |
詞嵌入(word embeddings)是詞的稠密、低維向量表示,其中語義相似的詞被映射到向量空間中相鄰的點。它們是現代自然語言處理(NLP)的基礎組件,用能夠捕捉含義、類比和句法關係的表示替代了稀疏的 one-hot 編碼。
分佈假說
詞嵌入建立在分佈假說之上,該假說由 J. R. Firth(1957)提出了著名的表述:"你可以通過一個詞的夥伴來認識這個詞。" 其核心思想是,出現在相似上下文中的詞往往具有相似的含義。例如,"狗"和"貓"經常出現在"寵物"、"皮毛"和"獸醫"等詞附近,因此它們應該具有相似的表示。
利用分佈信息的早期方法包括共現矩陣、點互信息(PMI)和潛在語義分析(LSA)。現代的詞嵌入方法直接使用神經網絡學習稠密向量。
One-hot 與稠密表示
One-hot 編碼
在包含 $ V $ 個詞的詞表中,第 $ i $ 個詞的 one-hot 向量是一個 $ V $ 維向量,在位置 $ i $ 處為 1,其他位置為 0。這種表示存在兩個關鍵缺陷:
- 維度 —— 向量維度極高(通常 $ V > 100{,}000 $)。
- 無相似性 —— 每對 one-hot 向量都等距:當 $ i \neq j $ 時 $ \mathbf{e}_i^\top \mathbf{e}_j = 0 $。"貓"與"狗"的距離與它和"民主"的距離相同。
稠密嵌入
詞嵌入將每個詞映射到一個 $ d $ 維的實值向量(通常 $ d = 100 $–$ 300 $):
- $ \mathbf{w}_i \in \mathbb{R}^d, \quad d \ll V $
相似的詞具有較高的餘弦相似度:
- $ \text{sim}(\mathbf{w}_a, \mathbf{w}_b) = \frac{\mathbf{w}_a \cdot \mathbf{w}_b}{\|\mathbf{w}_a\|\;\|\mathbf{w}_b\|} $
Word2Vec
Word2Vec(Mikolov 等,2013)引入了兩種高效的架構,用於從大規模語料庫中學習詞嵌入。
連續詞袋(CBOW)
CBOW 根據周圍的上下文詞預測目標詞。給定上下文詞窗口 $ \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c}\} $,模型最大化:
- $ P(w_t \mid w_{t-c}, \ldots, w_{t+c}) $
上下文詞向量被取平均後通過 softmax 層。CBOW 訓練速度更快,對高頻詞效果良好。
Skip-gram
Skip-gram 反轉了預測方向:給定一個目標詞,預測其周圍的上下文詞。對於每對 $ (w_t, w_{t+j}) $,其中 $ j \in [-c, c] \setminus \{0\} $,模型最大化:
- $ P(w_{t+j} \mid w_t) = \frac{\exp(\mathbf{v}'_{w_{t+j}}{}^\top \mathbf{v}_{w_t})}{\sum_{w=1}^{V}\exp(\mathbf{v}'_w{}^\top \mathbf{v}_{w_t})} $
其中 $ \mathbf{v}_w $ 和 $ \mathbf{v}'_w $ 分別是輸入和輸出嵌入向量。在整個詞表上計算完整的 softmax 代價高昂,因此通常使用兩種近似方法:
- 負採樣(negative sampling)—— 模型不計算完整的 softmax,而是將真實的上下文詞與 $ k $ 個隨機採樣的"負"詞進行對比。
- 層次化 softmax(hierarchical softmax)—— 將詞表組織為二叉樹,將 softmax 的代價從 $ O(V) $ 降低到 $ O(\log V) $。
Skip-gram 在罕見詞上表現良好,並能捕捉微妙的關係。著名的類比"king − man + woman ≈ queen"就源於 Skip-gram 嵌入。
GloVe
GloVe(全局向量,Pennington 等,2014)結合了全局矩陣分解和局部上下文窗口方法的優點。它從語料庫中構建一個詞共現矩陣 $ X $,其中 $ X_{ij} $ 統計詞 $ j $ 出現在詞 $ i $ 上下文中的頻率,然後優化:
- $ J = \sum_{i,j=1}^{V} f(X_{ij})\bigl(\mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j - \log X_{ij}\bigr)^2 $
其中 $ f $ 是一個加權函數,用於限制非常高頻共現的影響。GloVe 嵌入的質量通常與 Word2Vec 相當或更高,並且對全局統計的顯式利用可以提升類比任務的性能。
fastText
fastText(Bojanowski 等,2017)通過將每個詞表示為字符 n-gram 的集合來擴展 Word2Vec。例如,當 $ n = 3 $ 時,單詞"where"由 n-gram {"<wh", "whe", "her", "ere", "re>"} 加上整個詞"<where>"來表示。一個詞的嵌入是其 n-gram 向量之和。
這種方法有兩個主要優勢:
- 處理罕見詞和未登錄詞 —— 即使是訓練詞表中不存在的詞,也可以通過對其字符 n-gram 向量求和來獲得嵌入。
- 形態感知 —— 共享子串的詞(例如"teach"、"teacher"、"teaching")會自動共享嵌入的組成部分。
嵌入的評估
詞嵌入通過以下方式進行評估:
| 評估類型 | 示例 | 衡量內容 |
|---|---|---|
| 內在評估:類比 | "king : queen :: man : ?" | 空間的線性結構 |
| 內在評估:相似度 | 與人類相似度判斷的相關性(SimLex-999、WS-353) | 語義質量 |
| 外在評估:下游任務 | 命名實體識別、情感分析、句法分析 | 實際效用 |
內在評估速度快,但並不總能預測下游任務的性能。最終,在目標任務上的外在評估是最可靠的衡量標準。
上下文嵌入
傳統詞嵌入為每個詞分配一個固定向量,與上下文無關 —— 無論"bank"指的是河岸還是金融機構,它的嵌入都相同。上下文嵌入通過根據周圍文本生成不同的表示來解決這一局限。
著名的上下文嵌入模型包括:
- ELMo(Peters 等,2018)—— 使用雙向 LSTM 生成依賴於上下文的詞表示。
- BERT(Devlin 等,2019)—— 使用通過掩碼語言建模訓練的 Transformer 編碼器。
- GPT 系列(Radford 等,2018–)—— 使用以自回歸方式訓練的 Transformer 解碼器。
這些模型在大多數 NLP 任務中已基本取代了靜態嵌入,不過靜態嵌入在效率、可解釋性以及低資源場景下仍然有用。
參見
參考文獻
- Firth, J. R. (1957). "A synopsis of linguistic theory, 1930–1955". 收錄於 Studies in Linguistic Analysis。
- Mikolov, T. et al. (2013). "Efficient Estimation of Word Representations in Vector Space". arXiv:1301.3781。
- Pennington, J., Socher, R. 與 Manning, C. D. (2014). "GloVe: Global Vectors for Word Representation". EMNLP。
- Bojanowski, P. et al. (2017). "Enriching Word Vectors with Subword Information". TACL, 5, 135–146。
- Peters, M. E. et al. (2018). "Deep contextualized word representations". NAACL。
- Devlin, J. et al. (2019). "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding". NAACL。