網上有很多關于pos機器模型,15個預訓練模型對比分析與剖析的知識,也有很多人為大家解答關于pos機器模型的問題,今天pos機之家(www.tonybus.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機器模型
pos機器模型
前言
在之前寫過的《NLP的游戲規則從此改寫?從word2vec, ELMo到BERT》一文中,介紹了從word2vec到ELMo再到BERT的發展路徑。而在BERT出現之后的這大半年的時間里,模型預訓練的方法又被Google、Facebook、微軟、百度、OpenAI等極少數幾個玩得起游戲的核心玩家反復迭代了若干版,一次次的刷新我們這些吃瓜群眾的案板上的瓜。
有沒有感覺出瓜速度太快以至于吃速跟不上?不用擔心,小編幫你們找來了這篇總結的恰到好處的文章,對ELMo以來的15個代表性的預訓練語言模型進行了多維度的對比和分析。尤其是近期找工作的小伙伴們注意啦,這篇文章里面提出來的一些問題很適合作為面試考點(劃掉,交流點)噢~
首先上一張鎮樓專用圖,看一下ELMo以來的預訓練語言模型發展的概況
然后上本文正餐,一個高能的question list,這也是本文寫作的主線。
Question List
Q1:從不同維度對比各【預訓練語言模型】?Q2:基于深度學習的NLP特征抽取機制有哪些?各有哪些優缺點?Q3:自回歸和自編碼語言模型各有什么優缺點?Q4:單向模型的內核機制是怎樣的?有哪些缺點?Q5:Transformer內部機制的深入理解:為什么是縮放點積,而不是點積模型?相較于加性模型,點積模型具備哪些優點?多頭機制為什么有效?Q6-Q10:BERT內核機制探究BERT為什么如此有效?BERT存在哪些優缺點?BERT擅長處理哪些下游NLP任務?BERT基于“字輸入”還是“詞輸入”好?(對于中文任務)BERT為什么不適用于自然語言生成任務(NLG)?Q11-Q15:針對BERT原生模型的缺點,后續的BERT系列模型是:如何改進【生成任務】的?如何引入【知識】的?如何引入【多任務學習機制】的?如何改進【mask策略】的?如何進行【精細調參】的?Q16:XLNet提出的背景是怎樣的?Q17:XLNet為何如此有效:為什么PLM可以實現雙向上下文的建模?怎么解決沒有目標(target)位置信息的問題?Q18:Transformer-XL怎么實現對長文本建模?下面本文將從以下幾個方面來對上述問題一一探討
一. 不同視角下的預訓練語言模型對比
二.預訓練語言模型的基礎:特征抽取機制+語言模型的分類
三.單向模型回顧+內核機制探究
四.BERT的內核機制探究
五.BERT系列模型進展介紹
六.XLNET的內核機制探究
七.預訓練語言模型的未來
一、不同視角下的預訓練語言模型對比
Q1:從不同維度對比【預訓練語言模型】
從特征抽取、預訓練語言模型目標、BERT系列模型的改進方向、特征表示4個視角,對比預訓練語言模型:
不同的特征抽取機制RNNs:ELMO/ULMFiT/SiATL;Transformer:GPT1.0/GPT2.0/BERT系列模型;Transformer-XL:XLNet;不同的預訓練語言目標自編碼(AutoEncode):BERT系列模型;自回歸(AutoRegression):單向模型(ELMO / ULMFiT / SiATL / GPT1.0 / GPT2.0)和XLNet;BERT系列模型的改進引入常識:ERNIE1.0 / ERNIE(THU) / ERNIE2.0(簡稱為“ERNIE系列”);引入多任務學習:MTDNN/ERNIE2.0;基于生成任務的改進:MASS/UNILM;不同的mask策略:WWM/ERNIE系列/SpanBERT;精細調參:RoBERTa;特征表示(是否能表示上下文)單向特征表示:單向模型(ELMO/ULMFiT/SiATL/GPT1.0/GPT2.0);雙向特征表示:BERT系列模型+XLNet;二、預訓練語言模型的基礎:特征抽取機制+語言模型的分類
Q2:基于深度學習的NLP特征抽取機制有哪些?各有哪些優缺點?
1)能否處理長距離依賴問題
長距離依賴建模能力:Transformer-XL > Transformer > RNNs > CNNs
MLP:不考慮序列(位置)信息,不能處理變長序列,如NNLM和word2vec;CNNs:考慮序列(位置)信息,不能處理長距離依賴,聚焦于n-gram提取,pooling操作會導致序列(位置)信息丟失;RNNs:天然適合處理序列(位置)信息,但仍不能處理長距離依賴(由于BPTT導致的梯度消失等問題),故又稱之為“較長的短期記憶單元(LSTM)”;Transformer/Transformer-XL:self-attention解決長距離依賴,無位置偏差;2)前饋/循環網絡 or 串行/并行計算
MLP/CNNs/Transformer:前饋/并行RNNs/ Transformer-XL:循環/串行:3)計算時間復雜度(序列長度n,embedding size為d,filter大小k)
CNNs:RNNs:Self Attention:Q3:自回歸和自編碼語言模型各有什么優缺點?
1)自回歸語言模型
優點:文本序列聯合概率的密度估計,即為傳統的語言模型,天然適合處理自然生成任務;缺點:聯合概率按照文本序列從左至右分解(順序拆解),無法通過上下文信息進行雙向特征表征;代表模型:ELMO/GPT1.0/GPT2.0;改進:XLNet將傳統的自回歸語言模型進行推廣,將順序拆解變為隨機拆解(排列語言模型),產生上下文相關的雙向特征表示;2)自編碼語言模型
優點:本質為降噪自編碼特征表示,通過引入噪聲[MASK]構建MLM,獲取上下文相關的雙向特征表示;缺點:引入獨立性假設,為聯合概率的有偏估計,沒有考慮預測[MASK]之間的相關性不適合直接處理生成任務,MLM預訓練目標的設置造成預訓練過程和生成過程不一致;預訓練時的[MASK]噪聲在finetune階段不會出現,造成兩階段不匹配問題;代表模型:BERT系列模型;三、單向模型回顧+內核機制探究
Q4:單向模型的內核機制是怎樣的?有哪些缺點?
1)ELMo (Allen Institute)[6]
要點:引入雙向語言模型,其實是2個單向語言模型(前向和后向)的集成;通過保存預訓練好的2層biLSTM,通過特征集成或finetune應用于下游任務;缺點:本質上為自回歸語言模型,只能獲取單向的特征表示,不能同時獲取上下文表示;LSTM不能解決長距離依賴。為什么不能用biLSTM構建雙向語言模型?不能采取2層biLSTM同時進行特征抽取構建雙向語言模型,否則會出現標簽泄漏的問題;因此ELMO前向和后向的LSTM參數獨立,共享詞向量,獨立構建語言模型;2)ULMFiT (fast.ai) / SiATL
2.1)ULMFiT[7]要點:
三階段訓練:LM預訓練+精調特定任務LM+精調特定分類任務;特征抽?。?層AWD-LSTM;精調特定分類任務:逐層解凍;2.2) SiATL[8]要點:
二階段訓練:LM預訓練+特定任務精調分類任務(引入LM作為輔助目標,輔助目標對于小數據有用,與GPT相反); - 特征抽?。篖STM+self-attention;精調特定分類任務:逐層解凍;都通過一些技巧解決finetune過程中的災難性遺忘問題:如果預訓練用的無監督數據和任務數據所在領域不同,逐層解凍帶來的效果更明顯[9];3)GPT1.0 / GPT2.0 (OpenAI)
GPT1.0[10]要點:采用Transformer進行特征抽取,首次將Transformer應用于預訓練語言模型;finetune階段引入語言模型輔助目標(輔助目標對于大數據集有用,小數據反而有所下降,與SiATL相反),解決finetune過程中的災難性遺忘;預訓練和finetune一致,統一二階段框架;GPT2.0[11]要點:沒有針對特定模型的精調流程:GPT2.0認為預訓練中已包含很多特定任務所需的信息。生成任務取得很好效果,使用覆蓋更廣、質量更高的數據;缺點:依然為單向自回歸語言模型,無法獲取上下文相關的特征表示;四、BERT內核機制探究
這一部分對BERT的內核機制進行介紹,在回答“BERT為什么如此有效?”之前,首先介紹Transformer的內核機制。
Q5:Transformer[12]內部機制的深入理解(回顧)
1)Multi-Head Attention和Scaled Dot-Product Attention
本質是self attention通過attention mask動態編碼變長序列,解決長距離依賴、無位置偏差、可并行計算
為什么是縮放點積,而不是點積模型?當輸入信息的維度 d 比較高,點積模型的值通常有比較大方差,從而導致 softmax 函數的梯度會比較小。因此,縮放點積模型可以較好地解決這一問題。為什么是雙線性點積模型(經過線性變換Q K)?雙線性點積模型,引入非對稱性,更具健壯性(Attention mask對角元素值不一定是最大的,也就是說當前位置對自身的注意力得分不一定最高)。相較于加性模型,點積模型具備哪些優點?常用的Attention機制為加性模型和點積模型,理論上加性模型和點積模型的復雜度差不多,但是點積模型在實現上可以更好地利用矩陣乘積,從而計算效率更高(實際上,隨著維度d的增大,加性模型會明顯好于點積模型)。多頭機制為什么有效?類似于CNN中通過多通道機制進行特征選擇;Transformer中先通過切頭(spilt)再分別進行Scaled Dot-Product Attention,可以使進行點積計算的維度d不大(防止梯度消失),同時縮小attention mask矩陣。2)Position-wise Feed-Forward Networks
FFN 將每個位置的Multi-Head Attention結果映射到一個更大維度的特征空間,然后使用ReLU引入非線性進行篩選,最后恢復回原始維度。Transformer在拋棄了 LSTM 結構后,FFN 中的 ReLU成為了一個主要的提供非線性變換的單元。3)Positional Encoding
將Positional Embedding改為Positional Encoding,主要的區別在于Positional Encoding是用公式表達的、不可學習的,而Positional Embedding是可學習的(如BERT),兩種方案的訓練速度和模型精度差異不大;但是Positional Embedding位置編碼范圍是固定的,而Positional Encoding編碼范圍是不受限制的。
為什么引入 和 建模Positional Encoding?引入 和 是為了使模型實現對相對位置的學習,兩個位置 pos 和 pos+k 的位置編碼是固定間距k的線性變化:可以證明:間隔為k的任意兩個位置編碼的歐式空間距離是恒等的,只與k有關。Q6:BERT[13]為什么如此有效?
引入Masked Language Model(MLM)預訓練目標,能夠獲取上下文相關的雙向特征表示;引入Next Sentence Prediction(NSP)預訓練目標,擅長處理句子或段落的匹配任務;引入強大的特征抽取機制Transformer(多種機制并存):Multi-Head self attention:多頭機制類似于“多通道”特征抽取,self attention通過attention mask動態編碼變長序列,解決長距離依賴(無位置偏差)、可并行計算;Feed-forward :在位置維度計算非線性層級特征;Layer Norm & Residuals:加速訓練,使“深度”網絡更加健壯;引入大規模、高質量的文本數據;Q7:BERT存在哪些優缺點?
優點:能夠獲取上下文相關的雙向特征表示;缺點:生成任務表現不佳:預訓練過程和生成過程的不一致,導致在生成任務上效果不佳;采取獨立性假設:沒有考慮預測[MASK]之間的相關性,是對語言模型聯合概率的有偏估計(不是密度估計);輸入噪聲[MASK],造成預訓練-精調兩階段之間的差異;無法文檔級別的NLP任務,只適合于句子和段落級別的任務;Q8:BERT擅長處理哪些下游NLP任務[14]?
1. 適合句子和段落級別的任務,不適用于文檔級別的任務;
2. 適合處理高層語義信息提取的任務,對淺層語義信息提取的任務的提升效果不大(如一些簡單的文本分類任務);
3. 適合處理句子/段落的匹配任務;因此,在一些任務中可以構造輔助句(類似匹配任務)實現效果提升(如關系抽取/情感挖掘等任務);
4. 不適合處理NLG任務;
Q9:BERT基于“字輸入”還是“詞輸入”好?(對于中文任務)
1. 如果基于“詞輸入”,會加劇OOV問題,會增大輸入空間,需要利用大得多的語料去學習輸入空間到標簽空間的函數映射。
2. 隨著Transfomer特征抽取能力,分詞不再成為必要,詞級別的特征學習可以納入為內部特征進行表示學習。
Q10:BERT為什么不適用于自然語言生成任務(NLG)?
1. 由于BERT本身在預訓練過程和生成過程的不一致,并沒有做生成任務的相應機制,導致在生成任務上效果不佳,不能直接應用于生成任務。
2. 如果將BERT或者GPT用于Seq2Seq的自然語言生成任務,可以分別進行預訓練編碼器和解碼器,但是編碼器-注意力-解碼器結構沒有被聯合訓練,BERT和GPT在條件生成任務中只是次優效果。
五、BERT系列模型進展介紹
這一部分介紹一些模型,它們均是對BERT原生模型在一些方向的改進。
Q11:針對BERT原生模型,后續的BERT系列模型是如何改進【生成任務】的?
1)MASS(微軟)[15]
統一預訓練框架:通過類似的Seq2Seq框架,在預訓練階段統一了BERT和LM模型;Encoder中理解unmasked tokens;Decoder中需要預測連續的[mask]tokens,獲取更多的語言信息;Decoder從Encoder中抽取更多信息;當k=1或者n時,MASS的概率形式分別和BERT中的MLM以及GPT中標準的LM一致(k為mask的連續片段長度))2)UNILM (微軟)[16]
統一預訓練框架:和直接從mask矩陣的角度統一BERT和LM;3個Attention Mask矩陣:LM、MLM、Seq2Seq LM;注意:UNILM中的LM并不是傳統的LM模型,仍然是通過引入[MASK]實現的;Q12:針對BERT原生模型,后續的BERT系列模型是如何引入【知識】的?
1)ERNIE 1.0 (百度)[17]
在預訓練階段引入知識(實際是預先識別出的實體),引入3種[MASK]策略預測:Basic-Level Masking:跟BERT一樣,對subword進行mask,無法獲取高層次語義;Phrase-Level Masking:mask連續短語;Entity-Level Masking:mask實體;2)ERNIE (THU)[18]
基于BERT預訓練原生模型,將文本中的實體對齊到外部的知識圖譜,并通過知識嵌入得到實體向量作為ERNIE的輸入;由于語言表征的預訓練過程和知識表征過程有很大的不同,會產生兩個獨立的向量空間。為解決上述問題,在有實體輸入的位置,將實體向量和文本表示通過非線性變換進行融合,以融合詞匯、句法和知識信息;引入改進的預訓練目標 Denoising entity auto-encoder (DEA):要求模型能夠根據給定的實體序列和文本序列來預測對應的實體;Q13:針對BERT原生模型,后續的BERT系列模型是如何引入【多任務學習機制】的?
多任務學習(Multi-task Learning)[19]是指同時學習多個相關任務,讓這些任務在學習過程中共享知識,利用多個任務之間的相關性來改進模型在每個任務的性能和泛化能力。多任務學習可以看作是一種歸納遷移學習,即通過利用包含在相關任務中的信息作為歸納偏置(Inductive Bias)來提高泛化能力。多任務學習的訓練機制分為同時訓練和交替訓練。
1)MTDNN(微軟)[20]:在下游任務中引入多任務學習機制
2)ERNIE 2.0 (百度)[21]:在預訓練階段引入多任務學習
MTDNN是在下游任務引入多任務機制的,而ERNIE 2.0 是在預訓練引入多任務學習(與先驗知識庫進行交互),使模型能夠從不同的任務中學到更多的語言知識。主要包含3個方面的任務:word-aware 任務:捕捉詞匯層面的信息;structure-aware 任務:捕捉句法層面的信息;semantic-aware 任務:捕捉語義方面的信息;主要的方式是構建增量學習(后續可以不斷引入更多的任務)模型,通過多任務學習持續更新預訓練模型,這種連續交替的學習范式不會使模型忘記之前學到的語言知識。將3大類任務的若干個子任務一起用于訓練,引入新的任務時會將繼續引入之前的任務,防止忘記之前已經學到的知識,具體是一個逐漸增加任務數量的過程[22]: (task1)->(task1,task2)->(task1,task2,task3)->…->(task1,task2,…,taskN),Q14:針對BERT原生模型,后續的BERT系列模型是如何改進【mask策略】的?
原生BERT模型:按照subword維度進行mask,然后進行預測;BERT WWM(Google):按照whole word維度進行mask,然后進行預測;ERNIE等系列:引入外部知識,按照entity維度進行mask,然后進行預測;SpanBert:不需要按照先驗的詞/實體/短語等邊界信息進行mask,而是采取隨機mask:采用Span Masking:根據幾何分布,隨機選擇一段空間長度,之后再根據均勻分布隨機選擇起始位置,最后按照長度mask;通過采樣,平均被遮蓋長度是3.8 個詞的長度;引入Span Boundary Objective:新的預訓練目標旨在使被mask的Span 邊界的詞向量能學習到 Span中被mask的部分;新的預訓練目標和MLM一起使用;注意:BERT WWM、ERNIE等系列、SpanBERT旨在隱式地學習預測詞(mask部分本身的強相關性)之間的關系[23],而在 XLNet 中,是通過 PLM 加上自回歸方式來顯式地學習預測詞之間關系;Q15:針對BERT原生模型,后續的BERT系列模型是如何進行【精細調參】的?
RoBERTa(FaceBook)[24]
丟棄NSP,效果更好;動態改變mask策略,把數據復制10份,然后統一進行隨機mask;對學習率的峰值和warm-up更新步數作出調整;在更長的序列上訓練:不對序列進行截短,使用全長度序列;六、XLNet的內核機制探究
在BERT系列模型后,Google發布的XLNet在問答、文本分類、自然語言理解等任務上都大幅超越BERT;XLNet的提出是對標準語言模型(自回歸)的一個復興[25],提出一個框架來連接語言建模方法和預訓練方法。
Q16:XLNet[26]提出的背景是怎樣的?
對于ELMO、GPT等預訓練模型都是基于傳統的語言模型(自回歸語言模型AR),自回歸語言模型天然適合處理生成任務,但是無法對雙向上下文進行表征,因此人們反而轉向自編碼思想的研究(如BERT系列模型);自編碼語言模型(AE)雖然可以實現雙向上下文進行表征,但是:BERT系列模型引入獨立性假設,沒有考慮預測[MASK]之間的相關性;MLM預訓練目標的設置造成預訓練過程和生成過程不一致;預訓練時的[MASK]噪聲在finetune階段不會出現,造成兩階段不匹配問題;有什么辦法能構建一個模型使得同時具有AR和AE的優點并且沒有它們缺點呢?Q17:XLNet為何如此有效:內核機制分析
1)排列語言模型(Permutation LM,PLM)
如果衡量序列中被建模的依賴關系的數量,標準的LM可以達到上界,不像MLM一樣,LM不依賴于任何獨立假設。借鑒 NADE[27]的思想,XLNet將標準的LM推廣到PLM。
為什么PLM可以實現雙向上下文的建模?PLM的本質就是LM聯合概率的多種分解機制的體現;將LM的順序拆解推廣到隨機拆解,但是需要保留每個詞的原始位置信息(PLM只是語言模型建模方式的因式分解/排列,并不是詞的位置信息的重新排列!)如果遍歷 ! 種分解方法,并且模型參數是共享的,PLM就一定可以學習到各種雙向上下文;換句話說,當我們把所有可能的! 排列都考慮到的時候,對于預測詞的所有上下文就都可以學習到了!由于遍歷 ! 種路徑計算量非常大(對于10個詞的句子,10!=3628800)。因此實際只能隨機的采樣!里的部分排列,并求期望;2)Two-Stream Self-Attention
如果采取標準的Transformer來建模PLM,會出現沒有目標(target)位置信息的問題。問題的關鍵是模型并不知道要預測的到底是哪個位置的詞,從而導致具有部分排列下的PLM在預測不同目標詞時的概率是相同的。
怎么解決沒有目標(target)位置信息的問題?對于沒有目標位置信息的問題,XLNet 引入了Two-Stream Self-Attention:Query 流就為了預測當前詞,只包含位置信息,不包含詞的內容信息;Content 流主要為 Query 流提供其它詞的內容向量,包含位置信息和內容信息;3) 融入Transformer-XL的優點(具體見Q18)
Q18:Transformer-XL[28]怎么實現對長文本建模?
BERT(Transformer)的最大輸入長度為512,那么怎么對文檔級別的文本建模?vanilla model進行Segment,但是會存在上下文碎片化的問題(無法對連續文檔的語義信息進行建模),同時推斷時需要重復計算,因此推斷速度會很慢;Transformer-XL改進對于每一個segment都應該具有不同的位置編碼,因此Transformer-XL采取了相對位置編碼;前一個segment計算的representation被修復并緩存,以便在模型處理下一個新的segment時作為擴展上下文resume;最大可能依賴關系長度增加了N倍,其中N表示網絡的深度;解決了上下文碎片問題,為新段前面的token提供了必要的上下文;由于不需要重復計算,Transformer-XL在語言建模任務的評估期間比vanilla Transformer快1800+倍;引入recurrence mechanism(不采用BPTT方式求導):引入相對位置編碼方案:七、預訓練語言模型的未來
上述的【預訓練語言模型】主要從2大方面進行介紹:一是總的對比;二是分別介紹單向語言模型、BERT系列模型、XLNet模型。
可以看出,未來【預訓練語言模型】更多的探索方向主要為[25]:
復興語言模型:進一步改進語言模型目標,不斷突破模型的上界;大數據、大算力:將大數據、大算力推到極致;更快的推斷:輕量級模型是否有可能達到SOTA效果?引入更豐富的知識信息,更精細的調參,更有價值的MASK策略;統一條件生成任務框架,如基于XLNet統一編碼和解碼任務,同時可考慮更快的解碼方式;參考文獻
[1] NLP將迎來黃金十年 https://www.msra.cn/zh-cn/news/executivebylines/tech-bylines-nlp
[2] a review of the recent history of nlp
[3] AIS:ACL2019進展報告
[4] ACL 主席周明:一起擁抱 ACL 和 NLP 的光明未來
[5] 自然語言處理中的語言模型預訓練方法 https://www.jiqizhixin.com/articles/2018-10-22-3
[6] ELMO:Deep contextualized word representations
[7] ULMFiT:Universal Language Model Fine-tuning)
[8] SiATL:An Embarrassingly Simple Approach for Transfer Learning from Pretrained Language Models
[9] BERT時代與后時代的NLP https://zhuanlan.zhihu.com/p/66676144
[10] GPT:Improving Language Understanding by Generative Pre-Training
[11] GPT2.0:Language Models are Unsupervised Multitask Learners
[12] Transformer:Attention is all you need
[13] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[14] Bert時代的創新(應用篇):Bert在NLP各領域的應用進展 https://zhuanlan.zhihu.com/p/68446772
[15] MASS: Masked Sequence to Sequence Pre-training for Language Generation
[16] UNILM:Unified Language Model Pre-training for Natural Language Understanding and Generation
[17] ERNIE: Enhanced Representation through Knowledge Integration
[18] ERNIE: Enhanced Language Representation with Information Entities
[19] nndl:神經網絡與深度學習
[20] MT-DNN:Multi-Task Deep Neural Net for NLU
[21] ERNIE 2.0: A CONTINUAL PRE-TRAINING FRAMEWORK FOR LANGUAGE UNDERSTANDING
[22]陳凱:
https://www.zhihu.com/question/337827682/answer/768908184
[23] SpanBert:對 Bert 預訓練的一次深度探索
[24] RoBERTa: A Robustly Optimized BERT Pretraining Approach
[25] ab他們創造了橫掃NLP的XLNet:專訪CMU博士楊植麟
[26] XLnet: Generalized Autoregressive Pretraining for Language Understanding
[27] Neural autoregressive distribution estimation
[28] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
以上就是關于pos機器模型,15個預訓練模型對比分析與剖析的知識,后面我們會繼續為大家整理關于pos機器模型的知識,希望能夠幫助到大家!
