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