1. 程式人生 > >深度學習----NLP-ELMO演算法模型解剖

深度學習----NLP-ELMO演算法模型解剖

文章目錄


論文地址:https://arxiv.org/pdf/1802.05365.pdf

簡介

        

~~~~~~~~ 作者認為好的詞表徵模型應該同時兼顧兩個問題:一是詞語用法在語義和語法上的複雜特點;二是隨著語言環境的改變,這些用法也應該隨之改變。作者提出了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 語言模型

(1) forward language model(前向語言模型) and (2)backword language model

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

         ~~~~~~~~ 簡單來說,ELMo模型以雙向語言模型為基礎,用各層之間線性組合來表示詞向量的一種方式。下文中會詳細介紹什麼是雙向語言模型和為什麼以及如何進行線性組合。

(2)biLM(bidirectional language model)

biLM則是整合了上面的兩種語言模型,目標函式為最大化下面的log似然函式:
在這裡插入圖片描述

具體來講如何使用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功能有差異:低層能夠提取語法方面的資訊;高層擅於捕捉語義特徵。

過程圖

在這裡插入圖片描述

線性組合

(1)哪些是需要線性組合的

對於迴圈神經網路,每一層都是有輸出的(上文的h向量)。我們要線性組合是就是上述的所有h向量。

(2)為什麼要線性組合

文中提到:高層的h更加容易捕捉獨立與文章的詞義資訊(the higher level LSTM states capture context-depend aspects of word meaning),底層的h更容易捕捉語法資訊(while lower level states model aspects of syntax)。也就是說,不同層次的輸出所對應的特徵不一樣,組合起來更能表達整個意思。

(3)如何線性組合。

在這裡插入圖片描述
其中s為權重,計算方法:softmax normalized。γbiao表示整個權重。

總結

         ~~~~~~~~ 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。