1. 程式人生 > >將句子表示為向量(下):基於監督學習的句子表示學習(sentence embedding)

將句子表示為向量(下):基於監督學習的句子表示學習(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\),具體如下:

  1. 詞向量平均;
  2. 詞向量平均後通過一個線性層;
  3. DAN模型:詞向量平均後通過多層帶非線性函數的全連接層;
  4. Simple RNN,取最後一個隱狀態向量;
  5. identity-RNN (iRNN), 一種特殊的simple RNN,其weight矩陣初始化為單位矩陣,bias初始化為0向量,激活函數為恒等函數,最終的句子編碼向量為最後一個隱狀態向量除以句子中詞的個數。當正則化程度很高時(模型參數幾乎不更新),iRNN將變成模型1(詞向量平均),不同的是iRNN能夠考慮詞序,有希望能夠比模型1效果好;
  6. 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種不同的句子編碼器,包括:

  1. GRU,取最後一個隱狀態

  2. LSTM,取最後一個隱狀態

  3. BiGRU,前向GRU與反向GRU最後一個隱狀態的連結

  4. BiLSTM+mean pooling

  5. BiLSTM+max pooling

  6. 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個表示後進行連結作為最終的句子表示。

  7. 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

  1. Wieting et al. - 2015 - Towards universal paraphrastic sentence embeddings
  2. Conneau et al. - 2017 - Supervised Learning of Universal Sentence Representations from Natural Language Inference Data
  3. Cer et al. - 2018 - Universal Sentence Encoder
  4. Google AI - 2018 - Advances in Semantic Textual Similarity

將句子表示為向量(下):基於監督學習的句子表示學習(sentence embedding)