Recurrent Convolutional Neural Networks for Text Classification
介紹了CNN表示文本的模型之後,本篇將會分享一篇用CNN結合RNN的模型來表示文本。paper題目是Recurrent Convolutional Neural Networks for Text Classification,作者是來自中科院大學的來斯惟博士。
本文要解決的問題是文本分類,文本分類最關鍵的問題是特徵表示,傳統的方法經常會忽略上下文信息和詞序,無法捕捉到詞義。近幾年隨著深度學習的火熱,研究者們通過藉助神經網路模型來解決傳統方法存在的問題。比如:Socher提出的Recursive Neural Network(遞歸神經網路)模型,通過一種樹結構來捕捉句子語義,取得了不錯的效果,但時間複雜度是O(n2),並且無法用一棵樹來表示兩個句子之間的關係。再比如:Recurrent Neural Network(循環神經網路)模型,時間複雜度是O(n),每個單詞的表示都包含了之前所有單詞的信息,有很強的捕捉上下文的能力,但該模型有偏,後面的單詞比前面的單詞更重要,但這與常識並不相符,因為句中關鍵的詞不一定在最後面。為了解決RNN的有偏性問題,有的研究者提出了用CNN(卷積神經網路)來表示文本,並且時間複雜度也是O(n),但是CNN存在一個缺陷,卷積窗口的大小是固定的,並且這個窗口大小如何設置是一個問題,如果設置小了,則會損失有效信息,如果設置大了,會增加很多的參數。
於是,針對上述模型存在的問題,本文提出了RCNN(循環卷積神經網路)模型,模型架構圖如下:
首先,構造CNN的卷積層,卷積層的本質是一個BiRNN模型,通過正向和反向循環來構造一個單詞的下文和上文,如下式:
得到單詞的上下文表示之後,用拼接的方式來表示這個單詞,如下式:
將該詞向量放入一個單層神經網路中,得到所謂的潛語義向量(latent semantic vector),這裡卷積層的計算結束了,時間複雜度仍是O(n)。接下來進行池化層(max-pooling),即將剛剛得到的所有單詞的潛語義向量中每個維度上最大的值選出組成一個新的向量,這裡採用max-pooling可以將向量中最大的特徵提取出來,從而獲取到整個文本的信息。池化過程時間複雜度也是O(n),所以整個模型的時間複雜度是O(n)。得到文本特徵向量之後,進行分類。
為了驗證模型的有效性,在四組包括中文、英文的分類任務中進行了對比實驗,取得了滿意的結果。
本文靈活地結合RNN和CNN構造了新的模型,利用了兩種模型的優點,提升了文本分類的性能。這也提供了一種研究思路,因為每一種model都有其鮮明的優點和無法迴避的缺點,如何利用別的model的優點來彌補自身model的缺點,是改進model的一種重要思路。
PaperWeekly,每周會分享N篇NLP領域的paper,內容包括摘譯和評價,歡迎大家掃碼關注。
推薦閱讀:
※讓問答更自然 - 基於拷貝和檢索機制的自然答案生成系統研究 | 論文訪談間 #02
※深入NLP——看中文分詞如何影響你的生活點滴
※什麼是自編碼?
※SeqGAN & IRGAN | 實錄·Guru Talk #12
※word2vec 相關paper/blog推薦
TAG:自然语言处理 | 深度学习DeepLearning |