作者丨張琨
學校丨中國科學技術大學博士生
研究方向丨自然語言處理
論文動機
語意理解與語意表徵一直是自然語言理解中基礎但十分關鍵的一個內容,得益於大規模的資料和先進的深度學習技術,機器在具體的任務上的表現越來越接近人類表現,這其中註意力機制(Attention Mechanism)扮演著一個不可或缺的角色,它可以幫助模型選擇出句子中對語意表達最重要的資訊,從而生成一種更好地語意表示向量,但是大多數的方法都是一次性地選擇出所有重要的資訊,該方法明顯是不夠合理的。
事實上,人在閱讀的時候,會根據已學習到的資訊去動態選擇需要關註的內容。更具體的,認知心理學實驗發現人在閱讀的時候有兩個特點:1)人對句子中的詞序其實並沒有很敏感,即使打亂順序我們依然能夠理解;2)人在閱讀時傾向於閱讀多遍關鍵資訊,從而實現對句子語意的精確理解,如下圖的例子:
左圖是利用眼球追蹤儀得到的註意力分佈,可以看到有些詞被反覆閱讀,而有些詞並沒有被閱讀到。右圖雖然詞序是亂的,但是我們可以利用豐富的先驗知識自動糾正這種錯誤,從而理解句子要表達的語意。
基於以上的兩個現象,本文提出了一種 Dynamic Re-read 機制,透過對重點內容的自動選擇和反覆閱讀,從而實現對語意的精確理解。
模型
首先是模型框架:
模型可以大致分為三個模組:
Input Embedding:利用充足的特徵資訊對輸入的每個詞和每個句子進行編碼;
Dynamic Re-read Mechanism:每一步只關註一個最重要的詞,並且反覆對重要的內容進行理解;
Label Prediction:對輸入的兩個句子之際的關係進行分類。
接下來,文章從這三個方面對整個模型進行詳細分析。
Input Embedding
對詞的編碼是一個常規操作,文字使用了預訓練的詞向量(glove 840d),字元級別的 embedding,以及一些人工特徵,然後將其拼接起來,為了更好地表示每個詞的語意資訊,本文將其透過一個兩層的高速網路(Highway Network),最終得到每個詞的語意表示和。
眾所周知,人類擁有豐富的先驗知識,因此可以利用這些知識直接選擇出句子中對語意表示重要的詞,但這對模型而言是非常難的,因此,模型首先要做的就是對整個句子的全面理解,盡可能多地瞭解句子資訊,這樣才能為更好地理 解句子語意奠定基礎。
為了實現這個目的,本文設計了一種修改版的 Stack-RNN,它將 (l-1) 層的輸入和輸出拼接起來,作為 l 層的輸入,透過這種類殘差的結構,模型就能夠保留所有的資訊,該過程可以形式化為:
其中,表示 l 層的 RNN,這裡使用的 GRU 作為 RNN 的基本單元。接下來要做的就是如何壓縮這些詞的向量表示,從全域性的角度對句子語意進行向量表示。
得益於自註意力機制(Self-attention),本文在 Stack-RNN 的最後輸出上做 self-attention,從而抽取對語意表示重要的資訊,將這些資訊加權求和,得到句子的全域性語意表示,在文中,作者稱之為 original sentence representation,該過程可以由如下表示:
Dynamic Re-read Mechanism
該模組主要是受人在閱讀時的習慣啟發而設計出來的,人在閱讀時:1)人對句子中的詞序其實並沒有很敏感,即使打亂順序我們依然能夠理解;2)人在閱讀時傾向於閱讀多遍關鍵資訊,從而實現對句子語意的精確理解。
因此該模組要實現的標的就是如何根據已學習到的知識在每一步選擇一個重要的詞進行理解,以及這些重要的詞該如何處理。首先,整體的過程可以形式化為:
即先透過一個選擇函式,在整個輸入序列中選出第 t 步的輸入,然後將該輸入送給一個 GRU,而最後重要資訊表示向量使用的是 GRU 的最後一個輸出狀態,因為 GRU 的在每個時刻的輸入是動態變化的,因此作者將其稱之為 Dynamic。
從該公式可以看出選擇函式需要的輸入有三個:a 句子的整個序列,動態 RNN 的前一個時刻的隱層狀態,b 句子的全域性語意表示,因為該模型針對的是句子語意匹配任務,因此作者將 b 句子的全域性語意表示作為一個額外的 context 資訊,這樣模型就能更好的選擇出符合背景關係的語意資訊。
針對選擇函式,作者利用了註意力機制來實現選擇過程:
相當於透過註意力機制在整個序列上計算出來當前時刻的重要程度分佈,然後選擇最大的權值對應的詞,將這個詞作為當前時刻的輸入,然後將其送給 GRU。
但是,該過程有一個問題,最後一個公式選擇出索引的操作是不可導的,這裡作者做了一個 trick,對 softmax 函式加了一個任意大的常數 β,這樣權值最大的就趨近於 1 了,而其他的權值就趨近於 0 了。
透過這種近似的方法,實現了最後的選擇操作,並保證可導。因此,上式可以修改為:
這就完成了整個動態選擇的過程。
Label Prediction
經過前兩個模組,模型就生成了全域性語意表示和區域性重要表示,接下來作者透過啟髮式的拼接操作來整合這些資訊,具體可以透過如下公式表示:
這裡是分別使用了不同的語意表示進行分類,為了是結果更準確,魯棒性更好,作者設計了一個簡單的加權方式將這兩個結果進行融合,從而最終進行分類。
以上就是模型的整體結構。
該模型的創新點主要集中在 Dynamic Re-read 機制的設計上,作者透過模仿人的閱讀習慣,每次只選擇一個重要的詞,然後對這些重要的詞進行反覆閱讀,從而實現對句子語意的準確理解。
實驗結果
首先是實驗結果圖:
作者在兩個任務,三個資料集上進行了測試,從實驗結果上看,模型取得了非常不錯的效果。同時為了驗證模型的有效性,作者還對每個模組進行了驗證,從結果上看,這其中最重要的還是全域性的語意表示,重要資訊的區域性表示是在 最好的結果上進行了提升,其重要程度要弱於全域性語意表示。
個人推測人在閱讀時可以利用豐富的先驗知識去直接挑選重要資訊,而這對模型來說就有些困難了,他需要首先做的是對句子資訊的整體把握,否則很難取得很好的效果。如果單純只挑重要的資訊的話,模型很難對句子語意有一個全面的表達。所以全域性的語意表示對模型而言還是非常重要的。
為了更好地展示模型的能力,作者同時也進行了一些 case study,如下圖:
從結果上看,模型確實選擇出了非常重要的詞,但同時模型也在重覆這些詞,有時候甚至只重覆一個詞,最終導致模型得出錯誤的結論,這可能跟動態選擇的過程是一個非監督的過程有關,這點還是值得仔細思考的。
總結
本文透過利用人的閱讀習慣,將註意力機制一次性選擇所有重要資訊的機制修改為根據背景關係動態選擇重要的資訊,並透過全域性的表示和區域性的表示對句子語意進行更全面的理解表示,是一個非常有意思的工作。按照作者的思路,在相關的領域,例如 semantic matching, Visual Question Answering 等方面都可以進行一些嘗試,這是一個很值得研究的工作。