2023自然語言處理導(dǎo)論 6語言模型_第1頁
2023自然語言處理導(dǎo)論 6語言模型_第2頁
2023自然語言處理導(dǎo)論 6語言模型_第3頁
2023自然語言處理導(dǎo)論 6語言模型_第4頁
2023自然語言處理導(dǎo)論 6語言模型_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1第六章語言模型自然語言處理導(dǎo)論語言模型概述6.1n元語言模型6.2神經(jīng)網(wǎng)絡(luò)語言模型6.3目錄Contents2預(yù)訓(xùn)練語言模型6.4大規(guī)模語言模型6.5語言模型評價方法6.6語言模型概述6.1n元語言模型6.2神經(jīng)網(wǎng)絡(luò)語言模型6.3目錄Contents3預(yù)訓(xùn)練語言模型6.4大規(guī)模語言模型6.5語言模型評價方法6.66語言模型4語言模型目標(biāo)是建模自然語言的概率分布,在自然語言處理研究中具有重要的作用,是機器翻譯、語音識別、輸入法、句法分析等任務(wù)的支撐。語言模型是自然語言處理基礎(chǔ)任務(wù)之一,大量的研究從n元語言模型和神經(jīng)語言模型等不同角度開展了系列工作。由于語言模型可以為自然語言的表示學(xué)習(xí)提供天然的自監(jiān)督訓(xùn)練目標(biāo),近年來,預(yù)訓(xùn)練語言模型做為通用的基于深度神經(jīng)網(wǎng)絡(luò)的自然語言處理算法的基礎(chǔ)工具,受到越來越多的重視。大規(guī)模的預(yù)訓(xùn)練語言模型對于提升各類自然語言處理任務(wù)的效果起到了重要作用。6.1語言模型概述5語言模型(LanguageModel,LM)目標(biāo)是構(gòu)建詞序列w1w2...wm

的概率分布P(w1w2...wm),即計算給定的詞序列w1w2...wm作為一個句子出現(xiàn)的可能性大小。詞匯表V上的語言模型由函數(shù)P(w1w2...wm)表示,對于任意詞串w1w2...wm∈V+,則有P(w1w2...wm)?0,并且對于所有詞串,函數(shù)P(w1w2...wm)滿足歸一化條件由于聯(lián)合概率P(w1w2...wm)的參數(shù)量十分巨大,直接計算P(w1w2...wm)非常困難。如果把w1w2...wm看作一個變量,那么它具有|V|m

種可能。按照《現(xiàn)代漢語詞典(第七版)》包含7萬詞條,句子長度按照20個詞計算,模型參數(shù)量達(dá)到7.9792*1096的天文數(shù)字。6.1語言模型概述6為了減少P(w1w2...wm)模型參數(shù)量,可以利用句子序列通常情況下從左至右的生成過程進行分解,使用鏈?zhǔn)椒▌t得到:由此,w1w2...wm的生成過程可以看作單詞逐個生成的過程。首先生成w1,之后根據(jù)w1

生成w2,再根據(jù)w1

和w2

生成w3,以此類推,根據(jù)前m?1個單詞生成最后一個單詞wm

6.1語言模型概述7僅通過上述過程模型的參數(shù)量依然沒有下降,P(wm|w1w2...wm-1)的參數(shù)量依然是天文數(shù)字。然而基于上述轉(zhuǎn)換,我們可以進一步的對模型進行簡化n元語言模型基于分布式表示和神經(jīng)網(wǎng)絡(luò)的語言模型語言模型的訓(xùn)練過程雖然采用的有監(jiān)督方法,但是由于訓(xùn)練目標(biāo)可以通過原始文本直接獲得,從而使得模型的訓(xùn)練僅需要大規(guī)模無標(biāo)注文本即可。語言模型也成為了典型的自監(jiān)督學(xué)習(xí)(Self-supervisedLearning)任務(wù)。語言模型概述6.1n元語言模型6.2神經(jīng)網(wǎng)絡(luò)語言模型6.3目錄Contents8預(yù)訓(xùn)練語言模型6.4大規(guī)模語言模型6.5語言模型評價方法6.66.2n元語言模型9語言模型通常用于反映一個句子出現(xiàn)的可能性,給定由單詞序列w1w2...wn組成的句子S,可以利用語言的特性,使用鏈?zhǔn)椒ǚ纸鈩t得到:其中,詞wi出現(xiàn)的概率受它前面的i?1個詞w1w2...wi?1

影響,我們將這i?1個詞w1w2...wi?1稱之為詞wi

的歷史。如果歷史單詞有i?1個,那么可能的單詞組合就有|V|i?1

