Introduction

本文出自韓國 Naver Corporation 和 Seoul National University ,工作定義在句子匹配任務上。Sentence Matching的關鍵之處在於如何表示句子語義(目前感覺就是上下文信息和類似 POS 的特徵信息,不能說是語義),如何理解句子之間的語義關係。查看相關工作可以得到,Attention 演算法在刻畫兩個句子語義關係和對齊句子成分方面有很好的效果,但是也有不足之處。Attention 機制僅使用求和操作,這樣來自於上層的特徵信息就會被破壞,不能完整保留下來。作者借鑒了圖像識別中的DenseNet的密集連接操作,旨在更好地利用原始特徵信息。

本文提出Densely-connected co-attentive RNN,密集連接stack RNN,這樣從最底層到最頂層一直保留原始信息,在stack RNN的每一個block中,用co-attention的方式得到兩個句子之間的交互信息,能量函數用的最簡單的算cos距離。因為stack RNN會參數量會迅速增加,影響模型訓練,因此用自編碼器進行壓縮表示。

模型目前在SNLI的排名第一,集成之後,在測試集上破了90%正確率的大關。過去應該也沒有人認為句子匹配任務需要把網路做深,當然現在也是,效果沒提升多少,我感覺這只是個嘗試,企業就喜歡這種簡單粗暴不考慮計算力的模型。

Model

The Whole Model

下面對模型詳細介紹:模型整體不複雜,但是我不理解的就是自編碼器選擇的位置和層數為什麼是5,文中也沒有指出來,也沒有實驗。

由上圖可以看出,整個模型的輸入輸出,從左到右。

  • 最左邊的淺綠色是對前提和假設的Embedding;
  • 之後過5層的Stack RNN ,中間部分是如何運算的?有哪些參數?灰色塊為什麼只有兩個?這些問題在下一張圖詳細介紹;
  • 在Stack RNN之後是分別對前提和假設進行pooling,映射到同一個維度,得到兩者的new representation;
  • 藍色塊的作用是對前提和假設做並、相加和相減等運算,一定程度上得到它們之間的距離和相似程度;
  • 黃色塊是最終的輸出,與藍色塊之間是全連接。

Details in model

Overview

Embedding Layer

詞向量的特徵包括四項:

  1. 與模型一起訓練的Glove詞向量: e^{tr}_{p_i}=E^{tr}(p_i) ?;
  2. 直接拿來用的,保持不變的Glove詞向量: ? e^{fix}_{p_i}=E^{fix}(p_i)
  3. 用CNN得到的字向量: ? c_{p_i}=CharConv(p_i)
  4. Match Flag特徵:這是一個0/1特徵,表示該詞是否在另一句話中出現。

最終的表示是四部分串在一起: p^w_i = [ e^{tr}_{p_i}, e^{fix}_{p_i}, c_{p_i}, f_{p_i} ] ?。

Densely connected recurrent Co-attentive networks

這部分非常重要,也就是圖Overview中的虛線部分。

藍色的RNN分別得到前提的表示?和假設的表示?,然後就是計算Attention:

  1. 能量函數e選用的暴力的cos函數: e_{i,j}=cos(h_{p_i},h_{q_i}) ?;

2. 然後做soft Max得到注意力權重? : alpha_{i,j}=frac{exp(e_{i,j})}{sum ^J_{k=1}{exp(e_{i,k})}} ?;

3. 得到權重化之後的表示 a_{p_i}=sum ^J_{j=1} {alpha _{i,j}  h_{q_j}} ?。

在得到a之後,作者並沒有像之前的工作一樣相加。而是部分借鑒了DenseNet的思想,將本層輸入保留,與h , aconcat[這部分並不像圖像識別的DenseNet,把每層之間都做了連接,所以並沒有保留原始的輸出]。

下面是三種得到Stack RNN隱層狀態的方式:

  1. ? h^l_t=H_l({x^l_t,h^l_{t-1}}), x^l_{t}=h^{l-1}_t —RNN
  2. h^l_t=H_l({x^l_t,h^l_{t-1}}),x^l_t=h^{l-1}_t+x^{l-1}_t ?—ResNet
  3. ? h^l_t=H_l({x^l_t,h^l_{t-1}}),x^l_t=[h^{l-1}_t,x^{l-1}_t] —DenseNet

最終作者的結合方式是這樣: x^l_t=[h^{l-1}_t;a^{l-1}_t;x^{l-1}_t] ?,權重化表示a直接作為特徵串在了中間。

AutoEncoder

Stack RNN 這樣的結構必然會帶來參數急速增長的問題,為瞭解決這個問題,作者使用了AutoEncoder,但是並沒有指出用哪種自編碼器和為什麼只用2次,實驗中也沒有指明。但是,自編碼器無疑是可以減少參數量【該模塊的輸出是自編碼器的compressed representation,此維度是超參】,在損失盡量小的情況下壓縮參數。

Pooling Layer

這部分沒啥,Max Pooling得到維度相同的P、Q表示。

Interaction Layer

最後對P、Q的表示做拼接、相加、相減、絕對值的運算,表示句子之間的匹配: v=[p;q;p+q,p-q,|p-q|] ? ,然後全連接和soft Max得到P、Q之間的關係。

Experiments

Results in SNLI

這個模型Ensemble之後的結果目前是SNLI的第一,當然BERT的效果應該是比它好,下圖是在MultiNLI和Quora數據集上的結果,也算可以了,比BERT少2-3個點。

Results in MultiNLI and Quora

最後是在SNLI上的Ablation study,結果發現任務相關的詞向量、Attention和dense-connect對模型的影響比較大。

Ablation Study in SNLI

文中還最後舉了兩個例子,一個蘊含一個矛盾,指出DRCN五層後的找到的詞比ResNet更準確,圖有點長,還是放上吧。

Visualization of attentive weights on the entailment example.

The premise is 「two bicyclists in spandex and helmets in a race pedaling uphill."

The hypothesis is 「A pair of humans are riding their bicycle with tight clothing, competing with each other."

Visualization of attentive weights on the contradiction example.

The premise is 「Several men in front of a white building.」

The hypothesis is 「Several people in front of a gray building.".

Conclusion

這篇文章主要集中在句子匹配任務上

  1. 借鑒ResNet和DenseNet,運用到stack RNN中;
  2. 將注意力權值作為一個特徵並在h, x的中間,做法很新穎;
  3. 利用AutoEncoder來壓縮向量,減少參數迅速增加的壓力。

References

  1. Seonhoon Kim et al. Semantic Sentence Matching with Densely-connected Recurrent and Co-attentive Information.arXiv: 1805.11360
  2. Yichen Gong, Heng Luo, and Jian Zhang. Natural language inference over interaction space. In International Conference on Learning Representations, 2018.
  3. Gao Huang, Zhuang Liu, Kilian Q Weinberger, and Laurens vander Maaten. Densely connected convolutional networks. In Proceedings of the IEEE conference on computer vision and pattern recognition, volume 1, page 3, 2017.

推薦閱讀:

相關文章