Doc2vec學習總結(三)


這篇是七月在線問答系統項目中使用到的一個算法,由於當時有總結,就先放上來了后期再整理。

Doc2vec

​ Doc2vec又叫Paragraph Vector是Tomas Mikolov基於word2vec模型提出的,其具有一些優點,比如不用固定句子長度,接受不同長度的句子做訓練樣本,Doc2vec是一個無監督學習算法,該算法用於預測一個向量來表示不同的文檔,該模型的結構潛在的克服了詞袋模型的缺點。

​ Doc2vec模型是受到了word2vec模型的啟發,word2vec里預測詞向量時,預測出來的詞是含有詞義的,比如上文提到的詞向量'powerful'會相對於'Paris'離'strong'距離更近,在Doc2vec中也構建了相同的結構。所以Doc2vec克服了詞袋模型中沒有語義的去缺點。假設現在存在訓練樣本,每個句子是訓練樣本。和word2vec一樣,Doc2vec也有兩種訓練方式,一種是PV-DM(Distributed Memory Model of paragraphvectors)類似於word2vec中的CBOW模型,另一種是PV-DBOW(Distributed Bag of Words of paragraph vector)類似於word2vec中的skip-gram模型

1. A distributed memory model

​ 訓練句向量的方法和詞向量的方法非常類似。訓練詞向量的核心思想就是說可以根據每個單詞的上下文預測,也就是說上下文的單詞對是有影響的。那么同理,可以用同樣的方法訓練doc2vec。例如對於一個句子i want to drink water,如果要去預測句子中的單詞want,那么不僅可以根據其他單詞生成feature, 也可以根據其他單詞和句子來生成feature進行預測。因此doc2vec的框架如下所示:

​ 在Doc2vec中,每一句話用唯一的向量來表示,用矩陣D的某一列來代表。每一個詞也用唯一的向量來表示,用矩陣W的某一列來表示。

​ 每次從一句話中滑動采樣固定長度的詞,取其中一個詞作預測詞,其他的作輸入詞。輸入詞對應的詞向量word vector和本句話對應的句子向量Paragraph vector作為輸入層的輸入,將本句話的向量和本次采樣的詞向量相加求平均或者累加構成一個新的向量X,進而使用這個向量X預測此次窗口內的預測詞。(預測句子中的下一個單詞)

​ Doc2vec相對於word2vec不同之處在於,在輸入層,增添了一個新句子向量Paragraph vector,Paragraph vector可以被看作是另一個詞向量,它扮演了一個記憶

​ 每次訓練也是滑動截取句子中一小部分詞來訓練,Paragraph Vector在同一個句子的若干次訓練中是共享的,所以同一句話會有多次訓練,每次訓練中輸入都包含Paragraph vector。

​ 它可以被看作是句子的主旨,有了它,該句子的主旨每次都會被放入作為輸入的一部分來訓練。這樣每次訓練過程中,不光是訓練了詞,得到了詞向量。同時隨着一句話每次滑動取若干詞訓練的過程中,作為每次訓練的輸入層一部分的共享Paragraph vector,該向量表達的主旨會越來越准確

​ Doc2vec中PV-DM模型具體的訓練過程和word2vec中的CBOW模型訓練方式相同

訓練完了以后,就會得到訓練樣本中所有的詞向量和每句話對應的句子向量

​ 那么Doc2vec是怎么預測新的句子Paragraph vector呢?其實在預測新的句子的時候,還是會將該Paragraph vector隨機初始化,放入模型中再重新根據隨機梯度下降不斷迭代求得最終穩定下來的句子向量。不過在預測過程中,模型里的詞向量還有投影層到輸出層的softmax weights參數是不會變的,這樣在不斷迭代中只會更新Paragraph vector,其他參數均已固定,只需很少的時間就能計算出帶預測的Paragraph vector。

總結doc2vec的過程, 主要有兩步:

  • 訓練模型,在已知的訓練數據中得到詞向量, softmax的參數和,以及段落向量/句向量
  • 推斷過程(inference stage),對於新的段落,得到其向量表達。具體地,在矩陣中添加更多的列,在固定的情況下,利用上述方法進行訓練,使用梯度下降的方法得到新的D,從而得到新段落的向量表達

2. Paragraph Vector without word ordering: Distributed bag of words

​ 還有一種訓練方法是忽略輸入的上下文,讓模型去預測段落中的隨機一個單詞。就是在每次迭代的時候,從文本中采樣得到一個窗口,再從這個窗口中隨機采樣一個單詞作為預測任務,讓模型去預測,輸入就是段落向量。如下所示:

​ 我們稱這種模型為 Distributed Bag of Words version of Paragraph Vector(PV-DBOW)

​ 在上述兩種方法中,我們可以使用PV-DM或者PV-DBOW得到段落向量/句向量。對於大多數任務,PV-DM的方法表現很好,但我們也強烈推薦兩種方法相結合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM