doc2vec 模型

Distributed Representations of Sentences and Documents
該論文提出了一種訓練段落向量的方法。

(一) 提出動機

已經有比較優秀的模型可以很好的生成詞向量,但是對於生成句子或者段落的向量,目前還沒有比較好將單詞向量變爲句子向量的方法,常見的方法以及缺點如下:

  • bag of words: 缺乏順序性和語義性
  • average word vectors:缺乏單詞順序性
  • tfidf-weighting word vectors:缺乏單詞順序性
  • LDA(待研究)

所以需要一種有效的方法來生成段落或者句子向量。

(二)核心思想

對於wod2vec模型,示意圖如下
在這裏插入圖片描述
通過上下文來預測缺失值‘on’,在給定上下文後,通過更新參數使得出現缺失值的可能性最大,要最大化的函數如下,其中ww表示單詞
1Tt=kTklogp(wtwtk,,wt+k)\frac{1}{T} \sum_{t=k}^{T-k} \log p\left(w_{t} | w_{t-k}, \ldots, w_{t+k}\right)
最終通過softmax的形式將輸出轉化爲多分類問題:
p(wtwtk,,wt+k)=eywtieyip\left(w_{t} | w_{t-k}, \ldots, w_{t+k}\right)=\frac{e^{y_{w_{t}}}}{\sum_{i} e^{y_{i}}}
模型的輸出可以寫成:
y=b+Uh(wtk,,wt+k;W)y=b+U h\left(w_{t-k}, \ldots, w_{t+k} ; W\right)其中UbU和b都是softmax函數的參數,WW爲詞向量矩陣,hh表示把上下文單詞融合到一起的方法,可以是拼接也可以是求平均。

訓練段落向量思想跟word2vec訓練詞向量的思想其實差不多,首先構建一個共享的段落向量lookup矩陣,該矩陣中的維度m*n,m是段落個數,n是段落向量的維度。核心就是通過誤差反向傳播和梯度下降來更新該矩陣中的參數,方式類似於word2vec,即利用詞向量和段落向量去預測上下文,來產生誤差和梯度。

(三)模型訓練

doc2vec模型中需要訓練得到的主要有詞向量和段落向量,需要訓練Np+MqN*p + M*q個參數(不包括softmax參數),

  • NN:詞彙表數目
  • MM:段落數目
  • pp:詞向量維度
  • qq:段落向量維度

訓練方式主要有如下兩種

(1)PV-DM(Distributed Memory Model of Paragraph Vectors)

在這裏插入圖片描述
如上圖所示上,該方法類似word2vec中的CBOW,通過上下文預測缺失值,通過上下文的詞向量以及當前段落向量通過某種方式融合到一起,在經過softmax層,得到詞彙表中單詞的預測結果,再通過label計算loss反向傳播更新梯度。最終既可以得到詞向量又可以得到段落向量。

(2)PV-DBOW(Distributed Bag of Words version of Paragraph Vector)

PV-DBOW類似於word2vec中的n-gram模型,用當前段落的詞預測上下文中的詞,注意下圖中最上面的部分是分類器(用softmax加交叉熵產生損失函數)而不是單詞對應的向量(我之前還在想這些詞一直作爲label,詞向量一直不動啊)

在這裏插入圖片描述

(四)模型預測

對於一個新的段落,在固定單詞向量WW和softmax參數UUBB時,對當前向量進行初始化,然後利上述兩種方法更新段落向量即可。
在論文中,作者推薦將PV-DM和PV-DBOW產生的向量進行拼接得到最後使用的段落向量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章