「上下文詞向量 (Contextualized Word Embeddings)」是一種詞嵌入 (Word Embedding) 的進階形式,它與傳統的靜態詞嵌入(例如 Word2Vec 或 GloVe)的主要區別在於,同一個詞語在不同的語境(上下文中)會擁有不同的向量表示。
你可以將靜態詞嵌入想像成每個詞語在向量空間中都有一個固定的位置,無論它出現在哪個句子中,它的向量表示都是相同的。而上下文詞向量則更像是每個詞語的位置會根據它周圍的詞語而動態變化,更能反映其在特定語境下的確切含義。
與靜態詞嵌入的區別:- 靜態詞嵌入: 為詞彙表中的每個詞語學習一個固定的向量表示。例如,無論 "bank" 出現在 "river bank" 還是 "bank account" 中,其向量表示都是一樣的。這導致它們難以捕捉詞語的多義性 (polysemy)。
- 上下文詞向量: 為句子中的每個詞語生成一個向量表示,這個向量會考慮到該詞語在句子中的上下文信息。因此,在 "river bank" 中的 "bank" 和在 "bank account" 中的 "bank" 會擁有不同的向量表示。
為什麼需要上下文詞向量?
- 解決詞語多義性: 許多詞語有多個不同的含義。上下文詞向量能夠根據詞語的上下文來區分其具體的含義,並生成不同的向量表示。
- 捕捉語境信息: 詞語的含義很大程度上取決於它周圍的詞語。上下文詞向量能夠捕捉到這些語境信息,使得模型更好地理解文本的語義。
- 提高模型性能: 在許多 NLP 任務中,使用上下文詞向量作為輸入可以顯著提高模型的性能,尤其是在需要理解詞語在特定語境下含義的任務中,例如問答、文本推理等。
如何生成上下文詞向量?
上下文詞向量通常由更複雜的深度學習模型生成,這些模型能夠處理整個輸入序列並考慮詞語之間的相互作用。一些常見的生成上下文詞向量的模型包括:
- ELMo (Embeddings from Language Models) (2018年): ELMo 使用雙向的 LSTM (長短期記憶網路) 來捕捉詞語的上下文信息。對於輸入句子中的每個詞語,ELMo 會生成一個基於其左側和右側上下文的向量表示。
- Transformer 模型 (2017年至今,例如 BERT, RoBERTa, DistilBERT, XLNet 等): Transformer 模型及其變體使用自注意力機制來建模詞語之間的關係,能夠捕捉到更長距離的依賴,並生成非常強大的上下文詞向量。例如:
- BERT (Bidirectional Encoder Representations from Transformers): 通過雙向的 Transformer 編碼器,BERT 為句子中的每個詞語生成一個考慮了整個句子上下文的向量表示。 GPT 系列 (Generative Pre-trained Transformer) (例如 GPT-2, GPT-3): 雖然 GPT 主要用於文本生成,但其 Transformer 解碼器也能夠為每個詞語生成基於其左側上下文的向量表示。
上下文詞向量的優點:
- 更好地處理詞語多義性。
- 能夠捕捉豐富的語境信息。
- 在許多 NLP 任務中表現出色。
上下文詞向量的缺點:
- 通常模型更大,計算成本更高。
- 解釋性可能更差,因為詞向量是動態生成的。
總之,上下文詞向量是現代 NLP 中非常重要的技術,它通過考慮詞語的上下文信息來生成詞語的向量表示,克服了靜態詞嵌入的一些局限性,並在各種 NLP 任務中取得了顯著的成功。像 ELMo 和基於 Transformer 的模型都是生成上下文詞向量的典型代表。