系統學習NLP(二十一)--SWEM
這篇發表在 ACL 2018 上的論文來自於杜克大學 Lawrence Carin 教授的實驗室。文章重新審視了 deep learning models(例如 CNN, LSTM)在各類 NLP 任務中的必要性。
通過大量的實驗探究(17 個資料集),作者發現對於大多數的 NLP 問題,在 word embedding 矩陣上做簡單的 pooling 操作就達到了比 CNN encoder 或者 LSTM encoder 更好的的結果。
■ 論文 | Baseline Needs More Love: On Simple Word-Embedding-Based Models and Associated Pooling Mechanisms
■ 連結 | https://www.paperweekly.site/papers/1987
■ 原始碼 |https://github.com/dinghanshen/SWEM
論文詳細比較了直接在詞向量上進行池化的簡單模型和主流神經網路模型(例如 CNN 和 RNN)在 NLP 多個任務上的效果。實驗結果表明,在很多工上簡單的詞向量模型和神經網路模型(CNN 和 LSTM)的效果相當,有些任務甚至簡單模型更好。下面是我對這篇論文的閱讀筆記。
引言
在 NLP 領域,詞向量(word embedding)已經受到了研究者們的廣泛關注和應用。它通過大量的無標籤資料將每個詞表示成一個固定維度的向量。相比傳統的獨熱(one-hot)表示,詞向量具有低維緊密的特點,並能學習到豐富的語義和句法資訊。目前代表性的詞向量工作有word2vec[1]和GloVe[2]。
在 NLP 領域,使用詞向量將一個變長文字表示成一個固定向量的常用方法有:1)以詞向量為輸入,使用一個複雜的神經網路(CNN,RNN 等)來進行文字表示學習;2)在詞向量的基礎上,直接簡單的使用按元素求均值或者相加的簡單方法來表示。
對於複雜神經網路方法,模型複雜計算量大耗時。該論文通過大量實驗發現,基於詞向量的簡單池化模型對於大多數的 NLP 問題,已經表現得足夠好,有時甚至效果超過了複雜的神經網路模型。
方法
該文對比的主流神經網路模型為:LSTM 和 CNN。對於 LSTM 特點在於使用門機制來學習長距離依賴資訊,可以認為考慮了詞序資訊。對於 CNN 特點是利用滑動視窗卷積連續的詞特徵,然後通過池化操作學習到最顯著的語義特徵。 對於簡單的詞向量模型(Simple word-embedding model,SWEM),作者提出了下面幾種方法。
SWEM-aver:就是平均池化,對詞向量的按元素求均值。這種方法相當於考慮了每個詞的資訊。
SWEM-max:最大池化,對詞向量每一維取最大值。這種方法相當於考慮最顯著特徵資訊,其他無關或者不重要的資訊被忽略。
SWEM-concat:考慮到上面兩種池化方法資訊是互補的,這種變體是對上面兩種池化方法得到的結果進行拼接。
SWEM-hier:上面的方法並沒有考慮詞序和空間資訊,提出的層次池化先使用大小為 n 區域性視窗進行平均池化,然後再使用全域性最大池化。該方法其實類似我們常用的 n-grams 特徵。
接下來對比一下 SWEM 和神經網路模型結構。可以看到 SWEM 僅對詞向量使用池化操作,並沒有額外的引數,且可以高度並行化。
實驗結果與分析
實驗中,使用了 300 維的 GloVe 詞向量,對於未登入詞按照均勻分佈進行初始化。最終的分類器使用了多層感知機 MLP 進行分類。在文件分類,文字序列匹配和句子分類三大任務,共 17 個資料集上進行了實驗並進行了詳細的分析。
文件分類
實驗中的文件分類任務能被分為三種型別:主題分類,情感分析和本體分類。實驗結果如下:
令人驚奇的是在主題分類任務上,SWEM 模型獲得了比 LSTM 和 CNN 更好的結果,特別是 SWEM-concat 模型的效果甚至優於 29 層的 Deep CNN。在本體分類任務上也有類似的趨勢。有趣的是對於情感分析任務,CNN 和 LSTM 效果要好於不考慮詞序資訊的 SWEM 模型。對於考慮了詞序和空間資訊的 SWEM-hier 取得了和 CNN/LSTM 相當的結果。這可能是情感分析任務需要詞序資訊。例如“not really good”和“really not good”的情感等級是不一樣的。
在大多數任務上 SWEM-max 的方法略差於 SWEM-aver,但是它提供了互補的資訊,所以 SWEM-concat 獲得了更好的結果。更重要的是,SWEM-max 具有很強的模型解釋性。
論文在 Yahoo 資料集上訓練了 SWEM-max 模型(詞向量隨機初始化)。然後根據訓練學習後的詞向量中的每一維的值畫了直方圖,如下圖 1:
可以看到相比與 GloVe,SWEM-max 學習出來的詞向量是十分稀疏的,這說明在預測文字時,模型只依靠一些關鍵詞,這就增加了模型的解釋性。論文在整個詞彙表中根據詞向量維度挑選出了一個維度中值最大的 5 個詞展示在表 3 中。可以看到每個維度選出的詞是同一個主題相關的。甚至模型可以學到沒有標籤資訊的結構,例如表 3 中的“Chemistry”,在資料集中是沒有 chemistry 標籤的,它屬於 science 主題。
在模型時間上,SWEM 模型要比 CNN 和 LSTM 都高效。
文字序列匹配
在句子匹配問題的實驗室中,主要包括自然語言推理,問答中答案句選擇和複述識別任務。實驗結果如下:
可以看到除了 WikiQA 資料集,其他資料集上,SWEM 模型獲得了比 CNN 和 LSTM 更好的結果。這可能是因為在當匹配自然語言句子時,在大多數情況下,只需要使用簡單模型對兩個序列之間在單詞級別上進行對比就足夠了。從這方面也可以看出,詞序資訊對於句子匹配的作用比較小。此外簡單模型比 LSTM 和 CNN 更容易優化。
句子分類
相比與前面的文件分類,句子分類任務平均只有 20 個詞的長度。實驗結果如下:
在情感分類任務上,和前面文件分類的實驗結果一樣,SWEM 效果差於 LSTM 和 CNN,在其他兩個任務上,效果只是略差於 NN 模型。相比與前面的文件分類,在短句子分類上 SWEM 的效果要比長文件的分類效果要差。這也可能是由於短句中詞序資訊更重要。
此外,論文還在附加材料中補充了對序列標註任務的實驗,實驗結果如下:
可以看到對於詞序敏感的序列標註任務,SWEM 的效果明顯要差於 CNN 和 RNN。
詞序資訊的重要性
從上面可以看到,SWEM 模型的一個缺點在於忽略了詞序資訊,而 CNN 和 LSTM 模型能夠一定程度的學習詞序資訊。那麼在上述的這些任務中,詞序資訊到底有多重要?
為了探索這個問題,該文將訓練資料集的詞序打亂,並保持測試集的詞序不變,就是為了去掉詞序資訊。然後使用了能夠學習詞序資訊 LSTM 模型進行了實驗,實驗結果如下:
令人驚奇地發現,在 Yahoo 和 SNLI 資料集(也就是主題分類和文字蘊涵任務)上,在亂序訓練集上訓練的 LSTM 取得了和原始詞序相當的結果。這說明詞序資訊對這兩個問題並沒有明顯的幫助。但是在情感分析任務上,亂序的 LSTM 結果還是有所下降,說明詞序對於情感分析任務還是比較重要。
再來看看 SWEM-hier 在情感分析上的效果,相比與 SWEM 其他模型,SWEM-hier 相當於學習了 n-gram 特徵,保留了一定的區域性詞序資訊。在兩個情感任務上效果也是由於其他 SWEM 模型,這也證明了 SWEM-hier 能夠學習一定的詞序資訊。
其他實驗
除了上述實驗,該文還設定了一些實驗在說明 SWEM 的效能。對於之前的使用非線性的 MLP 作為分類器,替換成了線性分類器進行了實驗。在 Yahoo(從 73.53% 到 73.18%)和 Yelp P(93.76% 到 93.66%)資料集上 SWEM 的效果並未明顯下降。這也說明了 SWEM 模型能夠抽取魯棒、有資訊的句子表示。
該文還在中文資料集上進行了實驗,實驗結果表明層次池化比最大和平均池化更適合中文文字分類,這樣暗示了中文可能比英文對詞序更加敏感。
在附加材料中,該文還用 SWEM-concat 模型在 Yahoo 資料集上對詞向量維度(從 3 維到 1000 維)進行了實驗,這裡詞向量使用隨機初始化。
可以看到高的維度一般效果會更好一些,因為能夠表示更豐富的語義資訊。但是,可以看到詞向量在 10 維的時候已經可以達到和 1000 維相當的效果。其實這也和論文[3]的結果比較一致,在一些任務上小維度的詞向量效果也已經足夠好了。
此外,論文還對訓練集規模對模型效果影響進行了實驗。在 Yahoo 和 SNLI 資料集上分別取不同比例的訓練集對模型進行訓練測試,結果如下圖:
可以看到當標註訓練集規模比較小時,簡單的 SWEM 模型的效果更好,這可能也是 CNN 和 LSTM 複雜模型在小規模訓練資料上容易過擬合導致的。
總結
該論文展示了在詞向量上僅使用池化操作的簡單模型 SWEM 的效能,在多個 NLP 任務資料集上進行了實驗,比較了 SWEM 和目前主流的 NN 模型(CNN 和 LSTM)效能。
實驗發現,SWEM 這樣簡單的基線系統在很多工上取得了與 NN 相當的結果,實驗中的一些總結如下:
1. 簡單的池化操作對於長文件(上百個詞)表示具有不錯的表現,而迴圈和卷積操作對於短文字更有效;
2. 情感分析任務相比主題文字分類任務對詞序特徵更敏感,但是該文提出的一種簡單的層次池化也能夠學習一定的詞序資訊,和 LSTM/CNN 在情感分析任務上取得了相當的結果;
3. 對於句子匹配問題,簡單的池化操作已經展現出了與 LSTM/CNN 相當甚至更好的效能;
4. 對於 SWEM-max 模型,可以通過對詞向量維度的分析得到較好的模型解釋;
5. 在一些任務上,詞向量的維度有時在低維已經足夠好;
6. 在標註訓練集規模小的時候,簡單的 SWEM 模型可能更加魯棒、獲得更好的表現。
總的來說,我們在進行研究時,有時為了讓模型學習到更為豐富的資訊,會把模型設計得十分複雜,但是這篇論文通過實驗告訴了我們,簡單的基線系統也能夠獲得很不錯的表現。當我們做具體任務時,應該根據具體需求來選擇設計模型(模型效果,模型複雜度,模型執行時間等的權衡),簡單有效的系統也應該受到關注。
參考文獻
[1] Mikolov, Tomas, et al. "Distributed representations of words and phrases and their compositionality." Advances in neural information processing systems. 2013.
[2] Pennington, Jeffrey, Richard Socher, and Christopher Manning. "Glove: Global vectors for word representation." Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014.
[3] Lai, Siwei, et al. "How to generate a good word embedding." IEEE Intelligent Systems 31.6 (2016): 5-14.
相關文章
- 系統學習NLP(十六)--DSSMSSM
- 系統學習NLP(十七)--文字相似度
- 系統學習NLP(二十)--文字聚類聚類
- swift4.1 系統學習二十一 泛型Swift泛型
- 系統學習NLP(十五)--seq2seq
- 系統學習NLP(十二)--文字表示綜述
- 系統學習NLP(十四)--句子向量與篇章向量
- 系統學習NLP(十九)--文字分類之FastText文字分類AST
- 推薦系統遇上深度學習(二十一)--階段性回顧深度學習
- NLP學習1
- 系統學習NLP(十)--詞性標註演算法綜述詞性標註演算法
- Python學習之旅(二十一)Python
- NLP與深度學習(一)NLP任務流程深度學習
- NLP系列學習:資料平滑
- Salesforce LWC學習(二十一) Error淺談SalesforceError
- Nginxhttp模組(學習筆記二十一)NginxHTTP筆記
- NLP教程(7) - 問答系統
- 你是怎麼學習 NLP 的?
- 作業系統學習作業系統
- MySQL如何系統學習MySql
- NLP&深度學習:近期趨勢概述深度學習
- 從零開始學機器學習——入門NLP機器學習
- Linux系統基礎學習Linux
- Dart基礎系統學習Dart
- React系統性學習(下)React
- MySQL學習之日誌系統MySql
- SpringBoot系統學習 - 配置篇Spring Boot
- 軟體設計模式學習(二十一)中介者模式設計模式
- NLP與深度學習(六)BERT模型的使用深度學習模型
- 圖解BERT(NLP中的遷移學習)圖解遷移學習
- 工作學習中如何選擇作業系統?如何學習linux作業系統作業系統Linux
- 從 Quora 的 187 個問題中學習機器學習和 NLP機器學習
- NLP實踐專案:智慧問答系統
- Python零基礎學習筆記(二十一)——dict字典Python筆記
- 怎樣系統的學習linux?Linux學習路線!Linux
- 系統學習 TypeScript(四)——變數宣告的初步學習TypeScript變數
- CFA協會線上學習系統學習詞彙!
- 分享學習linux系統學習心得,從大白變小白Linux