種。最簡單的根據(jù)語料庫對P(wi|w1w2...wi?1)進行估計的方法是基于詞序列在語料中出現(xiàn)次數(shù)(也稱為頻次)的方法:6.2n元語言模型10隨著歷史單詞數(shù)量增多,絕大多數(shù)的歷史并不會在訓(xùn)練數(shù)據(jù)中出現(xiàn),這也意味著P(wi|w1w2...wi?1)就很可能為0,使得概率估計失去了意義。為了解決上述問題,可以進一步假設(shè)任意單詞wi出現(xiàn)的概率只與過去n?1個詞相關(guān)滿足上述條件的模型被稱為n元語法或n元文法(n-gram)模型。其中n-gram表示n個連續(xù)單詞構(gòu)成的單元,也被稱為n元語法單元。6.2n元語言模型11隨著歷史單詞數(shù)量增多,絕大多數(shù)的歷史并不會在訓(xùn)練數(shù)據(jù)中出現(xiàn),這也意味著P(wi|w1w2...wi?1)就很可能為0,使得概率估計失去了意義。為了解決上述問題,可以進一步假設(shè)任意單詞wi出現(xiàn)的概率只與過去n?1個詞相關(guān)滿足上述條件的模型被稱為n元語法或n元文法(n-gram)模型。其中n-gram表示n個連續(xù)單詞構(gòu)成的單元,也被稱為n元語法單元。以二元語法為例,一個詞的概率只依賴于前一個詞,則句子S的出現(xiàn)概率可以表示為:6.2n元語言模型12盡管n元語言模型能緩解句子概率為0的問題,但語言是由人和時代創(chuàng)造的,具備無窮的可能性,再龐大的訓(xùn)練語料也無法覆蓋所有的n-gram,而訓(xùn)練語料中的零頻率并不代表零概率。因此,需要使用平滑技術(shù)(Smoothing)來解決這一問題平滑是指為了產(chǎn)生更合理的概率,對最大似然估計進行調(diào)整的一類方法,也稱為數(shù)據(jù)平滑(DataSmoothing)。平滑處理的基本思想是提高低概率,降低高概率,使整體的概率分布趨于均勻。6.2.1加法平滑13加法平滑(AdditiveSmoothing)是實際運用中最常用的平滑技術(shù)之一。其思想是假設(shè)事件出現(xiàn)的次數(shù)比實際出現(xiàn)的次數(shù)多δ次。以二元語法模型為例,其平滑后的條件概率為:其中0?δ?1,V是訓(xùn)練語料中所有單詞的集合,C(wi)表示單詞wi

出現(xiàn)的次數(shù),C(wi?1wi)代表詞wi?1

和詞wi

同時出現(xiàn)次數(shù)??梢赃M一步拓展到n元語言模型上:當(dāng)δ=1時,該方法又稱為加一平滑。6.2.2古德-圖靈估計法14古德-圖靈估計法是1953年由I.J.Good基于圖靈(Turning)的方法提出的,是多種平滑技術(shù)的核心。該方法基于的核心思想是將一部分已知事件的概率分配給未見的事件。對于n元語言模型來說,降低出現(xiàn)次數(shù)多的n-gram,同時將剩余概率分配給未出現(xiàn)的n-gram。具體來說,對于任意一個出現(xiàn)了r次的n元語法,按照如下公式修改為出現(xiàn)了r*次:其中,nr

代表有nr

個n-gram在訓(xùn)練語料中出現(xiàn)了r次。對其進行歸一化后,即可得到出現(xiàn)r次的n元語法概率:對于r=0的未見事件,有n1/N的概率余量可以用于分配6.2.2古德-圖靈估計法156.2.3Katz平滑16Katz平滑是1987年由S.M.Katz所提出的后備(back-off)平滑方法,其在古德-圖靈估計法的基礎(chǔ)上引入了高階模型與低階模型的結(jié)合。Katz平滑法的基本思想是將因減值獲得的概率余量根據(jù)低階模型的分布分配給未見事件,而不是進行平均分配,從而令低概率事件有更合理的概率分布。Katz平滑法的做法是,當(dāng)事件在樣本中出現(xiàn)的頻次大于某一數(shù)值k時,運用最大似然估計法,通過減值來估計其概率值;而當(dāng)事件的頻次小于k值時,使用低階的語法模型作為代替高階語法模型的后備。6.2.3Katz平滑17Katz平滑是1987年由S.M.Katz所提出的后備(back-off)平滑方法,其在古德-圖靈估計法的基礎(chǔ)上引入了高階模型與低階模型的結(jié)合。Katz平滑法的基本思想是將因減值獲得的概率余量根據(jù)低階模型的分布分配給未見事件,而不是進行平均分配,從而令低概率事件有更合理的概率分布。Katz平滑法的做法是,當(dāng)事件在樣本中出現(xiàn)的頻次大于某一數(shù)值k時,運用最大似然估計法,通過減值來估計其概率值;而當(dāng)事件的頻次小于k值時,使用低階的語法模型作為代替高階語法模型的后備。所有具有非零計數(shù)r的二元語法都根據(jù)折扣率dr

被減值了。從非零計數(shù)中減去的計數(shù)量,根據(jù)低一階的分布,即一元語法模型,分配給了計數(shù)為零的二元語法。6.2.3Katz平滑18根據(jù)修正的計數(shù)計算概率Pkatz(wi|wi?1),需要按照如下公式進行歸一化:在二元語法的基礎(chǔ)上可以將Katz平滑算法拓展到高階n元語法模型6.2.4平滑方法總結(jié)19除了我們在上述章節(jié)介紹的平滑算法之外,研究人員們提出了有很多針對語言模型的平滑算法,包括JelinekMercer平滑算法、Witten-Bell平滑算法、Kneser-Ney平滑算法等。這些方法的核心思想大都可以歸納為:如果n-gram存在則使用其本身計數(shù),如果不存在再退后到低階分布??梢杂萌缦鹿奖硎荆涸诖嘶A(chǔ)上,一些平滑算法采用高階和低階n元語法模型的線性插值的方法,融合高階和低階語法的估計,如以下公式所示:語言模型概述6.1n元語言模型6.2神經(jīng)網(wǎng)絡(luò)語言模型6.3目錄Contents20預(yù)訓(xùn)練語言模型6.4大規(guī)模語言模型6.5語言模型評價方法6.66.3神經(jīng)網(wǎng)絡(luò)語言模型21隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,利用神經(jīng)網(wǎng)絡(luò)的語言模型展現(xiàn)出了比n元語言模型更強學(xué)習(xí)能力。神經(jīng)網(wǎng)絡(luò)先進的結(jié)構(gòu)使其能有效的建模長距離上下文依賴,以詞向量(WordEmbedding)為代表的分布式表示的語言模型深刻地影響了自然語言處理領(lǐng)域的其他模型與應(yīng)用的變革。n元語言模型幾乎已經(jīng)被神經(jīng)網(wǎng)絡(luò)的語言模型所替代。6.3.1前饋神經(jīng)網(wǎng)絡(luò)語言模型22給定歷史單詞序列w1w2...wi-1,神經(jīng)網(wǎng)絡(luò)語言模型的目標(biāo)是根據(jù)歷史單詞對下一時刻詞進行預(yù)測。與傳統(tǒng)n元語言模型類似,前饋神經(jīng)網(wǎng)絡(luò)語言模型沿用了馬爾可夫假設(shè),即下一時刻的詞只與過去n-1個詞相關(guān),其目標(biāo)可以表示為輸入歷史單詞wi-n+1...wi-1,輸出詞wi在詞表V上的概率分布,即估計條件概率輸入層、隱藏層和輸出層6.3.1前饋神經(jīng)網(wǎng)絡(luò)語言模型23歷史詞序列首先經(jīng)過輸入層被轉(zhuǎn)換為離散的獨熱編碼,隨后每個詞的獨熱編碼被映射為一個低維稠密的實數(shù)向量;隱藏層對詞向量層的輸出進行編碼,進行多次線性變換與非線性映射;隱藏層向量經(jīng)過輸出層被映射到詞表空間,再利用Softmax函數(shù)得到其詞表上的概率分布。vi?1∈Rd

