TextRCNN 顧名思義,對文本處理包含RNN 和 CNN的元素,其中CNN部分是用到了池化,RNN部分是考慮了上下文的因素
1.模型結構
RNN 部分:
- 拿上圖中 x4舉例, x4= [cl(w4),along,cr(w4)] , l 是left的縮寫, r是right的縮寫
- 對於cl(w4),有cl(w3) 和 stroll 指向它,所以可以看出 cl(w4) 是由 cl(w3) 和 stroll 兩邊部分構成
- 對於cr(w4),有 the 和 cr(w5) 指向它,所以可以看出 cr(w4) 是由 the 和 cr(w5) 兩部分構成
- cl 和 cr 表示 RNN是雙向的
具體公式如下:
非線性激活部分:
- yi就是潛在語義向量,接下去判斷 哪個 xi 在 潛在第1,2,3,4個語義空間中起到的作用最大?採用max-polling來判斷
maxpooling部分
y(3) 和 y(2) 的長度是一樣的
全連接層
Softmax
- 採用SGD方法進行優化
- 初始化參數從均勻分佈中
- 用預訓練的詞向量,具體採用skip-gram模型訓練出的
2. 試驗的一些設置
- 英文分詞采用斯坦福的分詞器,中文分詞采用中科院的ICTCLAS
- 沒有去掉停用詞
- 劃分 train ,val , test ;如果數據集沒有自帶的val,就從train datasets中劃分10% 作爲val
- 採用Macro-F1 來衡量分類的效果,這個指標一般用於多分類任務中,首先對每個類求F值,然後再對每個類的F值求平均
- 學習率設置爲0.01
- 隱藏層神經元個數爲H=100
- 詞向量長度爲50
- 文本的長度設置爲50
看下參數部分:
3. 幾種比對的模型
Bag of Words/Bigrams + LR/SVM
Average Embedding + LR
LDA
Tree Kernels
RecursiveNN
CNN ,
- cnn , rnn , rcnn 的效果比傳統機器學習的方法的要更出色,在所有的4份數據集上,神經網絡能更好的捕獲上下文的信息
- cnn 和 crnn 跟 rnn 比較的話,cnn 和 rcnn 效果更好,認爲主要的原因是 cnn可以通過池化選擇更顯著的特徵,通過卷積層捕獲上下文的信息,二RNN智能捕獲上下文信息,依賴於模型的結構
- 在ACL 和 SST 數據集上,RCCN表現更好
- 比對RCNN 和 CNN,發現RCNN在所有的case中,表現更好,認爲主要的用RNN的結構比CNN用滑窗口的結果下更好,
上下文信息捕獲上:
比對RCNN 和CNN, 其中CNN採用固定的滑窗的方式,窗口的大小有一些影響,一個比較小的窗口,會損失距離較遠的信息,太大會導致數據稀疏的問題,另外,大量的參數也更難訓練。
refer:Recurrent Convolutional Neural Networks for Text Classification