NLP系列學習:DBOW句向量

分佈記憶模型(PV-DM)

用神經網絡訓練詞向量的邏輯是,讓網絡去預測單詞(目標詞/上下文)這樣的任務,句向量也是同樣,咱們給定從句子裏的一些上下文,讓網絡去預測下一個單詞。在句(Paragraph)向量模型中,每個句子都被映射成一個獨立的向量,這個句向量做爲矩陣 D 的一列;同時,每個詞也被映射成一個獨立的向量,這個詞向量做爲矩陣 W 的一列。對這個句向量和這些詞向量求平均或者首尾相連,用來預測文本中的下一個詞。這裏,咱們選用首尾相連來組合這些矩陣。算法

嚴格的說,與 Word2vec 的公式相比,惟一的不一樣點在於這裏從 W 和D 兩個矩陣中構造 h。句子的標識(Token)被當作另一個「詞」看待。它扮演一個「Memory」的角色,用來記憶當前文本或文章主題中漏掉了什麼。所以,這個模型被稱爲「句向量的分佈記憶模型」(PV-DM: Distributed Memory Model of Paragraph Vectors)。網絡

上下文是固定長度的,從句子的一個滑動窗口中取樣。句向量被這這個句子產生的全部上下文共享,但不超越句子。可是詞向量矩陣 W 是超越句子,全局共享的。好比說,」powerful」的詞向量也對全部的句子有效。機器學習

經過隨機梯度降低法來訓練這些句向量和詞向量,在此過程當中經過反向傳播得到梯度。在隨機梯度降低的每一步,均可以從一個隨機的句子中抽取一個定長的上下文,從網絡中計算出梯度偏差,而後更新模型的參數。學習

在預測階段,須要執行一個「推斷(inference)」步驟計算新句子的句向量。也是經過梯度上升來獲取。在這個階段,其他的模型參數、詞向量矩陣 W 和 softmax 權重是固定的。繼承

假設語料庫中有 N 個句子,字典裏有 M 個詞彙;咱們試圖將每個句子映射到 p 維空間,每個詞映射到 q 維空間,因而這個模型就有總共 N×p+M×q 個參數(包括softmax參數)。即便句子的數量會隨着 N 的增大而增大,訓練中的更新仍是稀疏且高效。ip

通過訓練,這些句向量就能夠當作句子的特徵使用。咱們能夠把這些特徵直接用於傳統的機器學習技術,好比邏輯迴歸、支持向量機或者 K-means 聚類。
總而言之,這個算法有兩個關鍵階段:io

  1. 經過訓練得到詞向量矩陣 W, softmax 權重 U, b 以及句向量 D;
  2. 第二個階段是推斷階段,用於取得一個新句子(沒有出現過)的句向量 D,經過增長更多的列在矩陣 D 裏,並保持 W, U, b 不變的狀況下在矩陣 D 上進行梯度降低。咱們使用 D 經過一個基礎的分類器給句子加上標籤

句向量有兩個顯著的優勢:效率

  1. 它的訓練集是沒有被標籤的數據,所以它能夠被用於一些訓練樣本標籤不足的任務
  2. 句向量也解決了詞袋模型的一些關鍵的弱點。第一,它繼承了詞向量的一個重要特性——詞和詞之間的語義。在語義裏,「強有力」比起「巴黎」來講,和「強壯」更接近。第二,它考慮到了「詞序(word order)」,n-gram 模型則須要設置一個較大的 n 才能作到。這一點很重要,由於模型保存了句子中大量的信息,包括詞序。也就是說,咱們的模型優於詞袋 n-gram 模型,由於後者會表現出一個極高的維度,影響效率並且很難泛化

分佈詞袋模型(PV-DBOW)-無詞序句向量

上面的方法討論了在一個文本窗口內,經過句向量和詞向量的首尾相接來預測下一個詞。另外一種方法不把上下文中的詞做爲輸入,而是強制這個模型在輸出中從句子中隨機抽取詞彙來進行預測。實際上,其意義在於在每個隨機梯度降低的迭代中,咱們抽取一個文本窗口,而後從這個文本窗口中抽取一個詞,而後經過一個分類任務獲得句向量。這項技術如圖所示。咱們把這個版本稱爲句向量的分佈詞袋(PV-DBOW): Distributed Bag of Words version of Paragraph Vector)。基礎

句向量被訓練出來,用來預測在一個小窗口中的詞彙。神經網絡

除了在概念上簡單之外,這個模型只須要存儲少許的數據。相比於上一個模型須要存儲 softmax 權重和詞向量,這個模型只須要存儲 softmax 權重。一樣的,這個模型也近似於 Skip-gram 模型。

PV-DM & PV-DBOW 結合

能夠把每個句向量看成兩個向量的組合:一個經過 PV-DM 訓練,另外一個經過 PV-DBOW 訓練。PV-DM 可以很好地執行多種任務,可是它結合 PV-DBOW 後,經常可以更加出色完成任務。

相關文章
相關標籤/搜索