作者丨張琨
學校丨中國科學技術大學博士生
研究方向丨自然語言處理
論文動機
自然語言理解(Natural Language Inference)主要是用於分析兩個句子(前提句 p,假設句 h)之間的語意推理關係, 包括 Entailment(可以從前提句的語意推理出假設句的語意),Contradiction(不能從前提句的語意推理出假設句的語意),Neutral(無法確定是否能從前提句推理出假設句)。
在真實條件下,自然語言句子的語意時高度依賴情境資訊的,相同的句子可能會因為情境資訊的不同而表達出不同的語意資訊,這也是自然語言句子本身語意的模糊性、二義性等特點導致的,就如下邊的例子:
如果單純看兩個句子,我們可能會因為 outside market 而推理出天氣是 sunny day,但實際上這也不是能夠十分明確的。而加入了情境資訊的話,情況就會有所不同,例如圖 A,那麼兩個句子之間的語意關係就是 Entailment,但換成圖 B 的時候,因為時間變成了晚上,那麼兩個句子之間的語意關係就成了 Contradiction。
而目前大多數的方法在對句子語意進行建模的時候都假設句子是獨立於情境的,這明顯是不夠充分的,因此,本文從這個角度出發,提出了將影象資訊融入到句子語意建模過程中,從而增強句子的語意理解,得到更加準確全面的語意表示。
模型
首先是完整的模型圖:
從整體上看,模型是一個 3-level 的結構,在每一層的結構中包含了 5 個元件。
-
Input Layer:整個模型的輸入層,包括兩個句子的詞的輸入,影象的特徵輸入;
-
Embedding Layer:從不同的粒度對句子中的資訊進行表示,分別是詞級別,短語級別,句子級別;
-
Image-Enhanced Unit Layer:影象增強單元層,利用影象資訊對句子語意表示進行增強,從而得到句子語意更加全面準確的表示;
-
Matching Layer:對得到的句子語意表示進行匹配操作;
-
Classification Layer:對輸入的兩個句子進行語意推理關係分類。
首先對輸入層進行簡單描述,輸入的資訊包含影象和文字,針對影象,作者選擇了 VGG19 模型進行特徵抽取,選擇最後一個摺積層的結果作為影象的特徵表示。
針對文字,作者利用了預訓練的詞向量(glove 840b),字元級別的 embedding,以及一些人工特徵的拼接,作為文字中每個詞的表示。接下來將對模型的幾個結構進行詳細分析。
Embedding Layer
和傳統的直接拿 embedding 好的詞向量作為模型的最終輸入不同的是,本文首先從不同粒度對模型輸入進行處理。這裡為什麼要這麼處理呢?
因為本文最終是要透過影象資訊對句子的語意表示進行增強,而影象包含的資訊要遠遠高於文字,並且它可能對應到文字的不同粒度上,可能是某個詞,也可能是某個短語。另一方面,對文字的多粒度建模可以更好地對句子語意進行分析。
因此,本文首先對原始的詞向量進行一維摺積(使用 unigram, bigram, trigram),得到了句子的短語表示。需要說明的是,這裡的短語並不是真正的短語,只是一個區域性的特徵。在此基礎上,使用了 GRU 對短語級別的表示進行處理,這樣就知道了一個全域性資訊,這裡作者稱之為句子級別的表示。
在接下來的內容中,以詞級別的作為例子,剩下的兩個粒度資訊使用的是相同的結構。
Image-Enhanced Unit
首先是該結構的詳細圖解:
該結構的輸入為三部分,一個附加的情境資訊 ,影象的特徵表示 ,以及文字序列的表示 ,這裡使用的詞級別的前提句的序串列示矩陣作為例子。
首先要做的就是利用影象的特徵表示來從另一個角度表示文字中的每個詞,很自然的,co-attention 方法是首選:
透過該操作,模型就可以利用影象中的相關資訊對文字的語意表示進行增強,相當於從另外一個角度對每個詞進行了表示,那麼接下來最簡單的方法就是把兩個結果拼接起來,但這樣會讓模型的引數規模變大,並且是否可以將來自圖 像的資訊表示和來自文字的資訊表示同等對待也值得思考。
在本文中,作者仿照 GRU 的結構,對這兩部分的表示進行了一個融合,從而更好的利用這部分的資訊:
融合之後就得到了每個詞的增強表示,接下來需要做的就是如何將這些資訊融合,得到句子的語意表示向量。
這裡作者使用了 self-attention 機制,並同時使用了最大池化操作(max-pooling),這樣對句子語意表示重要的資訊會被選 擇出來,同時對語意表示最重要的資訊也會被選擇出來進行重點突出,透過這種方式,就可以得到句子語意全面的一個表示:
從公式中可以看出,作者最後將這三部分內容拼接起來,作為最終的句子的語意表示向量。同樣的操作也會放到假設句子上,這樣就得到了兩個句子的增強語意表示。需要強調的是這裡的 v,這是一個被稱之為 inference vector 的向 量,會在下一部分詳細分析。
Matching
這部分就相對比較簡單了,將得到的兩個句子的語意向量表示進行啟髮式的匹配操作。
這裡,直接拼接可以保留所有的資訊,相減操作可以指明推斷方向,同時是一種最樸素的差異判斷方法,而點乘可以認為是一種最簡單的相似度計算方法,透過這樣的操作,就可以得到兩個句子之間推理關係的一個向量表示。
正如上一節所描述的,IEU 單元需要有這樣一個 inference vector 作為輸入,這裡作者是將上一層的 inference vector 送給當前層,這樣模型在短語級別推理時會指導詞級別做出分類的理由,不同粒度之間也建立了資訊流動,從而隨著粒度的加深,模型也能夠更加準確的進行語意推理關係的分析和判斷。
最後就是分類層了,透過一個簡單的分類器進行分類就可以了。因為這是一個三層的結構,每一層都會分類,因此作者在訓練時要求模型每一層都能分對,也就是損失函式中有這三層的交叉熵損失函式。而在預測的時候使用的是最後 一層的輸出結果。
以上就是模型的整體結構,一個多粒度的影象增強結構,還是很有意思的。
實驗結果
還是首先先上實驗結果:
從實驗結果上看,該模型在完整的測試集上,以及更加嚴格的測試集上都能取得不錯的效果,這也說明瞭模型的有效性,接下來是模型結構的有效性測試。
從這個結果上看,只用單層的話,能看到的資訊越多,效果越好,因此我們看到粒度越大,效果越好,並且只用詞級別的表示的話,因為完全不知道句子的結構,所以結果和隨機猜沒有太大差別;當考慮的粒度越多時模型的效果也越 好,這也說明瞭多粒度的考慮確實有助於對句子語意的全面理解。
不過個人感覺這部分應該加一個如果沒有影象資訊的話,結果會怎麼樣,相當於是對影象有效性的一個檢測,這樣實驗部分就更加全面了。
總結
本文透過將影象資訊引入到自然語言推理中,利用額外補充的資訊對句子語意進行增強,從而更加準確地理解句子語意。思路非常新穎,而且這種多模態的建模方法個人感覺也是未來一個比較重要的研究方向。當然本文中也有一些地方還可以改進,例如影象的利用、影象的有效性分析等都值得思考。還是一篇很不錯的文章。
朋友會在“發現-看一看”看到你“在看”的內容