NLP遷移學習——遷移學習的概念與方法

什麼是遷移學習

1.遷移學習的概念

前百度首席科學家、斯坦福教授吳恩達在2016年的NIPS會議上講到:
未來,真正的人工智能會落在unsupervised learning(無監督學習)和reinforcement learning(強化學習)上,但很明顯,目前這兩個領域的水平與有監督的深度學習還無法相比,而遷移學習正是一切還沒成熟前的一個折中處理方法。事實上,遷移學習會是繼監督學習之後,機器學習在產業界取得成功的下一個關鍵驅動力。
遷移學習的研究來源於一個觀測:人類可以將以前學到的知識應用於解決新的問題,從而提高解決問題的效率或取得更好的效果。因此遷移學習被賦予這樣一個任務:從以前的任務當中去學習知識或經驗,並應用於新的任務當中。換句話說,遷移學習的目的是從一個或源任務(source tasks)中抽取知識、經驗,然後應用於 一個有相關性的目標領域(target domain)中去。

2.遷移學習的優點

  • 遷移學習需要更少的訓練數據,能更有效地利用現有數據
  • 通過遷移學習的模型泛化能力更好
  • 遷移學習訓練過程更穩定,更容易調試,增加模型的魯棒性
  • 遷移學習使深度學習更容易
  • 遷移學習可以實現定製化

總而言之,遷移學習是一種知識(權重)共享技術,它減少了構建深度學習模型所需的訓練數據、計算能力和工程人才的數量。
Ps. 結合CV中的遷移學習,即在大型通用域數據集上(ImageNet)進行預訓練(pre-training)得到數據集中表 徵所有圖片的初、中、高級特徵,微調(fine-tunning)就是在小型特定域數據集上(如某家淘寶網店自己的商 品圖片數據集)對預訓練模型進行再訓練,組合出更高級、更抽象的特徵,從而達到任務定製的效果。

NLP中的詞向量

在這裏插入圖片描述

1.什麼是詞向量、詞嵌入

在NLP裏,最細粒度的表示就是詞語,詞語可以組成句子,句子再構成段落、篇章和文檔。但是計算機並不認識這些詞語,所以我們需要對以詞彙爲代表的自然語言進行數學上的表徵。簡單來說,我們需要將詞彙轉化爲計算機可識別的數值形式(詞向量),這種轉化和表徵方式目前主要有兩種,一種是傳統機器學習中的one-hot編碼方式,另一種則是基於神經網絡的詞嵌入技術。詞嵌入是一種將各個單詞在預定的向量空間中表示爲實值向量的一類技術。每個單詞被映射成一個向量(初始隨機化),並且這個向量可以通過神經網絡的方式來學習更新。

2.詞嵌入與one-hot編碼的區別

  • one-hot編碼是最簡單的詞向量表示方法。也就是從很大的詞庫corpus裏選V個頻率最高的詞(忽略其他的),V一般比較大,比如V=10萬,固定這些詞的順序,然後每個詞就可以用一個V維的稀疏向量表示了,每個向量只有一個位置上的元素是1,其餘位置的元素都是0(每個單詞都是茫茫0海中的一個1)。one-hot方式其實就是簡單的直接映射,所以缺點就是高維、稀疏,這種形式的詞向量容易造成維數災難,並且不能很好地表示詞彙與詞彙之間的相似性。
  • 詞嵌入是一種分佈式詞向量表示方法。詞嵌入的基本思想就是將詞彙表中的每個單詞表示爲一個特徵向量,這樣的一種詞彙表示方式就像是將詞彙嵌入到一種數學空間(特徵空間)裏面,所以叫做詞嵌入。通過詞嵌入得到的詞向量,向量中的每個元素都可以理解成一種特徵,因而每個單詞都可以看成是由N個(假設詞向量是N維)特徵通過不同的貢獻得到的,所以這種方式是分佈式的。和one-hot相比,詞嵌入是一種低維、密集的詞向量表徵方法,更重要的是,詞嵌入得到的詞向量能夠通過特徵空間的距離遠近來計算詞彙之間的相似性。

3.如何進行詞嵌入

那如何才能將詞彙表表徵成特徵向量形式呢?這需要通過神經網絡進行訓練,訓練得到的網絡權重形成的向量就是我們最終需要的詞向量。word2vec就是最典型的詞嵌入技術。word2vec作爲現代NLP的核心思想和技術之一,有着非常廣泛的影響。word2vec通常有兩種模型,一種是根據上下文來預測中間詞的連續詞袋模型CBOW(下左圖),另一種是根據中間詞來預測上下文的skip-gram模型(下右圖)。
在這裏插入圖片描述