代表詞wi?1

所對應(yīng)的詞向量輸入層隱藏層輸出層6.3.2循環(huán)神經(jīng)網(wǎng)絡(luò)24在實際場景下,固定長度的歷史詞并不是總能提供充分的信息,對于信息較為復(fù)雜的長文本,模型需要依賴較長的歷史才能做出準(zhǔn)確預(yù)測。例如:與

小明

一起旅行游玩總是充滿了驚喜,你永遠(yuǎn)不會知道

將要帶你到哪里去。循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)常用于處理序列結(jié)構(gòu)的數(shù)據(jù),其特點是上一時刻的模型隱藏層狀態(tài)會作為當(dāng)前時刻模型的輸入,每一時刻的隱藏層狀態(tài)都會維護所有過去詞的信息。循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型不再基于馬爾可夫假設(shè),每個時刻的單詞都會考慮到過去所有時刻的單詞,詞之間的依賴通過隱藏層狀態(tài)來獲取,這剛好解決了語言模型需要動態(tài)依賴的問題。6.3.2循環(huán)神經(jīng)網(wǎng)絡(luò)25循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型由三部分組成:輸入層、隱藏層和輸出層語言模型概述6.1n元語言模型6.2神經(jīng)網(wǎng)絡(luò)語言模型6.3目錄Contents26預(yù)訓(xùn)練語言模型6.4大規(guī)模語言模型6.5語言模型評價方法6.66.4預(yù)訓(xùn)練語言模型27受到計算機視覺領(lǐng)域采用ImageNet對模型進行一次預(yù)選訓(xùn)練,使得模型可以通過海量圖像充分學(xué)習(xí)如何提取特征,然后再根據(jù)任務(wù)目標(biāo)進行模型精調(diào)的范式影響,自然語言處理領(lǐng)域基于預(yù)訓(xùn)練語言模型的方法也逐漸成為主流。ELMo為代表的動態(tài)詞向量模型開啟了語言模型預(yù)訓(xùn)練的大門,此后以GPT和BERT為代表的基于Transformer的大規(guī)模預(yù)訓(xùn)練語言模型的出現(xiàn),使得自然語言處理全面進入了預(yù)訓(xùn)練微調(diào)范式新時代。將預(yù)訓(xùn)練模型應(yīng)用于下游任務(wù)時,不需要了解太多的任務(wù)細(xì)節(jié),不需要設(shè)計特定的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),只需要“微調(diào)”預(yù)訓(xùn)練模型,即使用具體任務(wù)的標(biāo)注數(shù)據(jù)在預(yù)訓(xùn)練語言模型上進行監(jiān)督訓(xùn)練,就可以取得顯著的性能提升。6.4.1動態(tài)詞向量算法ELMo28詞向量主要利用語料庫中詞之間的共現(xiàn)信息,學(xué)習(xí)詞語的向量表示。因此,根據(jù)給定的語料庫所學(xué)習(xí)的到的詞向量是恒定不變的,可以認(rèn)為是“靜態(tài)”的,不跟隨上下文發(fā)生變化。然而,自然語言中詞語往往具有多種語義,在不同的上下文或語境下會具有不同的語義。動態(tài)詞向量(DynamicWordEmbedding),也稱為上下文相關(guān)的詞向量(ContextualizedWordEmbedding方法,一個詞語的向量通過其所在的上下文計算獲得,跟隨上下文動態(tài)變化。6.4.1動態(tài)詞向量算法ELMo29圖6.3雙向預(yù)訓(xùn)練語言模型ELMo神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)6.4.1動態(tài)詞向量算法ELMo30ELMo使用了兩個獨立的編碼器分別對前向和后向進行語言模型建模,在進行預(yù)訓(xùn)練時,分別取最高層的正向和反向LSTM輸出預(yù)測下一時刻的詞。ELMo算法的編碼層采用了多層雙向LSTM結(jié)構(gòu),通常認(rèn)為,模型低層能捕捉語法等基礎(chǔ)特征,高層能捕捉語義語境等更深層次的語言特征,雙向的LSTM能保證在編碼過程中每個位置都能獲得該位置過去和未來位置的詞信息。對于詞wi來說,一個L層的EMLo模型會產(chǎn)生2L+1個向量表示:6.4.1動態(tài)詞向量算法ELMo31在進行下游任務(wù)時,ELMo將Ri中的所有向量整合成一個向量,整合的方式由任務(wù)而定,最簡單的情況是直接使用最后一層的表示。因為每層LSTM學(xué)習(xí)到的信息不相同,對于不同任務(wù)來說,每層特征的重要性也不盡相同,因此更普遍的做法是根據(jù)任務(wù)所需信息,對每層的特征進行加權(quán)得到詞wi的對應(yīng)的EMLo向量,其計算過程可以表示為:γtask

