TL; DR:雙向RNN是否對簡單文本分類有幫助,並且是填充邪惡?(雙向)用於簡單文本分類的RNN
在我最近的工作中,我爲同樣的任務創建了LSTM模型和BLSTM模型,即文本分類。 LSTM模型做得很好,但我決定給BLSTM一個鏡頭,看它是否會進一步提高精度。最後,我發現BLSTM的收斂速度要慢得多,令人驚訝的是,它過度配置,即使我以50%的概率申請輟學率。
在實施過程中,我爲LSTM和BLSTM都使用了展開的RNN,期待更快的培訓。爲了滿足要求,我手動將輸入文本填充到固定長度。
比方說,我們有一句話「我早上睡覺,錯過了對尼布甲尼撒的採訪」,然後在轉換爲一系列預先訓練的詞嵌入指數時,最後填充0。所以我們得到類似於[21,43,25,64,43,25,6,234,23,0,0,29,0,0,0,...,0]的東西。請注意,「th」(應該是「the」)是一個拼寫錯誤,名稱「Nebuchadnezzar」太稀有了,因此它們都不在詞彙表中,因此我們用0代替它,零字矢量。
這裏是我的感言:
有些人喜歡飼養胼到手套箱或Word2Vec模型之前,改變生詞變成像一個特殊的詞「< UNK>」。這是否意味着我們必須首先建立詞彙表,並在訓練之前將一些低頻詞(根據分鐘數設置)更改爲「< unk>」?訓練RNN時,將未知單詞變爲0還是僅刪除它們會更好?
就我而言,輸入到LSTM或BLSTM網絡中的尾隨0將混淆輸出。儘管沒有來自外部的新信息,但是細胞狀態仍會在隨後的每個時間步驟更新,因此最終細胞的輸出將受到長尾隨0嚴重影響。而且我相信,BLSTM會受到更多的影響,因爲它也處理來自逆序的文本,就像[0,0,0,...,0,321,231],特別是如果我們設置初始值忘記門到1.0來培養記憶。我看到很多人使用填充,但如果文本填充很長並且在BLSTM的情況下不會導致災難?
關於這些問題的任何想法? :-o