<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          萬能 Transformer,你應(yīng)該知道的一切

          共 15304字,需瀏覽 31分鐘

           ·

          2021-01-05 16:55

          ↑ 點(diǎn)擊藍(lán)字?關(guān)注極市平臺

          作者丨馬钘 馬增來 謝明輝 鄧雯敏 張煜蕊 周寅張皓 張哲宇
          來源丨智源社區(qū)
          編輯丨極市平臺

          極市導(dǎo)讀

          ?

          本文詳細(xì)介紹了Transformer結(jié)構(gòu)(Encoder/Decoder)、Efficient Transformers、Language models以及Transformer預(yù)訓(xùn)練技術(shù)等。?>>加入極市CV技術(shù)交流群,走在計算機(jī)視覺的最前沿

          寫在前面:自 2017 年 Transformer 技術(shù)出現(xiàn)以來,便在 NLP、CV、語音、生物、化學(xué)等領(lǐng)域引起了諸多進(jìn)展。知源月旦團(tuán)隊(duì)期望通過“Transformer+X” 梳理清 Transformer 技術(shù)的發(fā)展脈絡(luò),以及其在各領(lǐng)域中的應(yīng)用進(jìn)展,以期推動 Transformer 技術(shù)在更多領(lǐng)域中的應(yīng)用。限于篇幅,在這篇推文中,我們先介紹 Transformer 的基本知識,以及其在 NLP 領(lǐng)域的研究進(jìn)展;后續(xù)我們將介紹 Transformer + CV /?語音/生物/化學(xué)等的研究。


          歡迎感興趣的同學(xué)報名來參與到后續(xù)的工作中。
          Github:floatingCatty/BAAI-Monthly-

          Transformer模型由Google在2017年在 Attention Is All You Need[1] 中提出。該文使用 Attention 替換了原先Seq2Seq模型中的循環(huán)結(jié)構(gòu),給自然語言處理(NLP)領(lǐng)域帶來極大震動。

          隨著研究的推進(jìn),Transformer 等相關(guān)技術(shù)也逐漸由 NLP 流向其他領(lǐng)域,例如計算機(jī)視覺(CV)、語音、生物、化學(xué)等。

          因此,我們希望能通過此文盤點(diǎn) Transformer 的基本架構(gòu),分析其優(yōu)劣,并對近年來其在諸多領(lǐng)域的應(yīng)用趨勢進(jìn)行梳理,希望這些工作能夠給其他學(xué)科提供有益的借鑒。

          本節(jié)介紹 Transformer 基本知識。

          01

          一、Transformer 概? 述


          1.1 Transformer 結(jié)構(gòu)


          Transformer 模型結(jié)構(gòu)如圖1所示,模型由6個編碼器(Encoder)和6個解碼器(Decoder) 組成,輸入(Inputs)和輸出(Outputs)通過同一個訓(xùn)練好的詞嵌入層(Word Embedding)將輸入字符轉(zhuǎn)換為維度為d的向量。
          圖1 Transformer模型結(jié)構(gòu)
          1. Encoder

          Transformer對編碼器(Encoder)與解碼器(Decoder)兩端的序列分別添加位置編碼(Positional Encoding)。之后,編碼經(jīng)過含有多頭自注意力機(jī)制(Multi-head Self-Attention)、位置前向傳播網(wǎng)絡(luò)(Position-wise Feed-Forward Network)、殘差連接(Residual Connection)和層歸一化(Layer Normalization)的計算單元。
          1)Positional Encoding
          由于Transformer的計算拋棄了循環(huán)結(jié)構(gòu)的遞歸和卷積,無法模擬文本中的詞語位置信息,因而需要人為添加。該過程稱為位置編碼(Positional Encoding),使用詞的位置向量,表示單詞在句中的位置與詞間的相對位置,在Transformer中與句子的嵌入表示相加,獲得模型輸入。

          Vaswani et.al[1]提出 Positonal Encoding的兩種方式:一種是學(xué)習(xí)得到,隨機(jī)初始化后加入模型作為參數(shù)進(jìn)行訓(xùn)練。一種是使用不同頻率的正弦和余弦函數(shù),在每個詞語的詞向量的偶數(shù)位置添加sin變量,奇數(shù)位置添加cos變量,以此填滿Positional Encoding矩陣,該方式保證了每個位置向量不重復(fù)而且不同之間的位置之間存在線性關(guān)系,在計算注意力權(quán)重的時候(兩個向量做點(diǎn)積),相對位置的變化會對注意力產(chǎn)生影響,而絕對位置變化不會對注意力產(chǎn)生影響,這更符合常理。

          上述方式都是將單詞嵌入向量與位置嵌入向量分開訓(xùn)練,且只能接受整型數(shù)值作為詞索引或位置索引,不能捕捉有序的關(guān)系,例如鄰接關(guān)系或優(yōu)先級,會導(dǎo)致每個位置上的位置向量是彼此獨(dú)立的,稱之為 Position Independence Problem[2]。針對這個問題,Benyou et.al 提出了一種改進(jìn)方法——將以前定義為獨(dú)立向量的詞嵌入擴(kuò)展為以位置 pos 為自變量的連續(xù)函數(shù)。這樣詞的表示可以隨著位置的變化而平滑地移動,不同位置上的詞表示就可以互相關(guān)聯(lián)起來。實(shí)驗(yàn)結(jié)果表示,Complex Embedding 在性能上有較大的優(yōu)化和提高。

          2)Multi-Head Attention

          注意力機(jī)制(Attention Mechanism)作為對Seq2Seq模型的改進(jìn)而被提出。在機(jī)器翻譯任務(wù)中,目標(biāo)語言與輸入語言的詞匯之間,存在一些對應(yīng)關(guān)系,Bahdanau[3] 鮮明地指出了固定大小的中間層維度對翻譯任務(wù)的限制,并直接計算 BiRNN 對輸入的編碼h與候選輸出的編碼的s之間的相似度量作為替代,根據(jù)相似得分輸出預(yù)測的目標(biāo)語言詞匯。這突破了 Seq2Seq 模型學(xué)習(xí)的中間表征h的維度對輸入信息的限制。日后發(fā)展出的大多 Attention 機(jī)制仍可以表述在這一框架下,即計算輸入的表示與輸出表示間的得分 score,作為判斷輸出單詞的依據(jù),但不同的是,對于輸入詞的編碼采用了不同的處理模型,例如RNN,CNN[4]等。

          不同的注意力機(jī)制

          在 Transformer 以及后續(xù)的主流模型中,多采用多頭自注意力機(jī)制(Scale-dot Product Self-Attention)。自注意力在 Cheng et. al.[5] 的機(jī)器閱讀工作中提出,該模型采用加和式的 Attention 得分,計算輸入新詞與前文各詞的聯(lián)系,使用加和式注意力計算:


          結(jié)果顯示,訓(xùn)練后的模型能夠模擬上下文的詞語關(guān)聯(lián):

          自注意力機(jī)制計算的上下文關(guān)聯(lián)

          Transformer 中采用的是多頭自注意力機(jī)制[1]。在 Encoder 中,Q、K、V均為輸入的序列編碼,而多頭的線性層可以方便地擴(kuò)展模型參數(shù)。


          該方法經(jīng)常被表示為詞與詞之間的全連接結(jié)構(gòu)[6],同一序列中詞的關(guān)系直接由 score 值計算得到,不會因?yàn)闀r序、傳播的限制而造成信息損失,有利于模擬長程依賴,但也有工作通過實(shí)驗(yàn)表明[7],多頭注意力機(jī)制解決長程依賴是由于參數(shù)量的增加,若在同規(guī)模下對比,相對CNN,RNN并未有明顯提升。

          自注意力長程依賴、可擴(kuò)展、多連接等特點(diǎn)讓其在語言任務(wù)上表現(xiàn)出色。許多工作針對計算開銷問題提出了改進(jìn)。Kitaev et. al[8] 的 Reformer,并在計算時,使用相同的線性層參數(shù)計算Q、K矩陣,并對每個 Query 單獨(dú)計算 Attention 得分,這樣雖然增加了循環(huán)次數(shù),但卻能將存儲開銷變?yōu)樵瓉淼钠椒礁?。此外,考慮到 Softmax 函數(shù)更多關(guān)注序列中較大的值,因此篩選了部分相似的 Token 計算相關(guān)性值,這與 Rewon Child[9] 提出了 Sparse Attention 優(yōu)化計算的方法相似。Zhang et. al.[10] 在 TensorCoder 中提出了維度的 Scale-dot Product Attention,將計算開銷從O(N^2d),降低到O(Nd^2),對于序列長度大于詞向量維度時,能有效降低開銷。


          3)Position-Wise Feed-Forward Network

          Position-Wise Feed-Forward Network 是一個簡單的全連接前饋網(wǎng)絡(luò):


          其中 x 是 MultiHead(Q,K,V) 中的一個token。

          Position-Wise 即以單個位置為單位進(jìn)行前饋,也就是說 FFN(x) 中的 x 的維度為 [1,],同一個 Encoder 或者 Decoder 中的不同x共享?,,不同 Encoder 和 Decoder 之間不共享參數(shù)。
          4)Layer Normalization

          1.4.1 Normalization

          在模型學(xué)習(xí)過程中,當(dāng)我們采用梯度下降法對最優(yōu)參數(shù)進(jìn)行搜索時,很大程度上會受到輸入特征分布的影響。當(dāng)輸入的不同特征的特征空間的范圍差異較大,會導(dǎo)致在空間上尋找最優(yōu)點(diǎn)時,產(chǎn)生較大偏差。為了解決這種情況,將不同的特征分布通過歸一化使其成為均值為0,標(biāo)準(zhǔn)差為1的概率分布,可以幫助模型以更快的速度收斂。

          1.4.2 Batch Normalization出現(xiàn)

          在深度神經(jīng)網(wǎng)絡(luò)反向傳播的特性在更新神經(jīng)元參數(shù)的同時,也存在著內(nèi)部協(xié)變量偏移效應(yīng)(Internal Covariate Shift),經(jīng)過多層的偏移效應(yīng)放大后,很多變量會趨向于分布到激活函數(shù)(以 Sigmoid 為例)的兩端,發(fā)生梯度急劇下降甚至產(chǎn)生梯度消失現(xiàn)象。有學(xué)者提出通過采用將每層輸入歸一化的方式防止這種現(xiàn)象的發(fā)生。同時還增加了可訓(xùn)練變量β與γ。使得歸一化后的輸入α,通過線性變換,轉(zhuǎn)換成,這樣進(jìn)入激活函數(shù)的輸入將不受內(nèi)部協(xié)變量影響,加快了模型訓(xùn)練的收斂速度[11]。

          1.4.3 Layer Normalization出現(xiàn)

          一些學(xué)者發(fā)現(xiàn) Batch Normalization 在RNN上所起到的作用是很有限的。當(dāng)他們對 RNN 應(yīng)用 Batch Normalization 時,需要計算序列中每個時間步的統(tǒng)計信息[12]。這存在很多問題。當(dāng)時間步超出訓(xùn)練序列長度后,沒有歸一化層可以與多出的測試序列對應(yīng)了。而且 Batch Normalization 對 Batch Size 依賴很大,當(dāng)Batch Size 過小時,BN 層的均值和標(biāo)準(zhǔn)差計算與整個數(shù)據(jù)集的實(shí)際統(tǒng)計數(shù)據(jù)相差過大,就使得其喪失了歸一化效果。


          所以,可以采取另一種改進(jìn)的歸一化方法即 Layer Normalization,即通過對在相同時間步的神經(jīng)元的輸入求其均值與標(biāo)準(zhǔn)差,在這個方向上對輸入進(jìn)行歸一化,可以理解為 BN 的轉(zhuǎn)置。LN 在實(shí)現(xiàn)歸一化過程中與 Batch 是無關(guān)聯(lián)的,這就克服了 BN 在小 Batch Size 的情況下,效果較差的缺點(diǎn)[12]。

          其計算方式如下圖所示:


          H代表同一序列的隱藏神經(jīng)元數(shù),歸一化過程無關(guān)于 Batch Size。

          對于 Transformer 而言,模型深度更大,搜索范圍更廣,因而采用 Layer Normaliazation層對模型起到的幫助是基礎(chǔ)性的。這使得 Transformer 在訓(xùn)練過程中收到內(nèi)部協(xié)變量的影響降到很低,也是 Transformer 的高性能的重要原因之一。對于 Transformer 的 LN 層還存在一些討論。有學(xué)者說明原始模型輸出層參數(shù)期望較大,在這些梯度上采用較大的學(xué)習(xí)率,會使訓(xùn)練不穩(wěn)定,將 LN 層前置到子層前[13],見下圖右,發(fā)現(xiàn)通過這樣的方式,也可以提升 Transformer 模型本身的訓(xùn)練性能。


          2. Decoder

          Transformer 解碼器(Decoder)與編碼器(Encoder)具有相同的計算單元,不同的是,模型仍是 Seq2Seq 結(jié)構(gòu),因此,為了令解碼器不提前得知未來信息,使用 Masked Multi-head Attention 隱藏下文。

          Transformer 在獲得性能提升的同時,也大大增加了計算開銷,因此,許多工作關(guān)注獲得更高效的 Transformer 模型,列舉介紹如下。

          1.2 Efficient Transformers


          Taxonomy of Efficient Transformer Architectures.

          Transformer 發(fā)布后即在 NLP 多個領(lǐng)域取得顯著成績,也激發(fā)了領(lǐng)域研究者們極大的興趣。后續(xù)研究者們在 Transformer 的基礎(chǔ)上又提出了一系列 X-former模型,如 Set-Transformer[14]、Transformer-XL[15] 等。這些模型針對Transformer 的計算效率和存儲效率進(jìn)行優(yōu)化,或是提升了模型處理長序列的效率。

          谷歌2020年9月份在arXiv發(fā)表的綜述論文《Efficient Transformers: A Survey》[16]即針對這一類進(jìn)行了總結(jié)。

          模型復(fù)雜度對比

          1.3 Language models


          Transformer 的出現(xiàn)催生出一批基于 Transformer 的語言模型,這些模型被證實(shí)在一系列NLP任務(wù)上取得極大性能提升。

          如2018年 OpenAI 提出的 GPT(Generative Pre-Training)[17] 模型和 Google Brain 提出的 BERT(Bidirectional Encoder Representation from Transformer) 模型[18],一經(jīng)提出即引起極大反響,二者分別基于單向、雙向Transformer 模型,運(yùn)用了 Pre-training + Fine-tuning 的訓(xùn)練模式,在分類、標(biāo)注等 NLP 經(jīng)典下游任務(wù)取得很好的效果。

          值得注意的是,GPT 和 BERT 兩個模型都是在 Fine-tuning 階段在編碼層后面加上 Task-layer 以適應(yīng)不同下游任務(wù)的訓(xùn)練需求,而另一個基于雙向 Transformer 的模型 MT-DNN[19] 是將所有任務(wù)的 Fine-tuning 步驟都放了一起。MT-DNN 的優(yōu)勢表現(xiàn)在使用多任務(wù)學(xué)習(xí)+預(yù)訓(xùn)練,使得在單一任務(wù)數(shù)據(jù)有限的有監(jiān)督訓(xùn)練中,可以利用其他相似任務(wù)的標(biāo)注數(shù)據(jù),以達(dá)到數(shù)據(jù)增強(qiáng)的作用。

          02

          二、Transformer in NLP


          2.1?預(yù)訓(xùn)練技術(shù)


          預(yù)訓(xùn)練技術(shù)是指預(yù)先設(shè)計多層網(wǎng)絡(luò)結(jié)構(gòu),將編碼后的數(shù)據(jù)輸入到網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行訓(xùn)練,增加模型的泛化能力。預(yù)先設(shè)計的網(wǎng)絡(luò)結(jié)構(gòu)通常被稱為預(yù)訓(xùn)練模型,它的作用是初始化下游任務(wù)。將預(yù)訓(xùn)練好的模型參數(shù)應(yīng)用到后續(xù)的其他特定任務(wù)上,這些特定任務(wù)通常被稱為“下游任務(wù)”[20]。

          預(yù)訓(xùn)練通用結(jié)構(gòu)

          隨著深度學(xué)習(xí)的發(fā)展,模型參數(shù)迅速增加。另外,模型在小數(shù)據(jù)集上容易過擬合,需要更大的數(shù)據(jù)集。而 NLP 中構(gòu)建帶標(biāo)簽的大數(shù)據(jù)集成本高昂。相較而言,無標(biāo)簽大數(shù)據(jù)集構(gòu)造簡單。為了利用無標(biāo)簽數(shù)據(jù),可以預(yù)訓(xùn)練得到其他任務(wù)的通用表示。然后將這些通用表示應(yīng)用到下游任務(wù)的構(gòu)建過程中。大量實(shí)驗(yàn)表明,使用預(yù)訓(xùn)練方式可以較大改善某些任務(wù)的性能[21]。

          1. 靜態(tài)預(yù)訓(xùn)練技術(shù)

          早在2006年,深度學(xué)習(xí)的突破就出現(xiàn)在貪婪的分層無監(jiān)督預(yù)訓(xùn)練,然后是有監(jiān)督的微調(diào)。在 CV 領(lǐng)域, 主要是在如 ImageNet 等較大規(guī)模數(shù)據(jù)集上預(yù)訓(xùn)練模型,接著在不同任務(wù)的數(shù)據(jù)上進(jìn)行微調(diào),方法取得了明顯的效果改善。而在 NLP 中早期的預(yù)訓(xùn)練模型圍繞預(yù)訓(xùn)練詞向量進(jìn)行,現(xiàn)代詞向量最早是由 Yoshua Bengio et. al.[22] 在2003年的 NNLM 模型中提出。
          NNLM的模型結(jié)構(gòu)

          C是詞向量矩陣,負(fù)責(zé)將詞映射為特征向量。模型通過訓(xùn)練之后可以得到詞向量矩陣C。NNLM 的主要貢獻(xiàn)是創(chuàng)見性地將模型的第一層特征映射矩陣當(dāng)作詞的文本表征,從而開創(chuàng)了將詞語表示為向量形式的模式,這直接啟發(fā)了后來的 Word2Vec 的工作。

          在2011年,Collobert et. al.[23] 發(fā)現(xiàn)在無標(biāo)簽數(shù)據(jù)預(yù)訓(xùn)練的詞向量能夠顯著改善很多NLP任務(wù)。

          2013年,Mikolov et. al.[24] 借鑒NNLM的思想提出了 Predictive-based Word2Vec 模型,分為兩種訓(xùn)練方式,包含根據(jù)上下文預(yù)測中間詞的Continuous Bag-of-Words(CBOW) 和根據(jù)中間詞預(yù)測上下文的 Skip-Gram (SG) 。

          2014年,Jeffrey Pennington et. al.[25] 提出了 Count-based Glove。Word2vec 和 Glove 都是之前廣泛用來預(yù)訓(xùn)練詞向量的模型。Word2Vec 和GloVe 都是使用無監(jiān)督數(shù)據(jù)訓(xùn)練得到詞向量,而 FastText [26] 則是利用帶有監(jiān)督標(biāo)記的文本分類數(shù)據(jù)完成訓(xùn)練。FastText 的網(wǎng)絡(luò)結(jié)構(gòu)與CBOW基本一致,其最大優(yōu)勢在于預(yù)測速度。在一些分類數(shù)據(jù)集上,F(xiàn)astText 通??梢园岩臅r幾小時甚至幾天的模型訓(xùn)練大幅壓縮到幾秒鐘。

          2. 動態(tài)預(yù)訓(xùn)練技術(shù)

          由于傳統(tǒng)詞向量的缺點(diǎn),大家嘗試使用深層模型提取出上下文相關(guān)的詞向量。McCann et. al.[27]在 MT 數(shù)據(jù)集上使用 Attention-Seq2Seq 模型預(yù)訓(xùn)練深層 LSTM 的 Encoder,該 Encoder 輸出的 Context Vectors (CoVe) 對改善了很多NLP任務(wù)的效果。后面提出了BiLM [28] 等模型。這些模型都屬于 ELMo (Embeddings from Language Models)。但是這些模型仍然一般只作為特征提取器提取出上下文相關(guān)的詞向量。除了這部分工作可以繼承外,下游任務(wù)的其他參數(shù)仍需要從頭訓(xùn)練。

          BiLSTM的模型結(jié)構(gòu)

          BiLSTM 包括前向 LSTM 模型和后向 LSTM 模型。兩個方向的 LSTM 共享部分權(quán)重。模型的目標(biāo)是最大化前向和后向的似然概率和。

          3. 新式動態(tài)預(yù)訓(xùn)練技術(shù)

          利用 Fine-tune 將 PTM 應(yīng)用到下游任務(wù),只需在新的小數(shù)據(jù)集上進(jìn)行參數(shù)微調(diào)即可,無需重新訓(xùn)練。

          2017年,Ramachandran et. al.[29]發(fā)現(xiàn)無監(jiān)督預(yù)訓(xùn)練可以大幅提高 Seq2Seq的效果。Seq2Seq 的 encoder 和 decoder 分別使用兩個語言模型的參數(shù)進(jìn)行初始化,然后使用標(biāo)記數(shù)據(jù)進(jìn)行微調(diào)。

          2018年,Jeremy Howard et. al.[30] 提出ULMFiT (Universal Language Model Finetuning),并且探索了一些有效的 Fine-tune 技巧,如 Slanted Triangular Learning Rates。自從 ULMFiT 之后,F(xiàn)ine-tuning 成為將PTM應(yīng)用到下游任務(wù)的主流。

          2017年,谷歌提出Transformer模型,它在處理長期依賴性方面比LSTM有更好的表現(xiàn),一些業(yè)內(nèi)人士開始認(rèn)為它是LSTM的替代品。

          在此背景下,GPT預(yù)訓(xùn)練模型應(yīng)運(yùn)而生。GPT采用了Transformer中的解碼器結(jié)構(gòu),并沒有使用一個完整的Transformer來構(gòu)建網(wǎng)絡(luò)。GPT模型堆疊了12個Transformer子層,并用語言建模的目標(biāo)函數(shù)來進(jìn)行優(yōu)化和訓(xùn)練。GPT模型雖然達(dá)到了很好的效果,但本質(zhì)上仍是一種單向語言模型,對語義信息的建模能力有限。

          BERT 模型堆疊 Transformer 的編碼器結(jié)構(gòu),并且通過 Masked-LM 的預(yù)訓(xùn)練方式達(dá)到了真雙向語言模型的效果。

          上面的介紹包含了兩種常見的遷移學(xué)習(xí)方式:特征提取和微調(diào),兩者的區(qū)別是 ELMo 等為代表的模型使用的特征提取方法凍結(jié)了預(yù)訓(xùn)練參數(shù),而以 BERT 等為代表的模型采用的微調(diào)則是動態(tài)地改變參數(shù),根據(jù)下游任務(wù)進(jìn)行參數(shù)上的微調(diào)。特征提取需要更復(fù)雜的任務(wù)架構(gòu),并且就綜合性能來看,微調(diào)的方法更適合下游任務(wù)。

          2.2 方法介紹


          繼17年谷歌大腦提出一個包含編碼器和解碼器的 Transformer 結(jié)構(gòu)后,Transformer 在近三年間又有了許多不同的改進(jìn)演化版本,對 Vanilla Transformer 的各種變體的技術(shù)線梳理可以按照時間來劃分:

          早期達(dá)到多個 SOTA 的結(jié)構(gòu)優(yōu)化模型是 GPT、BERT,這兩種模型都沿用了原始Transformer 的結(jié)構(gòu):GPT 把原始 Transformer 結(jié)構(gòu)中的解碼器結(jié)構(gòu)用作編碼器進(jìn)行特征抽取,由于解碼器中的 Mask 設(shè)計,使得 GPT 只使用了單向信息,即該語言模型只使用了上文預(yù)測當(dāng)前詞,而不使用下文,這也使得其更適用于文本生成類任務(wù);而 BERT 只使用了原始 Transformer 結(jié)構(gòu)中的編碼器結(jié)構(gòu),因此其使用了雙向的信息,并在一些任務(wù)中達(dá)到了更好的效果。

          1. GPT

          基于 Transformer 的預(yù)訓(xùn)練+微調(diào)技術(shù)為 NLP 領(lǐng)域注入了新的活力,而這一工作的開創(chuàng)者,便是 OpenAI 的研究人員于2018年提出的 GPT[17]。

          論文中提出,我們可將訓(xùn)練過程分為兩個階段:第一階段以標(biāo)準(zhǔn)語言模型作為目標(biāo)任務(wù),在大規(guī)模語料庫上做無監(jiān)督的預(yù)訓(xùn)練;第二階段在特定的下游任務(wù)上對模型參數(shù)做有監(jiān)督的微調(diào),使其能夠更好的適應(yīng)特定目標(biāo)任務(wù)。

          基于上述過程,GPT 使用多層 Transformer Decoder 作為語言模型,其基本結(jié)構(gòu)如下:



          在第一階段,使用標(biāo)準(zhǔn) LM 作為預(yù)訓(xùn)練任務(wù),即最大化如下似然函數(shù):


          其中,為語料中 Tokens 的集合,k 為上下文窗口的大小。

          該模型的訓(xùn)練過程其實(shí)就是將輸入文本中每個詞的 Embedding 作為輸入,輸出預(yù)測的下一個詞,具體步驟如下:


          其中是文本中每個詞的詞向量,n為層數(shù),表示詞嵌入矩陣,表示位置嵌入矩陣。

          第二階段,即在特定任務(wù)上使用少量帶標(biāo)簽的數(shù)據(jù)對模型參數(shù)進(jìn)行有監(jiān)督的微調(diào),具體步驟如下:

          其中為特定下游任務(wù)的輸入,y為標(biāo)簽,為預(yù)訓(xùn)練階段最后一個詞的輸出 。

          原文中還提到了用輔助訓(xùn)練目標(biāo)的方法來幫助模型在微調(diào)時擁有更好的泛化能力并加速收斂,具體做法是:在使用最后一個詞的預(yù)測結(jié)果進(jìn)行監(jiān)督學(xué)習(xí)的同時,前面的詞繼續(xù)上一步的無監(jiān)督訓(xùn)練。綜上,要優(yōu)化的目標(biāo)函數(shù)如下:



          簡單總結(jié)為:對于分類問題,不需要做修改;對于推理類的問題,可在前提和假設(shè)中間插入一個分隔符作為分隔;對于相似度問題,可將兩個句子順序顛倒,然后將兩次輸入相加來做推測;對于問答類問題,可將上下文和問題放在一起,用分隔符隔開與答案。

          2. BERT

          為了解決 GPT 采用單向語言模型所帶來的問題,Google Brain 在2018年提出了基于雙向 Transformer 的大規(guī)模預(yù)訓(xùn)練語言模型 BERT[18],刷新了11項(xiàng) NLP 任務(wù)的 SOTA,具有里程碑意義。

          在預(yù)訓(xùn)練階段,BERT 提出了 Masked Language Model(MLM)與 Next Sentence Prediction(NSP) 的預(yù)訓(xùn)練方法,MLM 任務(wù)令模型預(yù)測文本中隨機(jī)覆蓋的缺失詞,類似完形填空。同時,為避免覆蓋所用高頻標(biāo)簽 [MASK] 帶來的誤差,將其中部分標(biāo)簽換為隨機(jī)詞。NSP 任務(wù)則是利用?[CLS] 與 [SEP] 標(biāo)簽分隔上下句關(guān)系,以滿足基于句子級別的下游任務(wù)的需要(如 QA、NLI 等)。

          BERT 的輸入如下圖所示:


          在微調(diào)階段,BERT 和 GPT 并沒有多少本質(zhì)上的區(qū)別,論文中給出了幾種不同任務(wù)的微調(diào)方案,如下圖:


          至此,BERT 的訓(xùn)練過程可以總結(jié)為下圖:


          BERT 雖然有著非常好的表現(xiàn),但它依然存在以下問題:1.預(yù)訓(xùn)練和微調(diào)階段的不一致性(Discrepancy):預(yù)訓(xùn)練 BERT 時,會隨機(jī) Mask 掉一些單詞,但在微調(diào)階段,卻并沒有諸如 [MASK] 之類的標(biāo)簽,從而導(dǎo)致兩個過程的不一致;2.與標(biāo)準(zhǔn)的語言模型相比,BERT 并不具備很好的生成能力。

          XLNet[31] 是 BERT 之后比較引人注目的一個模型,提出了 Permutation Language Model 的新目標(biāo),即利用重排列的方式使得在單向的自回歸 LM 中也能看到下文信息,這樣結(jié)合了自回歸 LM 擅長生成和自編碼 LM 能夠捕獲雙向信息的優(yōu)點(diǎn)。但是,XLNet 的后續(xù)評價并沒有高于 BERT,基于 XLNet 的后續(xù)研究也比較少,可能原因?yàn)?XLNet 使用的訓(xùn)練數(shù)據(jù)的質(zhì)量要優(yōu)于 BERT,這使得兩者的對比并不公平。或者 BERT 根本沒有得到充分的訓(xùn)練,因此沒有發(fā)揮出其真正實(shí)力。

          基于這種觀點(diǎn),F(xiàn)acebook 的研究人員提出了 RoBERTa[32]。RoBERTa 的主要工作是通過改進(jìn)訓(xùn)練任務(wù)和數(shù)據(jù)生成方式、使用更多數(shù)據(jù)、更大批次、訓(xùn)練更久等方式對 BERT 進(jìn)行改進(jìn),換言之,RoBERTa 本質(zhì)上算是一個調(diào)參調(diào)到最優(yōu)的 BERT,其實(shí)際表現(xiàn)和 XLNet 不相上下。但無論是 XLNet 還是 RoBERTa 亦或是其它 BERT 變體,它們大多通過使用更多的數(shù)據(jù)、更復(fù)雜的模型等方式來提升訓(xùn)練效果,這極大加劇了內(nèi)存開銷。

          為了緩解這個問題,Google 提出了 ALBERT[33],希望用更少的參數(shù)、更低的內(nèi)存開銷來達(dá)到甚至提升 BERT 效果。論文中指出,增加參數(shù)量有時并不會提高模型性能,相反這可能會降低模型的效果,作者將該現(xiàn)象稱為“模型退化”。基于此,ALBERT 提出了三種優(yōu)化策略:1.分解詞嵌入矩陣;2.跨層參數(shù)共享;3.將 NSP 任務(wù)換成更復(fù)雜的 SOP 任務(wù),以補(bǔ)償前兩步性能上的損失。

          以上介紹了部分 Transformer 結(jié)構(gòu)的主要應(yīng)用模型與變體,概括了不同的模型優(yōu)化方法,總的來說,按照模型提高效率的方法可以分為以下七類[16]?:

          • Fixed Patterns(固定模式):將視野限定為固定的預(yù)定義模式,例如局部窗口、固定步幅塊,用于簡化注意力矩陣;

          • Combination of Patterns(組合模式):通過組合兩個或多個不同的模式來提高效率;

          • Learnable Patterns(可學(xué)習(xí)模式):以數(shù)據(jù)驅(qū)動的方式學(xué)習(xí)訪問模式,關(guān)鍵在于確定 Token 相關(guān)性。

          • Memory(內(nèi)存):利用可以一次訪問多個 Token 的內(nèi)存模塊,例如全局存儲器。

          • Low Rank(低秩):通過利用自注意力矩陣的低秩近似,來提高效率。

          • Kernels(內(nèi)核):通過內(nèi)核化的方式提高效率,其中核是注意力矩陣的近似,可視為低秩方法的一種。

          • Recurrence(遞歸):利用遞歸,連接矩陣分塊法中的各個塊,最終提高效率。


          參考資料
          [1]Vaswani, Ashish, et al. "Attention is all you need."?Advances in neural information processing systems?30 (2017): 5998-6008.
          [2]Wang, Benyou, et al. "Encoding word order in complex embeddings." arXiv preprint arXiv:1912.12333 (2019).
          [3]Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. "Neural machine translation by jointly learning to align and translate."?arXiv preprint arXiv:1409.0473?(2014).
          [4]Gehring, Jonas, et al. "Convolutional sequence to sequence learning."?arXiv preprint arXiv:1705.03122?(2017).
          [5]Cheng, Jianpeng, Li Dong, and Mirella Lapata. "Long short-term memory-networks for machine reading."?arXiv preprint arXiv:1601.06733?(2016).
          [6]Guo, Qipeng, et al. "Star-transformer."?arXiv preprint arXiv:1902.09113?(2019).
          [7]Tang, Gongbo, et al. "Why self-attention? a targeted evaluation of neural machine translation architectures."?arXiv preprint arXiv:1808.08946?(2018).
          [8]Kitaev, Nikita, ?ukasz Kaiser, and Anselm Levskaya. "Reformer: The efficient transformer."?arXiv preprint arXiv:2001.04451?(2020).
          [9]Child, Rewon, et al. "Generating long sequences with sparse transformers."?arXiv preprint arXiv:1904.10509?(2019).
          [10]Zhang, Shuai, et al. "TensorCoder: Dimension-Wise Attention via Tensor Representation for Natural Language Modeling."?arXiv preprint arXiv:2008.01547?(2020).
          [11]Ioffe, Sergey , and C. Szegedy . "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift." (2015).
          [12]Ba, Jimmy Lei , J. R. Kiros , and G. E. Hinton . "Layer Normalization." (2016).
          [13]Xiong, Ruibin , et al. "On Layer Normalization in the Transformer Architecture." (2020).
          [14]Lee, Juho, et al. "Set transformer: A framework for attention-based permutation-invariant neural networks."?International Conference on Machine Learning. PMLR, 2019.
          [15]Dai, Zihang, et al. "Transformer-xl: Attentive language models beyond a fixed-length context."?arXiv preprint arXiv:1901.02860?(2019).
          [16]Tay, Yi, et al. "Efficient transformers: A survey."?arXiv preprint arXiv:2009.06732?(2020).
          [17]Radford, Alec, et al. "Improving language understanding by generative pre-training." (2018): 12.
          [18]Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding."?arXiv preprint arXiv:1810.04805?(2018).
          [19]Liu, Xiaodong, et al. "Multi-task deep neural networks for natural language understanding."?arXiv preprint arXiv:1901.11504?(2019).
          [20]余同瑞,金冉,韓曉臻,李家輝,郁婷.Tongrui Yu,ra自然語言處理預(yù)訓(xùn)練模型的研究綜述,2020
          [21]Xipeng Qiu,Tianxiang Sun,Yige Xu,etc.Pre-trained Models for Natural Language Processing: A Survey,2020
          [22]Yoshua Bengio, et al. "A neural probabilistic language model."?Journal of machine learning research, 3(Feb):1137–1155, 2003.
          [23]Ronan Collobert, JasonWeston, L′eon Bottou, Michael Karlen,Koray Kavukcuoglu, and Pavel P. Kuksa. Natural language processing (almost) from scratch. J. Mach. Learn. Res., 2011.
          [24]Tomas Mikolov, Ilya Sutskever, Kai Chen, Gregory S. Corrado, and Jeffrey Dean. Distributed representations of words and phrases and their compositionality. In NeurIPS, 2013.
          [25]Jeffrey Pennington, Richard Socher, and Christopher D. Manning. GloVe: Global vectors for word representation. In EMNLP, 2014.
          [26]Piotr Bojanowski, Edouard Grave, Armand Joulin, and Tomas Mikolov. Enriching word vectors with subword information.TACL, 5:135–146, 2017.
          [27]Bryan McCann, James Bradbury, Caiming Xiong, and Richard Socher. Learned in translation: Contextualized word vectors. In NeurIPS, 2017.
          [28]Oren Melamud, Jacob Goldberger, and Ido Dagan. Context2Vec: Learning generic context embedding with bidirectional LSTM. In CoNLL, pages 51–61, 2016.
          [29]Prajit Ramachandran, Peter J Liu, and Quoc Le. Unsupervised pretraining for sequence to sequence learning. In EMNLP,pages 383–391, 2017.
          [30]Jeremy Howard and Sebastian Ruder. Universal language model fine-tuning for text classification. In ACL, pages 328–339, 2018.
          [31]Yang, Zhilin, et al. "Xlnet: Generalized autoregressive pretraining for language understanding."?Advances in neural information processing systems. 2019.
          [32]Liu, Yinhan, et al. "Roberta: A robustly optimized bert pretraining approach."?arXiv preprint arXiv:1907.11692?(2019).
          [33]Lan, Zhenzhong, et al. "Albert: A lite bert for self-supervised learning of language representations."?arXiv preprint arXiv:1909.11942?(2019).



          推薦閱讀


          添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳),即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群:月大咖直播分享、真實(shí)項(xiàng)目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

          △長按添加極市小助手

          △長按關(guān)注極市平臺,獲取最新CV干貨

          覺得有用麻煩給個在看啦~??
          瀏覽 77
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  www.日逼 | 亚洲 欧美 乱伦 | 欧美色逼综合 | 大香伊人中文字幕精品 | 一本超碰久草 |