將句子表示為向量(下):基於監督學習的句子表示學習(sentence embedding)
1. 引言
上一篇介紹了 如何用無監督方法來訓練sentence embedding ,本文將介紹如何利用監督學習訓練句子編碼器從而獲取sentence embedding,包括利用釋義資料庫PPDB、自然語言推理資料SNLI、以及綜合利用監督訓練資料和無監督訓練資料。
2. 基於釋義資料庫PPDB
2015發表的論文 Towards universal paraphrastic sentence embeddings 提出使用 PPDB(the Paraphrase Database) 來學習通用的sentence embeddings。論文模型的基本流程是輸入mini-batch的釋義對 \(<x_1, x_2>\) 集合 \(X_b\) ,並通過對 \(X_b\) 中的句子進行取樣得到 \(x_1,x_2\) 對應的負樣本 \(t_1, t_2\) ,將這四個句子通過編碼器(編碼函式) \(g\) 得到句子編碼,然後使用一種 margin-based loss進行優化,損失函式的基本思想是 希望編碼後的釋義對 \(<x_1,x_2>\) 能夠非常相近而非釋義對 \(<x_1,t_1>\) 和 \(<x_2,t_2>\) 能夠有不小於 \(\delta\) 的間距 。對於全體訓練資料 \(X\) ,目標函式如下,其中 \(\lambda_c,\lambda_w\) 為正則化引數, \(W_w\) 為word embedding引數, \(W_{w_{initial}}\) 為word embedding初始化矩陣, \(W_c\) 是除了 \(W_w\) 後的其他引數。
\[ \min _ { W _ { c } , W _ { w } } \frac { 1 } { | X | } \left( \sum _ { \left\langle x _ { 1 } , x _ { 2 } \right\rangle \in X } \max \left( 0 , \delta - \cos \left( g \left( x _ { 1 } \right) , g \left( x _ { 2 } \right) \right) + \cos \left( g \left( x _ { 1 } \right) , g \left( t _ { 1 } \right) \right) \right)\right. \\ + \max \left( 0 , \delta - \cos \left( g \left( x _ { 1 } \right) , g \left( x _ { 2 } \right) \right) + \cos \left( g \left( x _ { 2 } \right) , g \left( t _ { 2 } \right) \right) \right) \bigg) \\ + \lambda _ { c } \left\| W _ { c } \right\| ^ { 2 } + \lambda _ { w } \left\| W _ { w _ { i n i t i a l } } - W _ { w } \right\| ^ { 2 } \]
論文實現了6種類型的編碼函式 \(g\) ,具體如下:
- 詞向量平均;
- 詞向量平均後通過一個線性層;
- DAN模型 :詞向量平均後通過多層帶非線性函式的全連線層;
- Simple RNN,取最後一個隱狀態向量;
- identity-RNN (iRNN), 一種特殊的simple RNN,其weight矩陣初始化為單位矩陣,bias初始化為0向量,啟用函式為恆等函式,最終的句子編碼向量為最後一個隱狀態向量除以句子中詞的個數。當正則化程度很高時(模型引數幾乎不更新),iRNN將變成模型1(詞向量平均),不同的是iRNN能夠考慮詞序,有希望能夠比模型1效果好;
- LSTM,取最後一個隱狀態向量。
論文通過大量實驗來對比上述6種編碼器的優劣,得到如下結論:
- 對於無監督文字相似度任務,複雜的模型如LSTM在垂直領域資料集上表現更好,而對於開放域資料集,簡單的模型如詞向量平均比LSTM的效果更好;
- 對於句子相似度,句子蘊含以及情感分析這三種有監督任務,詞向量平均模型在句子相似度和句子蘊含兩個任務上表現比LSTM的效果更好,而情感分析任務LSTM表現非常不錯。
3. 基於自然語言推理的InferSent模型
2017年發表的論文 Supervised Learning of Universal Sentence Representations from Natural Language Inference Data 提出使用自然語言推理(natural language inference, NLI)資料集來學習通用的句子表示。選擇NLI任務是因為NLI是一個high-level理解任務,涉及推理句子間的語義關係。模型整體架構如下:
論文對比了7種不同的句子編碼器,包括:
-
GRU,取最後一個隱狀態
-
LSTM,取最後一個隱狀態
-
BiGRU,前向GRU與反向GRU最後一個隱狀態的連結
-
BiLSTM+mean pooling
-
BiLSTM+max pooling
-
Self-attentive network: bi-LSTM+inner Attention with multiple views,Inner Attention機制如下:
\[ \overline { h } _ { i } = \tanh \left( W h _ { i } + b _ { w } \right) \\ \alpha _ { i } = \frac { e ^ { \overline { h } _ { i } ^ { T } u _ { w } } } { \sum _ { i } e ^ { \overline { h } _ { i } ^ { T } u _ { w } } } \\ u = \sum _ { t } \alpha _ { i } h _ { i } \]
其中 \(\{h_1,...,h_T\}\) 為BiLSTM的隱狀態輸出,將它們輸入到tanh變換層產生keys集合 \(( \overline { h } _ { 1 } , \ldots , \overline { h } _ { T } )\) ,然後與可學習(可訓練)的query向量(上下文向量)計算得到 \(\{a_i\}\) ,然後進行加權得到句子表示 \(u\) ,如下圖所示:
論文具體是採用4個上下文向量 \(u _ { w } ^ { 1 } , u _ { w } ^ { 2 } , u _ { w } ^ { 3 } , u _ { w } ^ { 4 }\) (multiple views),對應產生4個表示後進行連結作為最終的句子表示。
-
Hierarchical ConvNet,多層卷積(4層),每層卷積的maxpooling輸出進行連結得到最終句子表示,模型結構如下圖:
論文實驗表明:BiLSTM+maxpooling作為編碼器,訓練資料為 SNLI ,能夠訓練出比Skip-Toughts和FastSent等無監督方法更好的sentences embedding,在2017年達到state-of-the-art,程式碼見https://github.com/facebookresearch/InferSent
4. 我全都要:Universal Sentence Encoder
2018年發表的論文 Universal Sentence Encoder 在前人研究的基礎上, 綜合利用無監督訓練資料和有監督訓練資料 ,進行多工訓練,從而學習一個通用的句子編碼器。無監督訓練資料包括問答(QA)型網頁和論壇,Wikipedia, web news,有監督訓練資料為 SNLI 。多工模型設計如下圖所示,其中灰色的encoder為共享引數的句子編碼器。
論文對比了 DAN 和 Transfomer 這兩種編碼器。得出如下結論:
- Transformer 模型在各種任務上的表現都優於簡單的 DAN 模型,且在處理短句子時只稍慢一些。
- DAN模型也能具有很不錯的表現,並且相較於Transformer模型,訓練時間和記憶體的開銷都更小,尤其是當句子較長時。
更詳細的介紹可以參考論文作者的部落格 Google AI Blog (中文版) 。
5. 總結
- 基於監督學習方法學習sentence embeddings可以歸納為兩個步驟:
- 第一步選擇監督訓練資料,設計相應的包含句子編碼器Encoder的模型框架;
- 第二步選擇(設計)具體的句子編碼器,包括DAN、基於LSTM、基於CNN和Transformer等。
- Sentence Embedding的質量往往由訓練資料和Encoder共同決定。Encoder不一定是越複雜越好,需要依據下游任務、計算資源、時間開銷等多方面因素綜合考慮。
我的github倉庫 https://github.com/llhthinker/NLP-Papers 包含了近年來深度學習在NLP各領域應用的優秀論文、程式碼資源以及論文筆記,歡迎大家star~
References
- Wieting et al. - 2015 - Towards universal paraphrastic sentence embeddings
- Conneau et al. - 2017 - Supervised Learning of Universal Sentence Representations from Natural Language Inference Data
- Cer et al. - 2018 - Universal Sentence Encoder
- Google AI - 2018 - Advances in Semantic Textual Similarity