ELMo算法

這篇介紹一下ELMo算法(論文)。按道理應該加入前面的《關於句子embedding的一些工作簡介》系列,但是嚴格來講,只能說它通過自己產生的word embedding來影響了句子embedding, 所以乾脆另寫一篇吧。

Introduction

作者認爲好的詞表徵模型應該同時兼顧兩個問題:一是詞語用法在語義和語法上的複雜特點;二是隨着語言環境的改變,這些用法也應該隨之改變。作者提出了deep contextualized word representation 方法來解決以上兩個問題。

這種算法的特點是:每一個詞語的表徵都是整個輸入語句的函數。具體做法就是先在大語料上以language model爲目標訓練出bidirectional LSTM模型,然後利用LSTM產生詞語的表徵。ELMo故而得名(Embeddings from Language Models)。爲了應用在下游的NLP任務中,一般先利用下游任務的語料庫(注意這裏忽略掉label)進行language model的微調,這種微調相當於一種domain transfer; 然後才利用label的信息進行supervised learning。

ELMo表徵是“深”的,就是說它們是biLM的所有層的內部表徵的函數。這樣做的好處是能夠產生豐富的詞語表徵。高層的LSTM的狀態可以捕捉詞語意義中和語境相關的那方面的特徵(比如可以用來做語義的消歧),而低層的LSTM可以找到語法方面的特徵(比如可以做詞性標註)。如果把它們結合在一起,在下游的NLP任務中會體現優勢。

Bidirectional language models

ELMo顧名思義是從Language Models得來的embeddings,確切的說是來自於Bidirectional language models。具體可以表示爲:
這裏寫圖片描述

這裏寫圖片描述
這裏的(t1,t2,...,tN)(t1,t2,...,tN)是一系列的tokens
作爲語言模型可能有不同的表達方法,最經典的方法是利用多層的LSTM,ELMo的語言模型也採取了這種方式。所以這個Bidirectional LM由stacked bidirectional LSTM來表示。

假設輸入是token的表示xLMkxkLM

log likelihood表達如下:
這裏寫圖片描述

這裏的ΘxΘx代表softmax layer的參數。

ELMo

對於每一個token,一個L層的biLM要計算出共2L+12L+1個表徵:
這裏寫圖片描述

這裏hLMk,jhk,jLM時,同時包括兩個方向的h。

在下游的任務中, ELMo把所有層的R壓縮在一起形成一個單獨的vector。(在最簡單的情況下,可以只保留最後一層的hLMk,Lhk,LLM。)
這裏寫圖片描述

具體來講如何使用ElMo產生的表徵呢?對於一個supervised NLP任務,可以分以下三步:

  1. 產生pre-trained biLM模型。模型由兩層bi-LSTM組成,之間用residual connection連接起來。
  2. 在任務語料上(注意是語料,忽略label)fine tuning上一步得到的biLM模型。可以把這一步看爲biLM的domain transfer。
  3. 利用ELMo的word embedding來對任務進行訓練。通常的做法是把它們作爲輸入加到已有的模型中,一般能夠明顯的提高原模型的表現。

印象中太深的NLP方面的模型基本沒有,這和Computer Vision領域非常不一樣。 當然這也是所解決問題的本質決定: Image的特徵提取在人腦裏就是從低階到高階的過程,深層網絡有助於高級特徵的實現。對於語言來講很難定義這樣的一個過程,這篇文章的兩層biLM加residual connection的架構比較少見(Google的transformor是多層網絡+residual connection一個例子)。文章認爲低層和高層的LSTM功能有差異:低層能夠提取語法方面的信息;高層擅於捕捉語義特徵。

Evaluation and Analysis

效果
先看一下在QA,Textual entailment,Semanic role labeling, Coreference resolution, NER, 和 Sentiment analysis上的表現。
這裏寫圖片描述

和state of art比基本上每個任務都有明顯的改善。表中的OUR BASELINE在論文中有詳細介紹,它指的是作者選定的某些已有的模型。ELMo+BASELINE指的是作者把ELMo的word representation作爲輸入提供給選定的模型。這樣我們可以清楚的比較在使用和不使用ELMo詞嵌入時的效果。

多層和最後一層
公式(1)用各層表徵的疊加來代表相應位置的向量,作者在下表中比較了僅僅使用最後一層的效果。
這裏寫圖片描述
顯然多層的疊加效果好於僅使用最後的一層。
最後一列裏的λλ代表的是網絡參數regularization的大小。結果說明合適的regularization有好處。

存在於輸入層和輸出層
其實ELMo不僅可以作爲下游模型的輸入,也可以直接提供給下游模型的輸出層。
這裏寫圖片描述
上表說明有時候同時提供給下游模型的輸入和輸出層效果更好。

biLM捕捉到的詞語信息
ELMo提高了模型的效果,這說明它產生的word vectors捕捉到其他的word vectors沒有的信息。直覺上來講,biLM一定能夠根據context區別詞語的用法。下表比較了Glove和biLM在play這個多義詞上的解釋。
這裏寫圖片描述
對於Glove來說,play的近義詞同時涵蓋了不同的語法上的用法:動詞(playing, played), 名詞(players,game)。
但是biLM能夠同時區分語法和語義:第一個例子裏的play名詞,表示擊球,第二個例子中play也是名詞,表示表演。顯然biLM能夠在表示詞語嵌入時考慮到context的信息。

總結

ELMo在處理很多NLP下游任務中表現非常優異。但是我想這跟它集中在產生更好的詞語級別的embedding是有關係的。過去介紹到的一些其他的算法,比如Quick thoughts也是利用了語言模型作爲句子的encoder;還有InferSent使用biLSTM作爲encoder。和ELMo相比,它們都顯得“野心”太大:它們爲下游的NLP任務提供了句子embedding的解決方案:即直接利用它們的pretrained encoder,最終的預測無非是加上softmax的classifier。
對比而言ELMo要單純很多,它只提供了word級別的解決方案:利用它的pretrained biLM來產生word embedding,然後提供給下游的模型。這裏的模型往往是sequence model,其效果已經在相應的NLP任務上得到驗證。這時有了新的兼具語法語義及環境特徵的word embedding的加持,難怪效果會更好。更不要說,ELMo還在任務語料庫上小心翼翼的再進行過一輪微調,更是保證了對新domain的adaptation。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章