是整體的縮放系數(shù),stask

是每層的權(quán)重系數(shù),反映每一層向量對于目標(biāo)任務(wù)的重要性。

6.4.2生成式預(yù)訓(xùn)練語言模型GPT32OpenAI公司在2018年提出的GPT(GenerativePre-Training)模型是典型的生成式預(yù)訓(xùn)練語言模型之一。GPT-2模型結(jié)構(gòu)如圖6.4所示,由多層Transformer組成的單向語言模型,主要可以分為輸入層,編碼層和輸出層三部分。圖6.4

GPT-2預(yù)訓(xùn)練語言模型結(jié)構(gòu)6.4.2生成式預(yù)訓(xùn)練語言模型GPT33GPT采用生成式預(yù)訓(xùn)練方法,單向意味著模型只能從左到右或從右到左對文本序列建模,所采用的Transformer結(jié)構(gòu)保證了輸入文本每個位置只能依賴過去時刻的信息。給定文本序列w=w1w2...wn,GPT-2首先在輸入層中將其映射為稠密的向量vti是詞wi的詞向量,vpi是詞wi的位置向量,vi為第i個位置的單詞經(jīng)過模型輸入層(第0層)后的輸出經(jīng)過輸入層編碼,模型得到表示向量序列v=v1...vn,隨后將v送入模型編碼層6.4.2生成式預(yù)訓(xùn)練語言模型GPT34編碼層由L個Transformer模塊組成,在自注意力機制的作用下,每一層的每個表示向量都會包含之前位置表示向量的信息,使每個表示向量都具備豐富的上下文信息,并且經(jīng)過多層解碼后,GPT-2能得到每個單詞層次化的組合式表示,其計算過程表示如下:GPT-2模型的輸出層基于最后一層的表示h(L),預(yù)測每個位置上的條件概率,其計算過程可以表示為:單向語言模型}是按照閱讀順序輸入文本序列w,用常規(guī)語言模型目標(biāo)優(yōu)化w的最大似然估計,使之能根據(jù)輸入歷史序列對當(dāng)前詞能做出準(zhǔn)確的預(yù)測:6.4.2生成式預(yù)訓(xùn)練語言模型GPT35通過無監(jiān)督語言模型預(yù)訓(xùn)練,使得GPT模型具備了一定的通用語義表示能力。根據(jù)下游任務(wù)精調(diào)(Fine-tuning)的目的是在通用語義表示基礎(chǔ)上,根據(jù)下游任務(wù)的特性進行適配。下游任務(wù)通常需要利用有標(biāo)注數(shù)據(jù)集進行訓(xùn)練,數(shù)據(jù)集合使用D進行表示,每個樣例輸入長度為n的文本序列x=x1x2...xn和對應(yīng)的標(biāo)簽y構(gòu)成。首先將文本序列x輸入GPT模型,獲得最后一層的最后一個詞所對應(yīng)的隱藏層輸出hn(L),在此基礎(chǔ)上通過全連接層變換結(jié)合Softmax函數(shù),得到標(biāo)簽預(yù)測結(jié)果。通過對整個標(biāo)注數(shù)據(jù)集D優(yōu)化如下?lián)p失函數(shù)精調(diào)下游任務(wù):6.4.2生成式預(yù)訓(xùn)練語言模型GPT36下游任務(wù)在精調(diào)過程中,針對任務(wù)目標(biāo)進行優(yōu)化,很容易使得模型對預(yù)訓(xùn)練階段所學(xué)習(xí)到的通用語義知識表示遺忘,從而損失模型的通用性和泛化能力,造成災(zāi)難性遺忘(CatastrophicForgetting)問題。通常會采用混合預(yù)訓(xùn)練任務(wù)損失和下游精調(diào)損失的方法來緩解上述問題。在實際應(yīng)用中,通常采用如下公式進行下游任務(wù)精調(diào):6.4.3掩碼預(yù)訓(xùn)練語言模型BERT372018年Devlin等人提出了掩碼預(yù)訓(xùn)練語言模型BERT(BidirectionalEncoderRepresentationfromTransformers)。BERT利用掩碼機制構(gòu)造了基于上下文預(yù)測中間詞的預(yù)訓(xùn)練任務(wù),相較于傳統(tǒng)的語言模型建模方法,BERT能進一步挖掘上下文所帶來的豐富語義。圖6.5掩碼預(yù)訓(xùn)練語言模型BERT神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)6.4.3掩碼預(yù)訓(xùn)練語言模型BERT38BERT由多層Transformer編碼器組成,這意味著在編碼過程中,每個位置都能獲得所有位置的信息,而不僅僅是歷史位置的信息。BERT同樣由輸入層,編碼層和輸出層三部分組成。編碼層由多層Transformer編碼器組成。在預(yù)訓(xùn)練時,模型的最后有兩個輸出層MLM和NSP,分別對應(yīng)了兩個不同的預(yù)訓(xùn)練任務(wù):掩碼語言模型(MaskedLanguageModeling,MLM)和下一句預(yù)測(NextSentencePrediction,NSP)掩碼語言模型的訓(xùn)練對于輸入形式?jīng)]有要求,可以是一句話也可以一段文本,甚至可以是整個篇章,但是下一句預(yù)測則需要輸入為兩個句子,因此BERT在預(yù)訓(xùn)練階段的輸入形式統(tǒng)一為兩段文字的拼接,這與其他預(yù)訓(xùn)練模型相比有較大區(qū)別。6.4.3掩碼預(yù)訓(xùn)練語言模型BERT39BERT輸入層采用了WordPiece分詞,根據(jù)詞頻,決定是否將一個完整的詞切分為多個子詞以緩解OOV問題例如:單詞highest可以被切分為high和##est兩個子詞。對輸入文本進行分詞后,BERT的輸入表示由三部分組成:詞嵌入(TokenEmbedding)、段嵌入(SegmentEmbedding)和位置嵌入(PositionEmbedding)。每個詞的輸入表示v可以表示為:6.4.3掩碼預(yù)訓(xùn)練語言模型BERT40詞嵌入用來將詞轉(zhuǎn)換為實值向量表示。完成分詞后,切分完的子詞通過詞嵌入矩陣轉(zhuǎn)化為詞嵌入表示,假設(shè)子詞對應(yīng)的獨熱向量表示為et

