論文筆記:Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank 遞歸神經網絡總結

“Recursive Deep Models for Semantic Compositionality Over Sentiment Treebank”這篇論文發表於 EMNLP 2013,主要作者是 Richard Socher,非常響噹噹的人物,在NLP方向的論文中,經常可以看到這個名字, Socher的在2010-2015年間的很多工作都與遞歸神經網絡有關,Recursive Neural Network 很多地方會把它也簡寫爲 RNN ,與循環神經網絡同名,爲了區別,我一般會寫成 RvNN。
Socher在這篇論文之前已經有好幾篇關於 RvNN 的論文了(如果感興趣可以看文中的參考文獻部分,其中 Socher 爲第一作者的基本上都是RvNN相關的工作),我沒有仔細看他之前的論文,這些相關的工作在斯坦福大學的有關深度學習的公開課中都有提及,例如CS224N之類的。實際上,這篇論文就像是之前一系列工作的一個總結,之前的一些工作在本文中都可以找到介紹。

1.主要解決問題

論文中有兩項工作:

  • 提出 RNTN 模型,也是 RvNN 的一個變種。
  • 介紹 Stanford Sentiment Treebank(SST),也是後面論文中廣泛使用的一個數據集

根本來說, RNTN 的提出還是解決 Semantic Composition 的問題,簡單來說就是,如何從單詞出發,得到句子或者短語的表示,例如,在之前的工作中我們有 word2vec 和 Glove等詞向量,那麼現在的問題就是如何從這些詞向量得到句子的向量表示

2. 背景介紹

關於 Semantic Composition 的問題,之前(之後)的很多論文中都會有所介紹,一般來說,有三種方式(意思是這個意思,名稱翻譯可能就不準確了):

  • 詞袋模型(BOW),也就是不計較文本中單詞的順序信息,例如將所有單詞的詞向量取平均,就可以看作是句子含義的一種表示,但是缺點顯而易見,“I have an apple” 和 “An apple have I”, 是一樣的。
  • 序列模型,也就是 RNN 以及相關的模型們處理的方式,將文本看作是字符序列,依次輸入 RNN或者它的改進版本LSTM等單元進行處理,這種方式得益於記憶信息的保存可以很好的反應整個句子的含義。
  • 結構模型,對於有歧義的句子來說,序列顯然只有一個,但是它對於不同的含義,結構卻不同,因此,對於句子的含義表示,很自然的方式是如何引入結構信息,這也就是遞歸神經網絡的處理方式。

3.RNTN以及其之前的模型

在論文中,Socher 對之前所建立的 RvNN 模型做了總結,所以實際上這一篇論文已經夠詳細了,對於這一部分,個人覺得最好記錄一下公式中不同的權重矩陣或者向量等等的維數信息,一般也就只有幾種 dxd, nxd之類的,這樣會更好理解。

3.1 RvNN

也就是論文中 4.1 部分中介紹的模型(文中寫的是RNN),也就是最基礎的遞歸神經網絡模型,整個模型還是很好理解的,也就是使用 bottom-up 的方式遞歸往上計算即可。

3.2 MV-RNN

這是Socher之後的工作對 RvNN 的改進,改動的部分實際上就是對 composition function 進行了改變,同時使用了一個矩陣和一個向量來表示一個單詞,實驗結果表明模型的效果比 RvNN 要好,這樣的代價非常明顯,每個單詞又增加了一個矩陣的表示,顯然這個參數量增加的非常大。

3.3 RNTN

這是本文中提出的模型,論文中也寫明瞭,這一個模型主要是對於 MV-RNN 參數量過大的改進(之前的MV-RNN是參數量是根據句子中的單詞數量變化而變化的,所以尋找一種固定參數數量的模型),我個人的理解其實就是把不確定數量的每個單詞的信息抽出來合成在一個 V 矩陣中,從 Figure-5 中可以看出,Neural Tensor Layer 含有兩個部分:Slice of tensor layer 和 standard layer, 對於要進行組合的兩個向量而言,實際上 V 中的每個切片都是一個組合的方式,這部分也就是 slice of tensor layer進行的處理,同時,standard layer做的處理就是之前的RvNN進行的處理,論文中認爲,對於 V 的不同 slice,其實就代表的是不同的組合方式,大概意思就是通過更多的組合提高了最後的結果。 其實模型的結構還是比較清楚的。

4. 實驗部分

Semantic Composition 總之還是會作爲其他任務的上游任務,得到了句子的表示,論文在提出的 Stanford Sentiment Treebank上進行了 Sentiment Classification 的測試,當然,SST這個數據集我感覺比前面的模型還要有名,畢竟之後的那麼多論文都使用了這個數據集進行實驗。
SST的具體信息論文中有詳細介紹,它對於每個句子都提供了 ParseTree,並且在 root 和 每個節點上都提供了情感分類,所以可以用來測試最後整體的句子 Sentiment Classification 和 在低層次上進行分類,對於這些情感分類,數據集提供了不同粒度的分類,粗粒度上是二分類,細粒度則是五分類。這是數據集的情況。

在實驗設計上,比較有意思的是測試了模型對於特殊情況的幾種句子,主要是 5.3- 5.4 中的幾種情況,首先是句子中連詞前後對比的情況,也就是 :“X but Y” 並且 X Y的情感不同,第二種是 Negative Positive 的句子,也就是句子只改變了少量詞,但是情感不同,第三種是 Negative Negative 的情況,與第二種類似,只不過是修改後 由 negative 變成了 less negative,這部分在FIgure -9 的例子中看的比較清楚。
總之,這幾組實驗設計的很有意思,反映了一些特殊情況下模型的魯棒性依舊好,以後可以嘗試這樣設計的思路。

參考

論文:Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank
很建議一看:零基礎入門深度學習(7)遞歸神經網絡
以及這個問題:如何有效的區分和理解RNN循環神經網絡與遞歸神經網絡?

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