1)CBOW模型

在這裏插入圖片描述
CBOW模型的應用場景是要根據上下文預測中間詞,所以輸入便是上下文詞,當然原始的單詞是無法作爲輸入的,這裏的輸入仍然是每個詞彙的one-hot向量,輸出Y爲給定詞彙表中每個單詞作爲目標詞的概率。可見CBOW模型結構是一種普通的神經網絡結構。主要包括輸入層、中間隱藏層和最後的輸出層。我們以輸入輸出樣本(Context(w),w)爲例對CBOW模型的三個網絡層進行簡單說明,其中Context(w)由前後各c個詞構成。

在這裏插入圖片描述
CBOW目標函數:
在這裏插入圖片描述

2)skip-gram模型

在這裏插入圖片描述
skip-gram模型的應用場景是要根據中間詞預測上下文詞,所以輸入X是任意單詞,輸出Y爲給定詞彙表中每個詞作爲上下文詞的概率。

在這裏插入圖片描述
skip-gram目標函數:
在這裏插入圖片描述

長期以來,詞向量一直是自然語言處理的核心表徵技術。預訓練的詞向量給NLP帶來了很大的提高。2013年穀歌提出的word2vec憑藉其效率和易用性在硬件加速慢很多且深度學習模型還沒有得到廣泛支持的時代得到採用。通過word2vec和Glove等算法對大量未標記數據進行預處理的詞嵌入被用於初始化神經網絡的第一層,其它層隨後在特定任務的數據上進行訓練。在大多數訓練數據有限的任務中,這種方法幫助提高了2到3個百分點。
儘管這些預訓練的詞嵌入頗具影響力,但它們也有侷限:它們僅包含模型第一層的先驗知識——網絡的其餘部分還需要從頭開始訓練。此外,使用詞嵌入就像利用僅編碼圖像邊緣信息的預訓練表徵初始化計算機視覺模型:它們在許多任務中都能發揮作用,但是卻無法捕捉到可能發揮更大作用的高層次信息。利用詞向量初始化的模型需要從頭開始學習,不僅是學習消除歧義,還需要學習從詞組成的句子中提取意義。這是語言理解的核心,需要建模語義組合、一詞多義、首語重複、長期依賴、一致性、否定等許多複雜的語言現象。因此,用這些淺層表示初始化的NLP模型仍然需要大量的訓練數據才能獲得良好的性能也就不足爲奇了。
在這裏插入圖片描述

NLP中的語言建模

ELMo、ULMFit、OpenAI GPT和BERT等最新進展的核心是一個關鍵的範式轉變:從僅僅初始化模型的第一層到用分層表示對整個模型進行預處理。如果學習詞向量就像僅學習圖像的邊,那麼這些方法就像學習特徵的完整層次,從邊到形狀,再到高級語義概念。ELMo、ULMFit、OpenAI GPT和BERT等一系列優秀模型爲NLP社區帶來了自然語言處理中的ImageNet,這種任務能允許模型學習語言的高級細微差別。這就類似於ImageNet允許訓練CV模型以學習普遍意義的圖像特徵。同時BERT等這一系列優秀模型也證明了語言模型能爲下游任務捕獲很多與語言相關的屬性,例如長期依賴性關係、層級關係和情感語義。 語言建模的最大優勢在於,訓練數據可以免費從任何文本語料庫獲取,因此幾乎能獲得無限的訓練數據,進而我們可以直接使用文本數據無監督地訓練語言模型,並應用到翻譯、信息抽取等任務中。
在這裏插入圖片描述
一個突出的問題是如何從一個預訓練語言模型將信息遷移到下游任務中。目前主要有兩個範式,一是是否將預訓練語言模型作爲固定的特徵提取器,並將其表徵作爲特徵整合到隨機初始化的模型中(基於特徵的遷移學習);二是是否微調完整的語言模型(基於微調的遷移學習)。後者在計算機視覺CV中很常用,其中訓練時會調整模型的最高層或最高的幾層。由於NLP模型通常更淺,因此相比對應的視覺模型需要不同的微調技術。

1)基於特徵的遷移學習(ELMo)