,其對應(yīng)的詞嵌入vt$:段嵌入用于區(qū)分不同詞所屬的段落(Segment),同一個段落中所有詞的段嵌入相同。每個段落有其特有的段編碼(SegmentEncoding),段編碼從0開始計數(shù)。位置嵌入用于表示不同詞的絕對位置。將輸入序列中每個詞從左到右編號后,每個詞都獲得位置獨熱編碼ep,通過可訓(xùn)練的位置嵌入矩陣Wp即可得到位置向量vp:6.4.3掩碼預(yù)訓(xùn)練語言模型BERT41BERT的編碼層采用多層Transformer結(jié)構(gòu),使用L表示所采用的層數(shù),H表示每層的隱藏單元數(shù),A是指自注意力頭數(shù)量。在文獻(xiàn)[29]給出了兩種不同的參數(shù)設(shè)置,BERTBASE使用L=12,H=768,A=12,總參數(shù)量為110M,BERTLARGE使用L=24,H=1024,A=16,總參數(shù)量為340M。需要注意的是,與GPT中Transformer結(jié)構(gòu)所采用的約束自注意力(ConstrainedSelf-Attention)僅關(guān)注當(dāng)前單元左側(cè)上下文不同,BERT采用的Transformer結(jié)構(gòu)使用了雙向多頭自注意機制,不僅關(guān)注當(dāng)前單元左側(cè)上下文情況,也會關(guān)注右側(cè)上下文。6.4.3掩碼預(yù)訓(xùn)練語言模型BERT42為了更好的利用上下文信息,讓當(dāng)前時刻的詞表示同時編碼“過去”和“未來”的文本,BERT采用了一種類似于完形填空的任務(wù),即掩碼語言建模。在預(yù)訓(xùn)練時,隨機將輸入文本的部分單詞掩蓋(Mask),讓模型預(yù)測被掩蓋的單詞,從而讓模型具備根據(jù)上下文還原被掩蓋的詞的能力。在BERT的預(yù)訓(xùn)練過程中,輸入文本中15%的子詞會被掩蓋。具體來說,模型將被掩蓋位置的詞替換為特殊字符“[MASK]”,代表模型需要還原該位置的詞。但在執(zhí)行下游任務(wù)時,[MASK]字符并不會出現(xiàn),這導(dǎo)致預(yù)訓(xùn)練任務(wù)和下游任務(wù)不一致。因此,在進行掩蓋時,并不總是直接將詞替換為[MASK],而是根據(jù)概率從三種操作中選擇一種:(1)80\%的概率替換為[MASK];(2)10\%的概率替換為詞表中任意詞;(3)10\%的概率不進行替換。6.4.3掩碼預(yù)訓(xùn)練語言模型BERT43對于閱讀理解、語言推斷等需要輸入兩段文本的任務(wù)來說,模型尚不具備判斷兩段文本關(guān)系的能力。因此,為了學(xué)習(xí)到兩段文本間的關(guān)聯(lián),BERT引入了第二個預(yù)訓(xùn)練任務(wù):下一句預(yù)測(NSP)。下一句預(yù)測的任務(wù)目標(biāo)是預(yù)測兩段文本是否構(gòu)成上下句的關(guān)系。對于句子A和句子B,若語料中這兩個句子相鄰,則構(gòu)成正樣本,若不相鄰,則構(gòu)成負(fù)樣本。在預(yù)訓(xùn)練時,一個給定的句子對,有50%的概率將其中一句替換成來自其他段落的句子。這樣可以將訓(xùn)練樣本的正負(fù)例比例控制在1:1。6.4.4序列到序列預(yù)訓(xùn)練語言模型BART44自回歸式模型GPT缺乏上下文語境信息,而BERT雖然能利用上下文信息,但其預(yù)訓(xùn)練任務(wù)使其在自然語言生成任務(wù)上表現(xiàn)不佳。BART(BidirectionalandAuto-RegressiveTransformers)兼具上下文語境信息的編碼器和自回歸特性的解碼器,配合上針對自然語言生成制定的預(yù)訓(xùn)練任務(wù),使其格外契合生成任務(wù)的場景。圖6.6BART的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)6.4.4序列到序列預(yù)訓(xùn)練語言模型BART45BART的預(yù)訓(xùn)練過程采用的是對含有噪聲的輸入文本進行去噪重構(gòu)方法,屬于去噪自編碼器(DenoisingAutoencoder)。BART使用雙向編碼對引入噪聲的文本進行編碼,單向的自回歸解碼器通過自回歸方式順序重構(gòu)原始文本。BART的預(yù)訓(xùn)練任務(wù)主要關(guān)注如何引入噪聲。BART模型使用了五種方式在輸入文本上引入噪音:單詞掩碼(TokenMasking):隨機從輸入文本中選擇一些單詞,將其替換為掩碼([MASK])標(biāo)記,類似于BERT。該噪聲需要模型具備預(yù)測單個單詞的能力。單詞刪除(TokenDeletion):隨機從輸入文本中刪除一部分單詞。該噪聲除了需要模型預(yù)測單個單詞的能力,還需要模型能定位缺失單詞的位置。文本填充(TextInfilling):隨機將輸入文本中多處連續(xù)的單詞(稱作文本片段)替換為一個掩碼標(biāo)記。文本片段的長度服λ=3的泊松分布。當(dāng)文本片段長度為0時,相當(dāng)于插入一個掩碼標(biāo)記。該噪音需要模型能識別一個文本片段有多長,并具備預(yù)測缺失片段的能力。句子排列變換(SentencePermutation):對于一個完整的句子,根據(jù)句號將其分割為多個子句,隨機打亂子句的順序。該噪音需要模型能一定程度上理解輸入文本的語義,具備推理前后句關(guān)系的能力。文檔旋轉(zhuǎn)變換(DocumentRotation):隨機選擇輸入文本中的一個單詞,以該單詞作為文檔的開頭,并旋轉(zhuǎn)文檔。該噪音需要模型具備找到原始文本開頭的能力。6.4.4序列到序列預(yù)訓(xùn)練語言模型BART46圖6.7BART各類型加噪方式示例6.4.4序列到序列預(yù)訓(xùn)練語言模型BART47BART預(yù)訓(xùn)練模型具備文本表示和生成能力,因此不僅適用于文本理解任務(wù),也適用于文本生成任務(wù),但是用于不同類型任務(wù)時,其精調(diào)方式有所不同。對于序列分類任務(wù),BART模型的編碼器和解碼器的輸入相同,但是將解碼器最終時刻的隱藏層狀態(tài)作為輸入文本的語義向量表示,并利用線性分類器進行標(biāo)簽預(yù)測。利用標(biāo)注數(shù)據(jù)和模型輸出結(jié)果對模型參數(shù)進行調(diào)整。整個過程與BERT模型類似,在句子末尾添加特殊標(biāo)記,利用該位置所對應(yīng)的隱藏層狀態(tài)表示文本。對于生成式的任務(wù),比如生成式文本摘要(AbstractiveSummarization)、生成式問答(AbstractiveQuestionAnswering)等任務(wù),精調(diào)時模型輸入為任務(wù)所給定的輸入文本,解碼器所產(chǎn)生的文本與任務(wù)的目標(biāo)文本構(gòu)成學(xué)習(xí)目標(biāo)。對于機器翻譯任務(wù),由于其輸入文本和輸出文本是兩種不同的語言,使用的不同詞匯集合,因此不能采用與生成式任務(wù)相同的方法。為了解決上述問題,研究人員們提出了將BART模型的輸入層前增加小型Transformer編碼器,將源語言文本映射到目標(biāo)語言的輸入表示空間。同時,為了解決兩段模型訓(xùn)練過程不匹配的問題,采取分階段的訓(xùn)練方法。6.4.5預(yù)訓(xùn)練語言模型的應(yīng)用48在預(yù)訓(xùn)練階段,大規(guī)模的數(shù)據(jù)使預(yù)訓(xùn)練語言模型有效地學(xué)習(xí)到了語言的通用語義表示,微調(diào)(Fine-tuning)則是利用預(yù)訓(xùn)練語言模型的主要范式,其目的是基于學(xué)習(xí)到的通用表示,針對目標(biāo)領(lǐng)域的特性對模型進行調(diào)整,使其更適合下游任務(wù)。相較于深入了解下游任務(wù)的特有知識,為其精心設(shè)計特別的模型,預(yù)訓(xùn)練模型只用轉(zhuǎn)換下游任務(wù)的輸入輸出形式后進行微調(diào),即可獲得相當(dāng)有競爭力的性能。6.4.5預(yù)訓(xùn)練語言模型的應(yīng)用49單句文本分類是自然語言處理中最為常見任務(wù)之一,其目的是判斷一段文本所屬的類別。例如:判斷一段電影評價的情感傾向是正面還是負(fù)面,判斷一篇新聞所屬的類別。使用BERT進行單句文本分類任務(wù)時,對于將要進行單句文本分類的句子,BERT首先使用WordPiece進行分詞,得到分詞后的句子w1w2...wn,分別添加特殊字符[CLS]和[SEP]到句首和句尾,再經(jīng)過輸入層將其轉(zhuǎn)換為BERT編碼層所需的輸入表示,其過程可以表述如下:隨后,輸入表示進入編碼層,經(jīng)過多層Transformer編碼,每個位置的表示都通過自注意力機制進行充分交互,在最后一層得到具備豐富上下文信息的表示h。和預(yù)訓(xùn)練階段時使用[CLS]進行NSP任務(wù)類似,在進行文本分類時,模型使用[CLS]位置的隱藏層表示進行預(yù)測。6.4.5預(yù)訓(xùn)練語言模型的應(yīng)用50句子對分類需要預(yù)測一對有關(guān)聯(lián)的句子的類別例如:判斷一個句子的意思是否蘊含在另一個句子之中。句子對分類與單句分類的區(qū)別在于處理的輸入不同,BERT處理這兩個任務(wù)時,也主要在輸入上有所區(qū)別。對于分詞后的兩個句子和BERT使用[SEP]作為分隔符,將兩個句子拼接到一起,在輸入層轉(zhuǎn)換為輸入表示。6.4.5預(yù)訓(xùn)練語言模型的應(yīng)用51序列標(biāo)注任務(wù)需要解決的是字符級別的分類問題,其應(yīng)用范圍非常廣泛,可用于分詞,詞性標(biāo)注和命名實體識別等自然語言處理基礎(chǔ)任務(wù)。以命名實體識別為例,在用序列標(biāo)注的形式完成該任務(wù)時,需要對輸入文本中的每一個詞預(yù)測一個相應(yīng)的標(biāo)簽,再根據(jù)整個序列的標(biāo)簽抽取出句子中的實體詞。傳統(tǒng)的序列標(biāo)注方法通常以詞為輸入的最小粒度,而在使用BERT等預(yù)訓(xùn)練模型時,通常會使用分詞器將詞分割為更小粒度的子詞,這會破壞序列標(biāo)注中詞和標(biāo)簽一對一的關(guān)系。為了處理這種情況,可以讓一個詞的所有子詞都保持原標(biāo)簽,或者只讓第一個子詞參與訓(xùn)練,預(yù)測時也只考慮第一個子詞的預(yù)測結(jié)果。在完成分詞后,將輸入序列送入輸入層轉(zhuǎn)化為詞向量,再將詞向量送入預(yù)訓(xùn)練模型得到最終的隱藏層表示,其過程可以表示如下:在得到了隱藏層表示后,需要使用一個分類器對預(yù)測每個詞在標(biāo)簽集上的概率分布:語言模型概述6.1n元語言模型6.2神經(jīng)網(wǎng)絡(luò)語言模型6.3目錄Contents52預(yù)訓(xùn)練語言模型6.4大規(guī)模語言模型6.5語言模型評價方法6.66.5大規(guī)模語言模型53受到計算機視覺領(lǐng)域采用ImageNet對模型進行一次預(yù)選訓(xùn)練,使得模型可以通過海量圖像充分學(xué)習(xí)如何提取特征,然后再根據(jù)任務(wù)目標(biāo)進行模型精調(diào)的范式影響,自然語言處理領(lǐng)域基于預(yù)訓(xùn)練語言模型的方法也逐漸成為主流。ELMo為代表的動態(tài)詞向量模型開啟了語言模型預(yù)訓(xùn)練的大門,此后以GPT和BERT為代表的基于Transformer的大規(guī)模預(yù)訓(xùn)練語言模型的出現(xiàn),使得自然語言處理全面進入了預(yù)訓(xùn)練微調(diào)范式新時代。將預(yù)訓(xùn)練模型應(yīng)用于下游任務(wù)時,不需要了解太多的任務(wù)細(xì)節(jié),不需要設(shè)計特定的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),只需要“微調(diào)”預(yù)訓(xùn)練模型,即使用具體任務(wù)的標(biāo)注數(shù)據(jù)在預(yù)訓(xùn)練語言模型上進行監(jiān)督訓(xùn)練,就可以取得顯著的性能提升。6.5預(yù)訓(xùn)練語言模型的應(yīng)用54自2020年OpenAI發(fā)布了包含1750億參數(shù)的生成式大規(guī)模預(yù)訓(xùn)練語言模型GPT3(GenerativePre-trainedTransformer3)以來,包含Google、Meta、百度、智源等公司和研究機構(gòu)都紛紛發(fā)布了包括PaLM、LaMDA、T0等為代表的不同大規(guī)模語言模型(LargeLanguageModel,LLM),也稱大模型。6.5大規(guī)模語言模型55圖6.8大模型時間線6.5大規(guī)模語言模型562022年11月ChatGPT(ChatGenerativePre-trainedTransformer)自發(fā)布起就引起了極大的關(guān)注,5天內(nèi)注冊用戶超100萬,在系統(tǒng)推出僅兩個月后,月活躍用戶估計已達(dá)1億,并與Bing深度搜索結(jié)合構(gòu)造了對話式搜索新范式。ChatGPT整體過程可以分為三個階段:第一個階段是基礎(chǔ)大模型訓(xùn)練,該階段主要完成長距離語言模型的預(yù)訓(xùn)練,通過代碼預(yù)訓(xùn)練使得模型具備代碼生成的能力;第二階段是指令微調(diào)(InstructTuning),通過給定指令進行微調(diào)的方式使得模型具備完成各類任務(wù)的能力;第三個階段是類人對齊,加入更多人工提示詞,并利用有監(jiān)督微調(diào)并結(jié)合基于強化學(xué)習(xí)的方式,使得模型輸出更貼合人類需求。6.5.1基礎(chǔ)大模型訓(xùn)練57文獻(xiàn)[40]介紹了GPT-3模型的訓(xùn)練過程,包括模型架構(gòu)、訓(xùn)練數(shù)據(jù)組成、訓(xùn)練過程以及評估方法。由于GPT-3并沒有開放源代碼,根據(jù)論文直接重現(xiàn)整個訓(xùn)練過程并不容易,因此文獻(xiàn)[307]介紹了根據(jù)GPT-3的描述復(fù)現(xiàn)的過程,并構(gòu)造開源了系統(tǒng)OPT(OpenPre-trainedTransformerLanguageModels)。在模型架構(gòu)方面不論是GPT-3還是OPT所采用的模型結(jié)構(gòu)都與我們在本章第6.4.2節(jié)所介紹的GPT-2模型一樣,都采用由多層Transformer組成的單向語言模型,采用自回歸方式從左到右對文本序列建模。但是針對不同的規(guī)模的參數(shù)量要求,其所使用的層數(shù)、自注意力頭數(shù)、嵌入表示維度大小等具體參數(shù)各不相同。OPT給出了8種模型參數(shù)的細(xì)節(jié)。采用AdamW優(yōu)化器進行優(yōu)化,其參數(shù)

