Distributed Representations of Sentences and Documents
該論文提出了一種訓練段落向量的方法。
(一) 提出動機
已經有比較優秀的模型可以很好的生成詞向量,但是對於生成句子或者段落的向量,目前還沒有比較好將單詞向量變爲句子向量的方法,常見的方法以及缺點如下:
- bag of words: 缺乏順序性和語義性
- average word vectors:缺乏單詞順序性
- tfidf-weighting word vectors:缺乏單詞順序性
- LDA(待研究)
所以需要一種有效的方法來生成段落或者句子向量。
(二)核心思想
對於wod2vec模型,示意圖如下
通過上下文來預測缺失值‘on’,在給定上下文後,通過更新參數使得出現缺失值的可能性最大,要最大化的函數如下,其中表示單詞
最終通過softmax的形式將輸出轉化爲多分類問題:
模型的輸出可以寫成:
其中都是softmax函數的參數,爲詞向量矩陣,表示把上下文單詞融合到一起的方法,可以是拼接也可以是求平均。
訓練段落向量思想跟word2vec訓練詞向量的思想其實差不多,首先構建一個共享的段落向量lookup矩陣,該矩陣中的維度m*n,m是段落個數,n是段落向量的維度。核心就是通過誤差反向傳播和梯度下降來更新該矩陣中的參數,方式類似於word2vec,即利用詞向量和段落向量去預測上下文,來產生誤差和梯度。
(三)模型訓練
doc2vec模型中需要訓練得到的主要有詞向量和段落向量,需要訓練個參數(不包括softmax參數),
- :詞彙表數目
- :段落數目
- :詞向量維度
- :段落向量維度
訓練方式主要有如下兩種
(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,詞向量一直不動啊)
(四)模型預測
對於一個新的段落,在固定單詞向量和softmax參數和時,對當前向量進行初始化,然後利上述兩種方法更新段落向量即可。
在論文中,作者推薦將PV-DM和PV-DBOW產生的向量進行拼接得到最後使用的段落向量。