將訓練好的表示representation作爲固定特徵feature用於任務,從詞向量、句向量、段向量、文本向量都是這樣,ELMo也屬於基於特徵的遷移學習,但遷移後需要重新計算出輸入的表徵。由於本節重點講解基於語言建模的遷移學習,所以在此只對ELMo模型展開詳細描述。
在這裏插入圖片描述
ELMo(Embedding from Language Model)的作者認爲一個好的embedding需要滿足兩個條件:
i)能夠捕捉到語法和語義信息
ii)能夠區分一詞多義的情況
ELMo的各個詞向量表達依賴於輸入句子,主要是基於雙向語言模型來學習詞向量表達。有一個N個單詞的序列(t1,t2,…,tN),對於某一個單詞tk用前向語言模型和後向語言模型分別表達就是p(tk|t1,t2,…,tk-1),p(tk|tk+1,…,tN)。
句子的前向表示爲:
在這裏插入圖片描述
句子的後向表示爲:
在這裏插入圖片描述
對於句子s我們需要最大化每個單詞的前後向表示的概率:
在這裏插入圖片描述
對於整個語料庫而言,最終需要優化的函數就是:
在這裏插入圖片描述
D是語料庫中的句子數,s表示一個句子,在有些任務中還需要加入正則項。前向和後向語言模型可以使用LSTM來實現,也可以用Transformer來做,Transformer有更強的抽取特徵的能力。ELMo採用的是LSTM。

ELMo完整的架構如下圖所示,主要是由char-CNN和雙層Bi-LSTM組成。
在這裏插入圖片描述
i)爲每個單詞生成一個上下文無關(context-independent)的詞向量
• 最左下矩形是單詞‘absurdity’的向量矩陣表示,圖中展示了3個寬度爲2的卷積核,4個寬度爲3的卷積核, 5個寬度爲4的卷積核,共12個卷積,也就生成12個特徵圖(feature map)。(論文中使用的2048個卷積核)
• 然後最大池化每個特徵圖,拼接在一起,生成了一個12維的向量。(論文是2048維)
• 之後又加了兩層highway layers,highway networks是爲了解決神經網絡訓練時的衰退問題提出來的。highway networks借鑑了LSTM的思想,類似cell,可以讓輸入直接傳到下一層,highway有兩個門transformer gate(T) 和carry gate(1-T)。H和T都是非線性變換。
在這裏插入圖片描述
• 經過兩層的非線性變換之後,維度還是2048維,論文中使用了線性映射對其降維,最終每個單詞的維度是 512維。
經過這一步的處理,每一個單詞都會生成一個上下文無關(context-independent)的詞向量,並且由於卷積核有類似於n-gram的作用,不同的單詞也會產生關係,比如“work”和“works”有相同的部分,char-CNN可以捕捉。
ii)使用雙向語言模型生成上下文相關(context-dependent)的詞向量
• 輸入是上一步生成的句子各個單詞的context-independent詞向量
• 雙層的Bi-LSTM,每一層都是雙向的LSTM,每一層都會生成詞向量。黑綠黃代表三層的詞向量。
• ELMo還用到了殘差連接,和highway network一樣是爲了解決神經網絡訓練深度不能太深的問題。
經過學習之後,就得到了各層次的word embedding表示,底層的word embedding會學到語法信息,上層的word embedding會學習到語義信息。

現在ELMo已經學到了單詞在各層的表示,一般情況下會根據具體的任務學習一個線性組合,把各層的word embedding組合使用。最簡單的使用方法可以只用最上面的一層。一個L層的ELMo其實有2L+1個表示,其中包含輸入層(也就是char-CNN的輸出向量),2L個前後向LSTM表示,即:
在這裏插入圖片描述
對於某一個具體任務,對這些embedding計算一個線性加權和
在這裏插入圖片描述

ELMo模型優缺點
優點:

  • 效果好,在大部分任務上都較傳統模型有提升。實驗證實ELMo相比於詞向量,可以更好地捕捉到語法和語義層面的信息。
  • 傳統的預訓練詞向量只能提供一層表徵,而且詞彙量受到限制。ELMo所提供的是character-level的表徵,對詞彙量沒有限制。

缺點:
速度較慢,對每個token編碼都要通過LM計算得出。

2)基於微調的遷移學習(ULM-Fit、OpenAI GPT、BERT)

