簡體   English   中英

上下文嵌入和詞嵌入有什么區別

[英]What are the differences between contextual embedding and word embedding

我試圖理解深度學習模型嵌入的概念。

我了解使用word2vec如何解決使用 one-hot 向量的局限性。

然而,最近我看到大量的博客文章說明 ELMo、BERT 等在談論上下文嵌入。

詞嵌入與上下文嵌入有何不同?

詞嵌入和上下文嵌入略有不同。

雖然詞嵌入和上下文嵌入都是使用無監督學習從模型中獲得的,但存在一些差異。

word2vecfastText提供的詞嵌入具有詞的詞匯表(字典)。 該詞匯表(或字典)的元素是單詞及其對應的單詞嵌入。 因此,給定一個單詞,無論它出現在哪個句子中,它的嵌入總是相同的。 在這里,預訓練的詞嵌入是static

然而,上下文嵌入(通常從基於轉換器的模型中獲得)。 通過將整個句子傳遞給預訓練的 model,可以從 model 獲得嵌入。 請注意,這里有一個單詞詞匯表,但該詞匯表不包含上下文嵌入。 為每個單詞生成的嵌入取決於給定句子中的其他單詞。 (給定句子中的其他詞被稱為context 。基於轉換器的模型基於注意力機制,注意力是一種查看單詞與其鄰居之間關系的方法)。 因此,給定一個詞,它不會有 static 嵌入,但嵌入是從預訓練(或微調)的 model 動態生成的。

例如,考慮以下兩個句子:

  1. 我將向您展示一個有效的參考點並直言不諱。
  2. 你把重點放在哪里了。

現在,來自預訓練嵌入(如 word2vec)的詞嵌入,對於示例 1 中的兩次出現,單詞'point'的嵌入是相同的,對於示例 2 中的單詞'point'也是相同的。(所有三個事件具有相同的嵌入)。

雖然來自 BERT 或 ELMO 或任何此類基於轉換器的模型的嵌入,但示例 1 中單詞'point'的兩次出現將具有不同的嵌入。 此外,示例 2 中出現的單詞'point'將具有與示例 1 中不同的嵌入。

傳統的詞嵌入(例如 word2vec、Glove)和上下文嵌入(例如 ELMo、BERT)這兩種嵌入技術都旨在學習文檔中每個單詞的連續(向量)表示 連續表示可用於下游機器學習任務。

傳統的詞嵌入技術學習全局詞嵌入。 他們首先通過忽略不同上下文中單詞的含義,使用文檔中的唯一單詞構建一個全局詞匯表。 然后,對於在文檔中出現得更頻繁、彼此靠近的單詞,學習相似的表示。 問題在於,在這樣的詞表示中,詞的上下文含義(從詞的環境中得出的含義)被忽略了。 例如,在“我把手機放在桌子的左邊”這句話中,“左”只學習了一種表示。 但是,“left”在句子中有兩種不同的含義,需要在嵌入空間中有兩種不同的表示。

另一方面,上下文嵌入方法用於通過考慮文檔中所有單詞的序列來學習序列級語義 因此,這樣的技術基於它們的上下文來學習多義詞不同表示,例如上面示例中的“left”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM