预训练模型简介
預(yù)訓(xùn)練模型
預(yù)訓(xùn)練模型把遷移學(xué)習(xí)很好地用起來了,讓我們感到眼前一亮。這和小孩子讀書一樣,一開始語文、數(shù)學(xué)、化學(xué)都學(xué),讀書、網(wǎng)上游戲等,在腦子里積攢了很多。當(dāng)他學(xué)習(xí)計(jì)算機(jī)時(shí),實(shí)際上把他以前學(xué)到的所有知識都帶進(jìn)去了。如果他以前沒上過中學(xué),沒上過小學(xué),突然學(xué)計(jì)算機(jī)就不懂這里有什么道理。這和我們預(yù)訓(xùn)練模型一樣,預(yù)訓(xùn)練模型就意味著把人類的語言知識,先學(xué)了一個東西,然后再代入到某個具體任務(wù),就順手了,就是這么一個簡單的道理。
為什么要做預(yù)訓(xùn)練模型?----背景
自然語言處理(NLP),目的是使得計(jì)算機(jī)具備人類的聽、說、讀、寫、譯、問、答、搜索、摘要、對話和聊天等能力,并可利用知識和常識進(jìn)行推理和決策,并支持客服、診斷、法律、教學(xué)等場景。自然語言理解,被認(rèn)為是 AI 皇冠上的明珠。一旦有突破,則會大幅度推動 AI 在很多重要場景落地。
過去這五年,對自然語言是一個難忘的五年,它的一個標(biāo)志就是神經(jīng)網(wǎng)絡(luò)全面引入到了自然語言理解。從大規(guī)模的語言數(shù)據(jù)到強(qiáng)有力的算力,加上深度學(xué)習(xí),把整個自然語言帶到一個新的階段。
預(yù)訓(xùn)練模型,則是使自然語言處理由原來的手工調(diào)參、依靠 ML 專家的階段,進(jìn)入到可以大規(guī)模、可復(fù)制的大工業(yè)施展的階段。而且預(yù)訓(xùn)練模型從單語言、擴(kuò)展到多語言、多模態(tài)任務(wù)。一路銳氣正盛,所向披靡。
預(yù)訓(xùn)練通過自監(jiān)督學(xué)習(xí)從大規(guī)模數(shù)據(jù)中獲得與具體任務(wù)無關(guān)的預(yù)訓(xùn)練模型。體現(xiàn)某一個詞在一個特定上下文中的語義表征。第二個步驟是微調(diào),針對具體的任務(wù)修正網(wǎng)絡(luò)。訓(xùn)練數(shù)據(jù)可以是文本、文本-圖像對、文本-視頻對。預(yù)訓(xùn)練模型的訓(xùn)練方法可使用自監(jiān)督學(xué)習(xí)技術(shù)(如自回歸的語言模型和自編碼技術(shù))。可訓(xùn)練單語言、多語言和多模態(tài)的模型。此類模型可經(jīng)過微調(diào)之后,用于支持分類、序列標(biāo)記、結(jié)構(gòu)預(yù)測和序列生成等各項(xiàng)技術(shù),并構(gòu)建文摘、機(jī)器翻譯、圖片檢索、視頻注釋等應(yīng)用。
為什么我們要做預(yù)訓(xùn)練模型?首先,預(yù)訓(xùn)練模型是一種遷移學(xué)習(xí)的應(yīng)用,利用幾乎無限的文本,學(xué)習(xí)輸入句子的每一個成員的上下文相關(guān)的表示,它隱式地學(xué)習(xí)到了通用的語法語義知識。第二,它可以將從開放領(lǐng)域?qū)W到的知識遷移到下游任務(wù),以改善低資源任務(wù),對低資源語言處理也非常有利。第三,預(yù)訓(xùn)練模型在幾乎所有 NLP 任務(wù)中都取得了目前最佳的成果。最后,這個預(yù)訓(xùn)練模型+微調(diào)機(jī)制具備很好的可擴(kuò)展性,在支持一個新任務(wù)時(shí),只需要利用該任務(wù)的標(biāo)注數(shù)據(jù)進(jìn)行微調(diào)即可,一般工程師就可以實(shí)現(xiàn)。
預(yù)訓(xùn)練模型的三個關(guān)鍵技術(shù)
首先,第一個關(guān)鍵技術(shù)是 Transformer。它在 NLP 各個任務(wù)中都取得了優(yōu)異的性能,它是預(yù)訓(xùn)練語言模型的核心網(wǎng)絡(luò)。給定一句話或是一個段落作為輸入,首先將輸入序列中各個詞轉(zhuǎn)換為其對應(yīng)的詞向量,同時(shí)加上每一個詞的位置向量,體現(xiàn)詞在序列的位置。然后將這些詞向量輸入到多層 Transformer 網(wǎng)絡(luò)中,通過自注意力(self-attention)機(jī)制來學(xué)習(xí)詞與詞之間的關(guān)系,編碼其上下文信息,再通過一個前饋網(wǎng)絡(luò)經(jīng)過非線性變化,輸出綜合了上下文特征的各個詞的向量表示。每一層 Transformer 網(wǎng)絡(luò)主要由 Multi-head self-attention 層(多頭自注意力機(jī)制)和前饋網(wǎng)絡(luò)層兩個子層構(gòu)成。Multi-head self-attention 會并行地執(zhí)行多個不同參數(shù)的 self-attention,并將各個 self-attention 的結(jié)果拼接作為后續(xù)網(wǎng)絡(luò)的輸入,self-attention 機(jī)制會在后面中做詳細(xì)介紹。此后,我們得到了蘊(yùn)含當(dāng)前上下文信息的各個詞的表示,然后網(wǎng)絡(luò)會將其輸入到前饋網(wǎng)絡(luò)層以計(jì)算非線性層次的特征。
在每一層 Transformer 網(wǎng)絡(luò)中,會將殘差連接(residual connection)把自注意力機(jī)制前或者前饋神經(jīng)網(wǎng)絡(luò)之前的向量引入進(jìn)來,以增強(qiáng)自注意力機(jī)制或者前饋網(wǎng)絡(luò)的輸出結(jié)果向量。并且還做一個 layer normalization,也就是通過歸一化把同層的各個節(jié)點(diǎn)的多維向量映射到一個區(qū)間里面,這樣各層節(jié)點(diǎn)的向量在一個區(qū)間里面。這兩個操作加入在每個子層后,可更加平滑地訓(xùn)練深層次網(wǎng)絡(luò)。
Transformer 可以用于編碼,也可以用于解碼。所謂解碼就是根據(jù)一個句子的輸入得到一個預(yù)想的結(jié)果,比如機(jī)器翻譯(輸入源語言句子,輸出目標(biāo)語言句子),或者閱讀理解(輸入文檔和問題,輸出答案)。解碼時(shí),已經(jīng)解碼出來的詞要做一個自注意力機(jī)制,之后和編碼得到的隱狀態(tài)的序列再做一個注意力機(jī)制。這樣可以做 N 層,然后通過一個線性層映射到詞表的大小的一個向量。每個向量代表一個詞表詞的輸出可能性,經(jīng)過一個softmax 層得到每個詞的輸出概率。
接下來介紹一下 self-attention 機(jī)制,以一個 head 作為示例。假定當(dāng)前輸入包含三個詞,給定其輸入詞向量或是其上一層 Transformer 網(wǎng)絡(luò)的輸出,將其通過三組線性變換,轉(zhuǎn)換得到三組 queries、keys 和 values 向量。Query 和 key 向量用來計(jì)算兩兩詞之間的得分,也就是其依賴關(guān)系,這個得分會同其對應(yīng)的 value 向量做加權(quán)和,以得到每個詞綜合上下文信息的表示。給定當(dāng)前第一個詞的 query 向量,其首先同各個詞的 key 向量通過點(diǎn)積操作得到這兩個詞的得分,這些得分用來表示這兩個詞的依賴或是相關(guān)程度。這些得分之后會根據(jù) query 等向量的維度做一定比例的縮放,并將這些得分通過 softmax 操作做歸一化。之后,各個得分會同其相對應(yīng)的 value 向量相乘得到針對第一個詞加權(quán)的各個 value 向量,這些加權(quán)的 value 向量最終相加以得到當(dāng)前第一個詞的上下文表示。
在得到第一個詞的上下文表示后,給定第二個詞的 query 向量,我們會重復(fù)之前的操作,計(jì)算當(dāng)前 query 向量同各個詞 key 向量的得分,對這些得分做 softmax 歸一化處理,并將這些得分同其對應(yīng)的 value 向量做加權(quán)和,以得到其編碼上下文信息的表示。
第二個關(guān)鍵技術(shù)是自監(jiān)督學(xué)習(xí)。在預(yù)訓(xùn)練的模型中,AR(自回歸)LM 和 AE(自動編碼器)是最常用的自監(jiān)督學(xué)習(xí)方法,其中,自回歸 LM 旨在利用前面的詞序列預(yù)測下個詞的出現(xiàn)概率(語言模型)。自動編碼器旨在對損壞的輸入句子,比如遮掩了句子某個詞、或者打亂了詞序等,重建原始數(shù)據(jù)。通過這些自監(jiān)督學(xué)習(xí)手段來學(xué)習(xí)單詞的上下文相關(guān)表示。
第三個關(guān)鍵技術(shù)就是微調(diào)。在做具體任務(wù)時(shí),微調(diào)旨在利用其標(biāo)注樣本對預(yù)訓(xùn)練網(wǎng)絡(luò)的參數(shù)進(jìn)行調(diào)整。以我們使用基于 BERT(一種流行的預(yù)訓(xùn)練模型)為例來判斷兩個句子是否語義相同。輸入是兩個句子,經(jīng)過 BERT 得到每個句子的對應(yīng)編碼表示,我們可以簡單地用預(yù)訓(xùn)練模型的第一個隱節(jié)點(diǎn)預(yù)測分類標(biāo)記判斷兩個句子是同義句子的概率,同時(shí)需要額外加一個線性層和 softmax 計(jì)算得到分類標(biāo)簽的分布。預(yù)測損失可以反傳給 BERT 再對網(wǎng)絡(luò)進(jìn)行微調(diào)。當(dāng)然也可以針對具體任務(wù)設(shè)計(jì)一個新網(wǎng)絡(luò),把預(yù)訓(xùn)練的結(jié)果作為其輸入。
總體來講,預(yù)訓(xùn)練模型發(fā)展趨勢:第一,模型越來越大。比如 Transformer 的層數(shù)變化,從12層的 Base 模型到24層的 Large 模型。導(dǎo)致模型的參數(shù)越來越大,比如 GPT 110 M,到 GPT-2 是1.5 Billion,圖靈是 17 Billion,而 GPT-3 達(dá)到了驚人的 175 Billion。一般而言模型大了,其能力也會越來越強(qiáng),但是訓(xùn)練代價(jià)確實(shí)非常大。第二,預(yù)訓(xùn)練方法也在不斷增加,從自回歸 LM,到自動編碼的各種方法,以及各種多任務(wù)訓(xùn)練等。第三,還有從語言、多語言到多模態(tài)不斷演進(jìn)。最后就是模型壓縮,使之能在實(shí)際應(yīng)用中經(jīng)濟(jì)的使用,比如在手機(jī)端。這就涉及到知識蒸餾和 teacher-student models,把大模型作為 teacher,讓一個小模型作為 student 來學(xué)習(xí),接近大模型的能力,但是模型的參數(shù)減少很多。
預(yù)訓(xùn)練模型發(fā)展趨勢
-
第一,模型越來越大。比如 Transformer 的層數(shù)變化,從12層的 Base 模型到24層的 Large 模型。導(dǎo)致模型的參數(shù)越來越大,比如 GPT 110 M,到 GPT-2 是1.5 Billion,圖靈是 17 Billion,而 GPT-3 達(dá)到了驚人的 175 Billion。一般而言模型大了,其能力也會越來越強(qiáng),但是訓(xùn)練代價(jià)確實(shí)非常大。
-
第二,預(yù)訓(xùn)練方法也在不斷增加,從自回歸 LM,到自動編碼的各種方法,以及各種多任務(wù)訓(xùn)練等。
-
第三,還有從語言、多語言到多模態(tài)不斷演進(jìn)。最后就是模型壓縮,使之能在實(shí)際應(yīng)用中經(jīng)濟(jì)的使用,比如在手機(jī)端。這就涉及到知識蒸餾和 teacher-student models,把大模型作為 teacher,讓一個小模型作為 student 來學(xué)習(xí),接近大模型的能力,但是模型的參數(shù)減少很多。
總結(jié)
- 上一篇: onblur 事件
- 下一篇: 第9章第6节:完成目录页的制作并创建幻灯