Video: https://www.youtube.com/watch?v=1_gRK9EIQpc&feature=youtu.be
拦键,https://www.youtube.com/watch?v=Bywo7m6ySlk&feature=youtu.be
Slides: http://speech.ee.ntu.edu.tw/~tlkagk/courses/DLHLP20/BERT%20train%20(v8).pdf
Overview
過(guò)去的NLP任務(wù)通常是一個(gè)任務(wù)一個(gè)模型,但如今已然邁向希望機(jī)器在general地了解人類(lèi)語(yǔ)言之后,再去解各式各樣地任務(wù)翎朱。一個(gè)常見(jiàn)地做法是:根據(jù)大量的沒(méi)有標(biāo)注的文本訓(xùn)練一個(gè)模型侄泽,使其可以“讀懂”人類(lèi)文字懈贺,通常將這一過(guò)程稱(chēng)為Pre-train犀忱;接下來(lái),針對(duì)某個(gè)想要解決的特殊任務(wù)拜银,可以搜集相對(duì)較少的任務(wù)特定的帶有標(biāo)注的資料對(duì)剛剛訓(xùn)練好的模型進(jìn)行微調(diào)殊鞭,從而實(shí)現(xiàn)讓機(jī)器解各式各樣的任務(wù),該過(guò)程稱(chēng)為Fine-tune尼桶。
以芝麻街角色命名的模型
ELMo(Embeddings from Language Model)
BERT(Bidiractional Encoder Representations from Transformers)
ERNIE(Enhanced Representation through Knowledge Integration)
Grover(Generating aRticles by Only Viewing mEtadata Records)
BERT & PALs(Projected Attention Layers)
What is pre-train model
Why Pre-train Models
GLUE Scores(反映了模型了解人類(lèi)語(yǔ)言的能力)顯示加入Pre-train Model后操灿,在GLUE Benchmark Corpus上,機(jī)器的能力與人類(lèi)已經(jīng)不相上下了泵督。
More Reference:https://arxiv.org/abs/1908.05620
之前的Pre-train Model
期望將每一個(gè)輸入的token表示為一個(gè)embedding vector绽族,用于表示該token的語(yǔ)義没陡,意思相近的token擁有相近的embedding唯沮,embedding的某些維度應(yīng)當(dāng)可以看出與語(yǔ)義的關(guān)聯(lián)性咆蒿。
將token映射為embedding的做法包括:simply a table look-up(如Word2vec、Glove)秩冈、English word as token(如FastText本缠,以英文字母作為輸入,輸出整個(gè)單詞的向量)入问、將中文的字作為Image丹锹,通過(guò)字的偏旁部首學(xué)習(xí)字的語(yǔ)義……
以上模型均存在沒(méi)有考慮token上下文的缺點(diǎn),繼而產(chǎn)生了Contextual Word Embedding的概念芬失,ELMo卷仑、BERT都屬于這一類(lèi)。同樣都是每一個(gè)token對(duì)應(yīng)一個(gè)embedding麸折,但contextual Word Embedding會(huì)在看完整個(gè)句子之后再輸入句子中每個(gè)token特有的embedding。
Contextual Word Embedding
模型結(jié)構(gòu)類(lèi)似于Encoder粘昨,這樣的模型通常都由多層構(gòu)成垢啼,內(nèi)部可以使用LSTM(ELMo)窜锯、Self-attention layers(BERT)、Tree-based model(編碼語(yǔ)法信息芭析,但這類(lèi)方法尚未流行)锚扎。
Make model smaller
針對(duì)BERT發(fā)展而來(lái)的Smaller Model:Distill BERT、Tiny BERT馁启、Mobile BERT、Q8BERT惯疙、ALBERT
How to make model smaller翠勉?:Network pruning、knowledge distillation霉颠、Parameter Quantization对碌、Architecture Design
Excellent Reference:http://mitchgordon.me/machine/learning/2019/11/18/all-the-ways-to-compress-BERT.html
Network Architecture
大多新架構(gòu)目標(biāo)都是想讓機(jī)器可以讀更長(zhǎng)的sequence(一篇文章甚至一整本書(shū)),例如:
Transformer-XL: Segment-Level Recurrence with State Reuse
還有一些架構(gòu)期望可以減少self-attention所帶來(lái)的運(yùn)算量(n^2)蒿偎,例如:
Reformer朽们、Longformer
How to fine-tune
在有了Pre-train Model之后,我們希望在上面疊一些Task-specific的部分诉位,從而將這個(gè)完整的模型用于特定的NLP任務(wù)上骑脱。接下來(lái)的問(wèn)題就是對(duì)Pre-Train Model進(jìn)行適當(dāng)修改,使其可以解決不同類(lèi)型的NLP問(wèn)題苍糠。
對(duì)于輸入是multiple sentences的情況叁丧,如QA問(wèn)題中的Query-Document,NLI問(wèn)題中的Premise和Hypothesis椿息,通常做法是在兩個(gè)sentence中添加一個(gè)特殊token“<SEP>”歹袁,用作兩個(gè)語(yǔ)句之間的分割。
對(duì)于輸出one class的情況寝优,BERT中的做法是在輸入中添加token“<CLS>”条舔,在pretrain時(shí)對(duì)于<CLS>,需要在該位置輸出與整個(gè)句子有關(guān)的embedding乏矾,繼而將這個(gè)embedding輸入到task specific model(可以是簡(jiǎn)單的Linear Transform孟抗,也可以是很復(fù)雜的變換模型)中進(jìn)行分類(lèi)。也有做法是不引入特殊token钻心,而是將所有token的embedding作為輸入進(jìn)行分類(lèi)凄硼。
對(duì)于輸出是class for each token的情況,則將每個(gè)token對(duì)應(yīng)的embedding輸入Task Specific Model(可以是LSTM)中捷沸,為每一個(gè)token輸出一個(gè)class摊沉。
對(duì)于輸出需要copy from input的情況,如Extraction-based QA任務(wù)痒给,輸入Document和Query说墨,輸出兩個(gè)非負(fù)整數(shù)s和e表示問(wèn)題答案為Document中的第s個(gè)word到第e個(gè)word中的內(nèi)容骏全。BERT中的做法是分別使用兩個(gè)向量表示s和e,依次與document中的每個(gè)token的embedding向量做dot product尼斧,最終經(jīng)過(guò)softmax得到s和e的位置姜贡。
對(duì)于輸出是General Sequence的情況,即如何將pre-train model用于Seq2seq model中棺棵,最直覺(jué)的做法是將pre-train model作為encoder楼咳,將Task Specific Model作為Decoder,這樣做的缺點(diǎn)是Task Specific Model是沒(méi)有經(jīng)過(guò)Pre-Train的烛恤,因?yàn)橛糜赥ask Specific Model的帶標(biāo)注的數(shù)據(jù)沒(méi)有很多母怜,因此我們期望Task Specific越小越好,整個(gè)模型中的多數(shù)參數(shù)都是Pre-train過(guò)的棒动。另一種可行做法是糙申,在輸入input sequence后,再輸入一個(gè)特殊token“<SEP>”船惨,該token位置輸出的embedding將被輸入一個(gè)Task Specific Model中柜裸,得到output sequence的第一個(gè)詞匯,接下來(lái)再將這個(gè)詞匯丟到Pre-TrainModel中粱锐,循環(huán)往復(fù)疙挺,依次得到output sequence的所有詞匯,直到輸出“<EOS>”怜浅,從而實(shí)現(xiàn)將Pre-train Model作為Decoder使用铐然。
具體的Fine-tune過(guò)程有兩種做法:第一種是將訓(xùn)練好的Pre-trained Model作為Feature Extractor,即所有參數(shù)將被固定恶座,只對(duì)Task-specific Model進(jìn)行Fine-tune搀暑;另一種做法是對(duì)Pre-trained Model和Task-specific Model同時(shí)進(jìn)行Fine-tune。實(shí)驗(yàn)表明后者performance更佳跨琳。
然而自点,對(duì)Pre-trained Model和Task-specific Model同時(shí)Fine-tune可能會(huì)遇到以下問(wèn)題:同一個(gè)Pre-trained Model經(jīng)過(guò)不同任務(wù)下的fine-tune會(huì)變得不一樣,每一個(gè)任務(wù)都需要保存一個(gè)新模型脉让,這樣的模型如今往往非常巨大桂敛,因此產(chǎn)生了Adaptor的概念。其主要思想在于對(duì)Pre-trained Model進(jìn)行微調(diào)時(shí)溅潜,只調(diào)其中還的一部分术唬,做法是在Pre-trained Model中加入一些layers,稱(chēng)為Adaptor滚澜,只有Adaptor部分會(huì)連同Task-Specific Model進(jìn)行Fine-tune粗仓,從而大大減小了存儲(chǔ)模型所需的空間。Adaptor的架構(gòu)仍是一個(gè)值得研究的問(wèn)題。另一種做法是考慮到Pre-trained Model中的不同層可能抽取特征的側(cè)重有所不同借浊,因此對(duì)不同層的輸出做Weighted Sum眶掌,這里的權(quán)重則是下游特定任務(wù)所要學(xué)習(xí)的,加權(quán)求和后的結(jié)果輸出到Task-Specific Model中巴碗,這樣的做法稱(chēng)為Weighted Features。
How to pre-train
Target:期望輸出每個(gè)token的contextual embedding vector即寒。
Pre-training by Translation
Context Vector(CoVe):將Pre-train Model視為T(mén)ranslation的Encoder橡淆,準(zhǔn)備另一個(gè)Model作為Decoder,實(shí)現(xiàn)Language A到Language B的翻譯母赵。選擇翻譯任務(wù)用于Pre-train直觀上便于獲得每個(gè)token的representation逸爵,但該任務(wù)需要大量的pair data(Language A和Language B的語(yǔ)句對(duì)),這樣的收集任務(wù)是比較困難的凹嘲,因此我們期望基于唾手可得的沒(méi)有標(biāo)注的文字(Text without annotation)訓(xùn)練得到pre-train model师倔。這樣的方法之前稱(chēng)為Unsupervised Learning,但近年來(lái)更常被叫做Self-supervised Learning周蹭。
Self-supervised Learning
:In self-supervised learning, the system learns to predict part of its input from other parts of its input.
Predict Next Token
Predict next Token任務(wù)是Self-supervised learning的經(jīng)典做法之一趋艘,輸入token ,經(jīng)過(guò)pre-trained model得到該token的representation 凶朗,經(jīng)過(guò)Linear Transform(也可以是更復(fù)雜的層)和softmax得到一個(gè)over token的probability distribution瓷胧,訓(xùn)練目標(biāo)是輸出得到的probability distribution和target之間的cross entropy越小越好,這里的target就是 棚愤,即期望token 的probability為1搓萧,而其它token的probability為0。
在設(shè)計(jì)Predict next token任務(wù)的model時(shí)宛畦,需要注意不能一次性將所有的token輸入進(jìn)模型瘸洛,否則在預(yù)測(cè)時(shí)模型可能會(huì)直接將輸入中當(dāng)前token的下一token作為進(jìn)行接下來(lái)的預(yù)測(cè),這樣的模型就無(wú)法學(xué)到需要的東西次和。
Predict next Token是早期的Unsupervised pre-train model反肋,而Language Model(LM)要做的事情正是Predict next token,所以上述Model正是一個(gè)Language Model斯够。早期一般采用LSTM作為模型架構(gòu)進(jìn)行pre-train囚玫,其中最著名的就是ELMo,類(lèi)似的還有Universal Language Model FIne-tuning(ULMFiT)读规。如今很多模型傾向于使用Self-attention替代LSTM抓督,例如GPT、GPT-2束亏、Megatron铃在、Turing NLG等等。但在使用self-attention時(shí),需要注意控制attention的范圍定铜,因?yàn)閟elf-attention會(huì)將整個(gè)sequence平行的讀入阳液,每一個(gè)位置都會(huì)attend到其它位置,而當(dāng)前任務(wù)的需求是只需要attend到當(dāng)前token位置來(lái)對(duì)下一位置的token進(jìn)行預(yù)測(cè)揣炕,以此避免model在attention時(shí)看到未來(lái)token的答案帘皿。
Predict Next Token除了可以獲得pre-train model繼而進(jìn)行fine-tune之外,因其作為一個(gè)Language Model畸陡,尤其適用于生成任務(wù)(do generation)鹰溜。
Predict Next Token - Bidirectional
在predict next token任務(wù)中,包含了從到( and its left context)的信息丁恭。ELMo額外考慮了right context的信息曹动。在ELMo中,會(huì)基于正向的LSTM由得到一個(gè)embedding去預(yù)測(cè)牲览,基于逆向的LSTM由得到另一個(gè)embedding去預(yù)測(cè)墓陈,ELMo會(huì)將這兩個(gè)embedding拼接起來(lái)作為的contextual representation,由此這個(gè)representation考慮了整個(gè)sequence蘊(yùn)含的信息第献。
但ELMo存在的問(wèn)題是贡必,正反向編碼的過(guò)程彼此獨(dú)立,簡(jiǎn)單的拼接過(guò)程使得left context和right context并不存在任何交集痊硕,BERT針對(duì)這一問(wèn)題進(jìn)行了改善赊级。
Masking Input
BERT會(huì)將輸入中的部分token“蓋住”,一種做法是將要蓋住的token替換為一個(gè)特殊的token “<MASK>”岔绸,另一種做法是替換為隨機(jī)采樣的token理逊,此時(shí)pre-train model要做的就是根據(jù)被蓋住位置輸出的embedding預(yù)測(cè)被蓋住的token是什么。BERT使用的Network架構(gòu)為T(mén)ransformer盒揉,其中的self-attention每一個(gè)位置是會(huì)attend到其它所有位置的晋被,而不同于之前Predict next Token任務(wù)中需要加以限制,因?yàn)橐A(yù)測(cè)的內(nèi)容已經(jīng)過(guò)mask處理刚盈,因此不必?fù)?dān)心會(huì)看到答案羡洛。
BERT的想法和之前Word2Vec中的CBOW方法基本思想很相似,但CBOW可以看到的鄰接token受限于固定的窗口長(zhǎng)度藕漱,另外BERT采用了較復(fù)雜的模型欲侮,而CBOW只是經(jīng)過(guò)簡(jiǎn)單到的Projection和Output兩層操作,即簡(jiǎn)單的線性變換進(jìn)行預(yù)測(cè)肋联。
原始BERT中需要MASK的token是隨機(jī)決定的威蕉,但隨機(jī)決定的mask token可能無(wú)法學(xué)到特別long term的dependency,因此有人提出了新的mask方案橄仍。例如Whole Word Masking(WWM)韧涨,即每次mask的是一個(gè)完整的詞而非字或更小的單位級(jí)別牍戚。類(lèi)似的還有短語(yǔ)級(jí)別的(phrase-level)和實(shí)體級(jí)別的(Entity-level,需要先做NER)的mask方案虑粥,這便是ERNIE采用的方案如孝。還有一種MASK方案稱(chēng)為SpanBert,每次mask掉一定范圍長(zhǎng)度的token娩贷,不同的范圍長(zhǎng)度對(duì)應(yīng)不同的mask機(jī)率第晰。
SpanBert —— Span Boundary Objective(SBO)
該目標(biāo)是根據(jù)mask span的左右相鄰的兩個(gè)token,給定一個(gè)要預(yù)測(cè)的mask span的相對(duì)位置彬祖,預(yù)測(cè)該位置的token(例如被mask了范圍長(zhǎng)度為4的tokens但荤,預(yù)測(cè)這個(gè)范圍內(nèi)的第三個(gè)token)。設(shè)計(jì)這樣的目標(biāo)是期望一個(gè)span其左右兩邊的token embedding包含其內(nèi)部整個(gè)span的信息涧至,SBO會(huì)對(duì)coference類(lèi)的任務(wù)有好處。
XLNet
XL指的是Transformer-XL桑包,該架構(gòu)可以跨segment獲取信息南蓬,采用relative position embedding。XLNet強(qiáng)調(diào)原始BERT存在的一個(gè)問(wèn)題是:假設(shè)給定句子“This is New York city”哑了,原始BERT會(huì)將“New”和“York”兩個(gè)token同時(shí)蓋住赘方,從而無(wú)法學(xué)習(xí)這兩個(gè)token間的相互預(yù)測(cè),即“New”和“York”會(huì)彼此獨(dú)立的被預(yù)測(cè)出來(lái)弱左,缺少這兩個(gè)詞之間的dependency(實(shí)際上如果是random sample窄陡,該問(wèn)題應(yīng)該沒(méi)有那么嚴(yán)重)。從Language Model的角度來(lái)看拆火,XLNet通過(guò)隨機(jī)打亂sequence內(nèi)部token的順序解決一般LM中只獲取left context信息的問(wèn)題跳夭;從BERT的角度出發(fā),XLNet并非根據(jù)整個(gè)sentence去預(yù)測(cè)被mask的內(nèi)容们镜,而是根據(jù)整個(gè)sentence隨機(jī)決定的一部分以及被mask的部分的位置信息(不包含被mask的部分內(nèi)容信息)去預(yù)測(cè)被MASK的內(nèi)容币叹。
BERT cannot talk?
對(duì)于傳統(tǒng)的autoregressive model(從左到右生成句子的情況模狭,不過(guò)近期已有一些non-autoaggressive的做法)颈抚,BERT相較LM而言能力有所欠缺,即BERT缺乏generation的能力嚼鹉,或許不太適合作為seq2seq任務(wù)的pre-train model贩汉,對(duì)于這類(lèi)任務(wù),bert可能只能作為encoder锚赤,decoder部分并沒(méi)有被pre-train到匹舞。為了基于self-supervised learning的方法實(shí)現(xiàn)整個(gè)seq2seq model的pretrain,首先輸入一個(gè)word sequence進(jìn)入encoder宴树,decoder通過(guò)attention從encoder中獲取信息策菜,輸出另一個(gè)word sequence,此時(shí)的目標(biāo)是reconstruct the input,即輸出的是原來(lái)的word sequence又憨。此時(shí)就需要對(duì)輸入部分進(jìn)行corrupted操作翠霍,也就是一定程度的破壞。MASS(MAsked Sequence to Sequence pre-training)和BART(Bidirectional and Auto-Regressive Transformers)就是針對(duì)訓(xùn)練可以pre-train的seq2seq model時(shí)可采用的corrupt操作展開(kāi)研究蠢莺。MASS的思想類(lèi)似于原始BERT寒匙,random mask掉部分token,此時(shí)MASS只要求還原被mask的部分躏将;BART除了mask之外锄弱,還嘗試了delete、permutation祸憋、rotation会宪、Text Infilling(隨機(jī)插入不代表任何token的mask或以一個(gè)mask蓋住多個(gè)token)等操作對(duì)input進(jìn)行corrupt,實(shí)驗(yàn)結(jié)果表明permutation和rotation效果不佳蚯窥,Text Infilling效果最佳掸鹅。
而UniLM可以同時(shí)作為ENcoder、Decoder和Seq2Seq拦赠,該模型同時(shí)進(jìn)行Bidirectional LM(同BERT)巍沙、Left-to-Right LM(同GPT,此時(shí)內(nèi)部的attention需要加以限制荷鼠,以避免看到未來(lái)的token)句携、Seq2Seq LM(同BART和MASS,將輸入分為兩份部分允乐,第一部分中的attention可以直接做self-attention矮嫉,而第二個(gè)部分中的token只能看到left context)三種訓(xùn)練。
ELECTRA
上述pre-train的方法都是預(yù)測(cè)某些token牍疏,這樣的預(yù)測(cè)需要的運(yùn)算量敞临、訓(xùn)練強(qiáng)度是很大的。ELECTRA(Efficiently Learning an Encoder that Classifies Tken Replacements Accurately)避開(kāi)預(yù)測(cè)任務(wù)麸澜,只回答binary的問(wèn)題挺尿。對(duì)于輸入的token sequence,ELECTRA會(huì)將其中部分token置換成其它詞匯炊邦,輸出結(jié)果則是當(dāng)前單詞是否被置換编矾。這樣做的好處是:預(yù)測(cè)yes/no會(huì)比reconstruction要簡(jiǎn)單得多,同時(shí)每一個(gè)position在輸出時(shí)都是需要的(而B(niǎo)ERT只對(duì)被mask的部分進(jìn)行預(yù)測(cè))馁害。該問(wèn)題的難點(diǎn)在于如何進(jìn)行恰當(dāng)?shù)闹脫Q窄俏,使其僅在語(yǔ)義上有所偏差,這里是使用了一個(gè)small BERT去預(yù)測(cè)將要替換的部分碘菜。
Sentence Level
上述pre-train都是給每個(gè)token一個(gè)embedding凹蜈,接下來(lái)我們希望給整個(gè)input tokens sequence一個(gè)global embedding限寞。可以采用Skip Thought的想法仰坦,輸入一個(gè)sentence履植,經(jīng)過(guò)encoder編碼為一個(gè)embedding,decoder根據(jù)這個(gè)embedding對(duì)下一句進(jìn)行預(yù)測(cè)悄晃,然而這種方法訓(xùn)練的運(yùn)算量往往比較大玫霎。另一個(gè)進(jìn)階版本稱(chēng)為Quick Thought,該方法同ELECTRA一樣盡量避開(kāi)generation這一計(jì)算量較大的工作妈橄,將兩個(gè)句子分別通過(guò)Encoder得到各自的embedding庶近,如果兩個(gè)句子是相鄰的,我們就讓它們的embedding距離越相近越好眷蚓。
在原始BERT中鼻种,存在<CLS> token,我們正期望該位置輸出的embedding代表整個(gè)input token sequence的信息沙热,因此期望能有一個(gè)global task普舆,由此BERT采用的是NSP(Next Sequence Prediction)任務(wù),輸入兩個(gè)句子校读,用<SEP>隔開(kāi),<CLS>位置輸出的embedding會(huì)經(jīng)過(guò)一個(gè)Linear Classifier預(yù)測(cè)兩個(gè)句子是否相接祖能。但RoBERTa(Robustly optimized BERT approach)以及XLNET均提出NSP任務(wù)結(jié)果不盡如人意歉秫。另一種方法叫做SOP(Sentence order prediction),即輸入兩個(gè)相接的句子养铸,模型會(huì)輸出yes雁芙,而當(dāng)將這兩個(gè)句子調(diào)換順序輸入時(shí),模型會(huì)輸出No钞螟,該任務(wù)被用于ALBERT中兔甘。另一種方法structBERT,也稱(chēng)為Alice鳞滨,其中結(jié)合使用了NSP和SOP的方法洞焙。
如何比較各種pre-train方法?
Google提出T5(Transfer Text-to-Text Transformer)對(duì)各種pre-train方案進(jìn)行了比較試圖得到一系列結(jié)論拯啦,其中用了一個(gè)名為C4(Colossal Clean Crawled Corpus)的語(yǔ)料庫(kù)
More Model
Enhanced Language RepresentatioN with Informative Entities(ERNIE)希望在pre-train時(shí)加入external knowledge澡匪。即BERT + External Knowledge = ERNIE。
Audio BERT褒链,語(yǔ)音版的BERT唁情。