在這裏插入圖片描述
基於微調的遷移學習方法主要借鑑於CV,就是在預訓練好的模型上加些針對任務的層,再對後幾層進行精調。ULM-Fit、OpenAI GPT和BERT都屬於基於微調的遷移學習方法。下面將分別作出詳細介紹:

ULM-Fit模型

在這裏插入圖片描述
ULMFit是一種有效的NLP遷移學習方法,核心思想是通過精調預訓練的語言模型完成其他NLP任務。論文 中所用的語言模型參考了Merity et al.2017的AWD-LSTM模型,即沒有attention或shortcut的三層LSTM模型。 ULMFit的過程分爲三步:
Step 1:General-domain LM pre-train
i)在Wikitext-103上進行語言模型的預訓練;
ii)預訓練的語料要求:large & capture general properties of language;
iii)預訓練對小數據集十分有效,之後僅有少量樣本就可以使模型泛化。

Step 2:Target task LM fine-tuning
在這裏插入圖片描述
Step 3:Target task classifier fine-tuning
在這裏插入圖片描述
ULM-Fit模型優缺點
優點:
對比其他遷移學習方法(ELMo)更適合以下任務:
• 非英語語言,標籤訓練數據很少
• 只有部分有標籤數據的任務
• 沒有state-of-the-art模型的新NLP任務
缺點:
對於分類和序列標註任務比較容易遷移,對於複雜任務(問答等)需要新的精調方法。

OpenAI GPT模型

在這裏插入圖片描述
OpenAI GPT是一類可遷移到多種NLP任務的,基於Transformer的語言模型。它的基本思想同ULMFit相同,都是儘量再不改變模型結構的情況下將預訓練的語言模型應用到各種任務。不同的是,OpenAI Transformer主張用Transformer結構,而ULMFit中使用的是基於RNN的語言模型。

GPT模型的訓練過程分爲兩步:

在這裏插入圖片描述
在這裏插入圖片描述

OpenAI GPT模型優缺點
優點:
• 循環神經網絡所捕捉到的信息較少,而Transformer可以捕捉到更長範圍的信息。
• 計算速度比循環神經網絡更快,易於並行化。
• Transformer的效果比ELMo和LSTM網絡更好
缺點:
對於某些類型的任務需要對輸入數據的結構作調整。

BERT模型

在這裏插入圖片描述
BERT的全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的Encoder,因爲decoder是不能獲取要預測的信息的。模型的主要創新點都在pre-train方法上,即用了Masked LM(MLM)和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的表示。
對比OpenAI GPT,BERT是雙向的Transformer block連接;就像單向RNN和雙向RNN的區別,此外GPT用的是Transformer的Decoder,BERT用的是Transformer的Encoder。
對比ELMo,雖然都是“雙向”,但目標函數其實是不同的。
ELMo是分別以在這裏插入圖片描述在這裏插入圖片描述作爲目標函數,獨立訓練出兩個representation然後拼接,而BERT則是以 在這裏插入圖片描述作爲目標函數訓練LM。

BERT中的Embedding由三種Embedding求和而成:
在這裏插入圖片描述
其中:
i)Token Embeddings是詞向量,第一個單詞是CLS標誌,可以用於之後的分類任務。
ii)Segment Embeddings是用來區別兩種句子,因爲預訓練不光做LM還要做以兩個句子爲輸入的分類任務
iii)Position Embeddings和之前Transformer論文不一樣,不是三角函數而是學習出來的

BERT Pre-training

在這裏插入圖片描述
在這裏插入圖片描述

BERT Fine-tuning

分類任務:對於sequence-level的分類任務,BERT直接取第一個CLS token的finnal hidden state ,加一層權重後softmax預測label probe:
在這裏插入圖片描述
其他預測任務需要進行一些調整,如下圖:
在這裏插入圖片描述

BERT模型優缺點
優點:
BERT是截至2018年10月的最新state-of-the-art模型,通過預訓練和微調(精調)橫掃了11項NLP任務,這就 是其最大的優點了。而且它還用的是Transformer,也就是相對RNN更加高效、能捕捉更長距離的依賴。對比之前的預訓練模型,BERT捕捉到的纔是真正意義上的bidirectional context信息。
缺點:
BERT作者在文中主要提到的就是MLM預訓練時的mask問題:

  • MASK標記在實際預測中不會出現,訓練時用過多MASK影響模型表現
  • 每個batch只有15%的token被預測,所以BERT收斂得比left-to-right模型要慢(它們會預測每個token)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章