(β1,β2)

設(shè)置為$(0.9,0.95)$。6.5.1基礎(chǔ)大模型訓(xùn)練586.5.1基礎(chǔ)大模型訓(xùn)練59在預(yù)訓(xùn)練語料集方面,根據(jù)文獻(xiàn)[40]中的報道,GPT-3中通過主要包含經(jīng)過過濾的CommonCrawl數(shù)據(jù)集、WebText2、Books1、Books2以及英文Wikipedia等數(shù)據(jù)集合。其中CommonCrawl的原始數(shù)據(jù)有45TB,進行過濾后僅保留了570GB的數(shù)據(jù)。通過子詞方式對上述語料進行切分,大約一共包含5000億子詞。為了保證模型使用更多高質(zhì)量數(shù)據(jù)進行訓(xùn)練,在GPT-3訓(xùn)練時,根據(jù)語料來源的不同,設(shè)置不同的采樣權(quán)重。在完成3000億子詞訓(xùn)練時,英文Wikipedia的語料平均訓(xùn)練輪數(shù)為3.4次,而CommonCrawl和Books2僅有0.44次和0.43次。由于CommonCrawl數(shù)據(jù)集合的過濾過程繁瑣復(fù)雜,OPT則采用了混合RoBERTa、Pile和PushShift.ioRedit數(shù)據(jù)的方法。由于這些數(shù)據(jù)集合中包含的絕大部分都是英文數(shù)據(jù),因此OPT也從CommonCrawl數(shù)據(jù)集中抽取了部分非英文數(shù)據(jù)加入訓(xùn)練語料。6.5.1基礎(chǔ)大模型訓(xùn)練60由于模型參數(shù)量和所使用的數(shù)據(jù)量都非常巨大,普通的服務(wù)器單機無法完成訓(xùn)練過程,因此通常采用分布式架構(gòu)完成訓(xùn)練。GPT-3和OPT中沒有對這個部分給出詳細(xì)的描述。文獻(xiàn)[40]針對GPT-3的訓(xùn)練過程僅介紹了訓(xùn)練過程全部使用NVIDIAV100GPU文獻(xiàn)[307]介紹了OPT使用了992塊NVIDIAA10080GGPU,采用全分片數(shù)據(jù)并行(FullySharedDataParallel以及Megatron-LM張量并行(TensorParallelism,整體訓(xùn)練時間將近2個月。BLOOM則公開了更多在硬件和所采用的系統(tǒng)架構(gòu)方面的細(xì)節(jié)。該模型的訓(xùn)練一共花費3.5個月,使用48個計算節(jié)點。每個節(jié)點包含8塊NVIDIAA10080GGPU(總計384GPU),并且使用4NVLink用于節(jié)點內(nèi)部GPU之間通信。節(jié)點之間采用四個Omni-Path100Gbps網(wǎng)卡構(gòu)建的增強8維超立方體全局拓?fù)渚W(wǎng)絡(luò)通信。6.5.1基礎(chǔ)大模型訓(xùn)練61BLOOM使用Megatron-DeepSpeed框架進行訓(xùn)練,主要包含兩個部分:Megatron-LM提供張量并行能力和數(shù)據(jù)加載原語;DeepSpeed提供ZeRO優(yōu)化器、模型流水線以及常規(guī)的分布式訓(xùn)練組件。通過這種方式可以實現(xiàn)數(shù)據(jù)、張量和流水線三維并行。圖6.10BLOOM并行結(jié)構(gòu)6.5.2指令微調(diào)62以BERT為代表的預(yù)訓(xùn)練語言模型需要根據(jù)任務(wù)數(shù)據(jù)進行微調(diào)(Fine-tuning),這種范式可以應(yīng)用于參數(shù)量在幾百萬到幾億規(guī)模的預(yù)訓(xùn)練模型。但是針對數(shù)十億甚至是數(shù)百億規(guī)模的大模型,針對每個任務(wù)都進行微調(diào)的計算開銷和時間成本幾乎都是不可接受的。因此,研究人員們提出了指令微調(diào)(InstructionFinetuning)方案,將大量各類型任務(wù),統(tǒng)一為生成式自然語言理解框架,并構(gòu)造訓(xùn)練語料進行微調(diào)。例如,可以將情感傾向分析任務(wù),通過如下指令,將貶義和褒義的分類問題轉(zhuǎn)換到生成式自然語言理解框架:

Foreachsnippetoftext,labelthesentimentofthetextaspositiveornegative.

Text:thisfilmseemsthirstyforreflection,itselftakingonadolescentqualities.

Label:[positive/negative]6.5.2指令微調(diào)63利用有標(biāo)注數(shù)據(jù)集合,再結(jié)合上述指令模板,就可以生成大量用于微調(diào)的訓(xùn)練數(shù)據(jù)。利用這些訓(xùn)練數(shù)據(jù),就可以在一個大模型中同時訓(xùn)練大量不同的任務(wù)。當(dāng)前的研究工作標(biāo)明,這種訓(xùn)練方法可以使得模型具有很好的任務(wù)泛化能力,很多沒有出現(xiàn)在指令微調(diào)訓(xùn)練語料中的任務(wù)也可以很好的完成,在零樣本和少樣本的情況下獲得非常好的任務(wù)性能。FLAN-T5\upcite{

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論